chiark / gitweb /
@@ -4,6 +4,7 @@
authorianmdlvl <ianmdlvl>
Sun, 16 May 2004 14:46:41 +0000 (14:46 +0000)
committerianmdlvl <ianmdlvl>
Sun, 16 May 2004 14:46:41 +0000 (14:46 +0000)
+  * really has -R (chroot) option, and usage message improved.

cprogs/really.c
debian/changelog

index f4cfa08692a99821f9309680d719da7d48456c47..4d1f316364ea84fe4c84b201dbb85ce619d88b98 100644 (file)
 #include "myopt.h"
 
 void usagemessage(void) {
-  if (fputs("usage: really [<user-option>] [<group-option> ...] [--]"
+  if (fputs("usage: really [<really-option> ...] [--]"
             " [<command> [<argument/option> ...]]\n"
-            "user-options:\n"
+            "really-options specifying the user:\n"
             " if no options given, set the uid to 0;\n"
             " -u|--user <username>     also sets their default group list\n"
             " -i|--useronly <username> } set the uid\n"
             " -I|--uidonly <uid>       }  but inherits the group list\n"
-            "group-options:\n"
+            "really-options specifying the group:\n"
             " -z|--groupsclear         only groups specified are to be used\n"
             " -g|--group <groupname>   } add this to\n"
-            " -G|--gid <gid>           }  the group list\n",
+            " -G|--gid <gid>           }  the group list\n"
+            "other really-options:\n"
+           " -h|--help                display this message"
+           " -R|--chroot <dir>        chroot (but *not* chdir)",
             stderr) == EOF) { perror("write usage"); exit(-1); }
 }
 
-static const char *opt_user, *opt_useronly;
+static const char *opt_user, *opt_useronly, *opt_chroot;
 static int opt_groupsclear= 0, opt_ngids= 0, opt_uidonly= -1;
 static int opt_gids[512];
 
@@ -89,6 +92,7 @@ static const struct cmdinfo cmdinfos[]= {
   { "groupsclear",  'z',  0,  &opt_groupsclear, 0,   0,        1  },
   { "group",        'g',  1,  0, 0,                  af_group     },
   { "gid",          'G',  1,  0, 0,                  af_gid       },
+  { "chroot",       'R',  1,  0, &opt_chroot,        0            },
   { "help",         'h',  0,  0, 0,                  af_help      },
   {  0,              0                                            }
 };
@@ -146,6 +150,9 @@ int main(int argc, const char *const *argv) {
     if (!pw) { fprintf(stderr,"unknown user `%s'\n",cp); exit(-1); }
     opt_uidonly= pw->pw_uid;
   }
+  if (opt_chroot) {
+    if (chroot(opt_chroot)) { perror("chroot failed"); exit(-1); }
+  }
   orgmaingid= getgid();
   orgmainuid= getuid();
   if (orgmaingid<0) { perror("getgid failed"); exit(-1); }
index a0ad4e9c212fe409c0e0eae5e81b91bf9f083b67..5a84e2de2b17059daf623e677af9317327429257 100644 (file)
@@ -4,6 +4,7 @@ chiark-utils (4.0.99.0.6) unstable; urgency=low
   * ngspice2genspic script
   * gnucap2gnuplot split with new genspic int
   * gnucap2gnuplot script.
+  * really has -R (chroot) option, and usage message improved.
 
  --