13e12c5d1SDavid du Colombier #include <u.h> 23e12c5d1SDavid du Colombier #include <libc.h> 33e12c5d1SDavid du Colombier 43e12c5d1SDavid du Colombier int readgid(char*); 57dd7cddfSDavid du Colombier int uflag; 63e12c5d1SDavid du Colombier 73e12c5d1SDavid du Colombier void main(int argc,char * argv[])83e12c5d1SDavid du Colombiermain(int argc, char *argv[]) 93e12c5d1SDavid du Colombier { 103e12c5d1SDavid du Colombier int i; 113e12c5d1SDavid du Colombier Dir dir; 123e12c5d1SDavid du Colombier char *group; 133e12c5d1SDavid du Colombier char *errs; 143e12c5d1SDavid du Colombier 157dd7cddfSDavid du Colombier ARGBEGIN { 167dd7cddfSDavid du Colombier default: 177dd7cddfSDavid du Colombier usage: 187dd7cddfSDavid du Colombier fprint(2, "usage: chgrp [ -uo ] group file ....\n"); 193e12c5d1SDavid du Colombier exits("usage"); 207dd7cddfSDavid du Colombier return; 217dd7cddfSDavid du Colombier case 'u': 227dd7cddfSDavid du Colombier case 'o': 237dd7cddfSDavid du Colombier uflag++; 247dd7cddfSDavid du Colombier break; 257dd7cddfSDavid du Colombier } ARGEND 267dd7cddfSDavid du Colombier if(argc < 1) 277dd7cddfSDavid du Colombier goto usage; 287dd7cddfSDavid du Colombier 297dd7cddfSDavid du Colombier group = argv[0]; 303e12c5d1SDavid du Colombier errs = 0; 317dd7cddfSDavid du Colombier for(i=1; i<argc; i++){ 32*9a747e4fSDavid du Colombier nulldir(&dir); 337dd7cddfSDavid du Colombier if(uflag) 34*9a747e4fSDavid du Colombier dir.uid = group; 357dd7cddfSDavid du Colombier else 36*9a747e4fSDavid du Colombier dir.gid = group; 373e12c5d1SDavid du Colombier if(dirwstat(argv[i], &dir) == -1) { 387dd7cddfSDavid du Colombier fprint(2, "chgrp: can't wstat %s: %r\n", argv[i]); 393e12c5d1SDavid du Colombier errs = "can't wstat"; 403e12c5d1SDavid du Colombier continue; 413e12c5d1SDavid du Colombier } 423e12c5d1SDavid du Colombier } 433e12c5d1SDavid du Colombier exits(errs); 443e12c5d1SDavid du Colombier } 45