chgrp.c 624 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <u.h>
  2. #include <libc.h>
  3. int readgid(char*);
  4. int uflag;
  5. void
  6. main(int argc, char *argv[])
  7. {
  8. int i;
  9. Dir dir;
  10. char *group;
  11. char *errs;
  12. ARGBEGIN {
  13. default:
  14. usage:
  15. fprint(2, "usage: chgrp [ -uo ] group file ....\n");
  16. exits("usage");
  17. return;
  18. case 'u':
  19. case 'o':
  20. uflag++;
  21. break;
  22. } ARGEND
  23. if(argc < 1)
  24. goto usage;
  25. group = argv[0];
  26. errs = 0;
  27. for(i=1; i<argc; i++){
  28. nulldir(&dir);
  29. if(uflag)
  30. dir.uid = group;
  31. else
  32. dir.gid = group;
  33. if(dirwstat(argv[i], &dir) == -1) {
  34. fprint(2, "chgrp: can't wstat %s: %r\n", argv[i]);
  35. errs = "can't wstat";
  36. continue;
  37. }
  38. }
  39. exits(errs);
  40. }