#include #include #include "buffer.h" #include "readwrite.h" #include "exit.h" #include "scan.h" #include "fmt.h" void outs(s) /* was named puts, but Solaris pwd.h includes stdio.h. dorks. */ char *s; { if (buffer_puts(buffer_1,s) == -1) _exit(111); } int numeric(s) char *s; { for (; *s; s++) { switch(*s) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': break; default: return 0; } } return 1; } int main(argc,argv) int argc; char **argv; { char *name; char *value; struct passwd *pw; char strnum[FMT_ULONG]; char *user; name = argv[1]; if (!name) _exit(100); value = argv[2]; if (!value) _exit(100); if(numeric(value)) { user = value; } else { pw = getpwnam(value); if (!pw) { buffer_puts(buffer_2,"fatal: unable to find user "); buffer_puts(buffer_2,value); buffer_puts(buffer_2,"\n"); buffer_flush(buffer_2); _exit(111); } strnum[fmt_ulong(strnum,(unsigned long) pw->pw_uid)] = 0; user = strnum; } outs("int "); outs(name); outs(" = "); outs(user); outs(";\n"); if (buffer_flush(buffer_1) == -1) _exit(111); _exit(0); }