ed eject elle elvis env expand factor file \
find finger fingerd fix fold format fortune fsck \
fsck1 ftp101 ftpd200 getty grep gomoku head host \
- hostaddr id ifconfig ifdef indent install \
+ hostaddr ifconfig ifdef indent install \
intr ipcrm ipcs irdpd isoread join kill last leave \
lex life loadkeys loadramdisk logger login look lp \
lpd ls lspci M m4 mail make MAKEDEV makewhatis man \
sleep slip sort spell split srccrc stat strings strip \
stty su sum svclog swapfs swifi sync synctree sysenv \
syslogd tail talk talkd tcpd tcpdp tcpstat tee telnet \
- telnetd term termcap tget time tinyhalt top touch tr \
+ telnetd term termcap tget time tinyhalt top tr \
truncate tsort ttt tty udpstat umount uname unexpand \
uniq unstack update urlget uud uue version vol wc \
whatis whereis which who whoami write writeisofs \
+++ /dev/null
-PROG= id
-MAN=
-
-.include <minix.prog.mk>
+++ /dev/null
-/* id - return uid and gid Author: John J. Marco */
-
-/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-/* ----- id.c ----- */
-/* Id - get real and effective user id and group id */
-/* Author: John J. Marco */
-/* pa1343@sdcc15.ucsd.edu */
-/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
-
-#include <sys/types.h>
-#include <pwd.h>
-#include <grp.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <limits.h>
-
-int main(int argc, char *argv[])
-{
- struct passwd *pwd;
- struct group *grp;
- uid_t ruid, euid, uid;
- gid_t rgid, egid, gid;
-#if __minix_vmd
- uid_t suid;
- gid_t sgid;
-#else
-# define suid ruid
-# define sgid rgid
-#endif
-#if NGROUPS_MAX > 0
- gid_t groups[NGROUPS_MAX];
- int ngroups;
-#else
-# define groups (&rgid)
-# define ngroups 0
-#endif
- int g;
- int isug;
- int c, uopt = 0, gopt = 0, nopt = 0, ropt = 0;
-
-#if __minix_vmd
- get6id(&ruid, &euid, &suid, &rgid, &egid, &sgid);
- isug = issetugid();
-#else
- ruid = getuid();
- euid = geteuid();
- rgid = getgid();
- egid = getegid();
- isug = 0;
-#endif
-#if NGROUPS_MAX > 0
- ngroups = getgroups(NGROUPS_MAX, groups);
-#endif
-
- while((c = getopt(argc, argv, "ugnr")) != EOF) {
- switch(c) {
- case 'u':
- uopt = 1;
- break;
- case 'g':
- gopt = 1;
- break;
- case 'n':
- nopt = 1;
- break;
- case 'r':
- ropt = 1;
- break;
- default:
- fprintf(stderr, "%s: unrecognized option\n", argv[0]);
- return(1);
- }
- }
-
- if(uopt && gopt) {
- fprintf(stderr, "%s: cannot combine -u and -g\n", argv[0]);
- return 1;
- }
-
- if((nopt || ropt) && !uopt && !gopt) {
- fprintf(stderr, "%s: cannot use -n or -r without -u or -g\n", argv[0]);
- return 1;
- }
-
- if(uopt) {
- uid = ropt ? ruid : euid;
- if (!nopt || (pwd = getpwuid(uid)) == NULL)
- printf("%u\n", uid);
- else
- printf("%s\n", pwd->pw_name);
- return 0;
- }
- if(gopt) {
- gid = ropt ? rgid : egid;
- if (!nopt || (grp = getgrgid(gid)) == NULL)
- printf("%u\n", gid);
- else
- printf("%s\n", grp->gr_name);
- return 0;
- }
-
- if ((pwd = getpwuid(ruid)) == NULL)
- printf("uid=%d", ruid);
- else
- printf("uid=%d(%s)", ruid, pwd->pw_name);
-
- if ((grp = getgrgid(rgid)) == NULL)
- printf(" gid=%d", rgid);
- else
- printf(" gid=%d(%s)", rgid, grp->gr_name);
-
- if (euid != ruid)
- if ((pwd = getpwuid(euid)) != NULL)
- printf(" euid=%d(%s)", euid, pwd->pw_name);
- else
- printf(" euid=%d", euid);
-
- if (egid != rgid)
- if ((grp = getgrgid(egid)) != NULL)
- printf(" egid=%d(%s)", egid, grp->gr_name);
- else
- printf(" egid=%d", egid);
-
- if (suid != euid)
- if ((pwd = getpwuid(suid)) != NULL)
- printf(" suid=%d(%s)", suid, pwd->pw_name);
- else
- printf(" suid=%d", suid);
-
- if (sgid != egid)
- if ((grp = getgrgid(sgid)) != NULL)
- printf(" sgid=%d(%s)", sgid, grp->gr_name);
- else
- printf(" sgid=%d", sgid);
-
- if (isug) {
- printf(" issetugid");
- }
-
- if (ngroups > 0) {
- printf(" groups=");
- for (g = 0; g < ngroups; g++) {
- if (g > 0) fputc(',', stdout);
- if ((grp = getgrgid(groups[g])) == NULL)
- printf("%d", groups[g]);
- else
- printf("%d(%s)", groups[g], grp->gr_name);
- }
- }
-
- printf("\n");
- return(0);
-}
+++ /dev/null
-PROG= touch
-MAN=
-
-.include <minix.prog.mk>
+++ /dev/null
-/* Touch - change file access and modification times.
- *
- * Usage: see end of file
- *
- * Conforms to P1003.2 draft 10, sec. 4.62, except that time values
- * are not checked for validity, but passed on to mktime, so that
- * 9301990000 will refer to Apr. 9th 1993. As a side effect, leap
- * seconds are not handled correctly.
- *
- * Authors: Original author unknown. Rewritten for POSIX by
- * Peter Holzer (hp@vmars.tuwien.ac.at).
- *
- * $Log$
- * Revision 1.1 2005/04/21 14:55:35 beng
- * Initial revision
- *
- * Revision 1.1.1.1 2005/04/20 13:33:47 beng
- * Initial import of minix 2.0.4
- *
- * Revision 1.8 1994/03/17 21:39:19 hjp
- * fixed bug with 4-digit years
- *
- * Revision 1.7 1994/03/15 00:43:27 hjp
- * Changes from kjb (vmd 1.6.25.1):
- * fixed exit code
- * nonstandard flag 0 to make file very old
- *
- * Revision 1.6 1994/02/12 17:26:33 hjp
- * fixed -a and -m flags
- *
- * Revision 1.5 1994/02/12 16:04:13 hjp
- * fixed bug when -t argument was not given
- * removed debugging code
- * run through pretty to get Minix layout
- *
- * Revision 1.4 1994/02/07 21:23:11 hjp
- * POSIXified.
- *
- */
-
-#define _POSIX_C_SOURCE 2 /* getopt */
-#include <assert.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <utime.h>
-
-#define val2(string) ((string)[0] * 10 + (string)[1] - '0' * 11)
-#define val4(string) (val2(string) * 100 + val2(string + 2))
-
-typedef enum {
- OLD, NEW
-} formatT;
-
-char *cmnd;
-int no_creat = 0;
-unsigned int to_change = 0;
-# define ATIME 1
-# define MTIME 2
-
-_PROTOTYPE(int main, (int argc, char **argv));
-_PROTOTYPE(int doit, (char *name, struct utimbuf tvp));
-_PROTOTYPE(void usage, (void));
-_PROTOTYPE(time_t parsetime, (const char *string, formatT format));
-
-time_t parsetime(string, format)
-const char *string;
-formatT format;
-{
- struct tm tm;
- time_t touchtime;
- size_t l;
-
- l = strspn(string, "0123456789");
- if (l % 2 == 1) return -1;
- if (string[l] != '\0' && (string[l] != '.' || format == OLD)) {
- return -1;
- }
- if (format == OLD) {
- if (l == 10) {
- /* Last two digits are year */
- tm.tm_year = val2(string + 8);
- if (tm.tm_year <= 68) tm.tm_year += 100;
- } else if (l == 8) {
- time(&touchtime);
- tm = *localtime(&touchtime);
- } else {
- return -1;
- }
- } else {
- if (l == 12) {
- /* First four digits are year */
- tm.tm_year = val4(string) - 1900;
- string += 4;
- } else if (l == 10) {
- /* First two digits are year */
- tm.tm_year = val2(string);
- if (tm.tm_year <= 68) tm.tm_year += 100;
- string += 2;
- } else if (l == 8) {
- time(&touchtime);
- tm = *localtime(&touchtime);
- } else {
- return -1;
- }
- }
- tm.tm_mon = val2(string) - 1;
- string += 2;
- tm.tm_mday = val2(string);
- string += 2;
- tm.tm_hour = val2(string);
- string += 2;
- tm.tm_min = val2(string);
- string += 2;
- if (format == NEW && string[0] == '.') {
- if (isdigit(string[1]) && isdigit(string[2]) &&
- string[3] == '\0') {
- tm.tm_sec = val2(string + 1);
- } else {
- return -1;
- }
- } else {
- tm.tm_sec = 0;
- }
- tm.tm_isdst = -1;
- touchtime = mktime(&tm);
- return touchtime;
-}
-
-
-int main(argc, argv)
-int argc;
-char **argv;
-{
- time_t auxtime;
- struct stat sb;
- int c;
- struct utimbuf touchtimes;
- int fail = 0;
-
- cmnd = argv[0];
- auxtime = time((time_t *) NULL);
- touchtimes.modtime = auxtime;
- touchtimes.actime = auxtime;
-
- while ((c = getopt(argc, argv, "r:t:acm0")) != EOF) {
- switch (c) {
- case 'r':
- if (stat(optarg, &sb) == -1) {
- fprintf(stderr, "%s: cannot stat %s: %s\n",
- cmnd, optarg, strerror(errno));
- exit(1);
- }
- touchtimes.modtime = sb.st_mtime;
- touchtimes.actime = sb.st_atime;
- break;
- case 't':
- auxtime = parsetime(optarg, NEW);
- if (auxtime == (time_t) - 1) usage();
- touchtimes.modtime = auxtime;
- touchtimes.actime = auxtime;
- break;
- case 'a': to_change |= ATIME; break;
- case 'm': to_change |= MTIME; break;
- case 'c': no_creat = 1; break;
- case '0':
- touchtimes.modtime = touchtimes.actime = 0;
- break;
- case '?': usage(); break;
- default: assert(0);
- }
- }
- if (to_change == 0) {
- to_change = ATIME | MTIME;
- }
- if (optind == argc) usage();
-
- /* Now check for old style time argument */
- if (strcmp(argv[optind - 1], "--") != 0 &&
- (auxtime = parsetime(argv[optind], OLD)) != (time_t) - 1) {
- touchtimes.modtime = auxtime;
- touchtimes.actime = auxtime;
- optind++;
- if (optind == argc) usage();
- }
- while (optind < argc) {
- if (doit(argv[optind], touchtimes) > 0) {
- fprintf(stderr, "%s: cannot touch %s: %s\n",
- cmnd, argv[optind], strerror(errno));
- fail = 1;
- }
- optind++;
- }
- return fail ? 1 : 0;
-}
-
-
-int doit(name, tvp)
-char *name;
-struct utimbuf tvp;
-{
- int fd;
- struct stat sb;
-
- if (to_change != (ATIME | MTIME)) {
-
- if (stat(name, &sb) != -1) {
- if (!(to_change & ATIME)) {
- tvp.actime = sb.st_atime;
- } else {
- tvp.modtime = sb.st_mtime;
- }
- }
- }
- if (utime(name, &tvp) == 0) return 0;
- if (errno != ENOENT) return 1;
- if (no_creat == 1) return 0;
- if ((fd = creat(name, 0666)) >= 0) {
- if (fstat(fd, &sb) != -1) {
- if (!(to_change & ATIME)) {
- tvp.actime = sb.st_atime;
- } else {
- tvp.modtime = sb.st_mtime;
- }
- } else {
- assert(0);
- }
- close(fd);
- if (utime(name, &tvp) == 0) return 0;
- }
- return 1;
-}
-
-
-void usage()
-{
- fprintf(stderr, "Usage: %s [-c] [-a] [-m] [-r file] [-t [CC[YY]]MMDDhhmm[.ss]] "
- "[MMDDhhmm[YY]] file...\n", cmnd);
- exit(1);
-}
+++ /dev/null
-.TH ID 1
-.SH NAME
-id \- print the uid and gid
-.SH SYNOPSIS
-\fBid\fR
-.RB [ \-ugnr ]
-.br
-.de FL
-.TP
-\\fB\\$1\\fR
-\\$2
-..
-.de EX
-.TP 20
-\\fB\\$1\\fR
-# \\$2
-..
-.SH EXAMPLES
-.EX "id" "Print the uid and gid"
-.SH DESCRIPTION
-.PP
-\fIId\fR prints the current uid and gid, both numerically and symbolically.
-If the effective uid and gid are different from the real ones, all of them
-are printed.
-.PP
-If the \fB\-u\fP or \fB\-g\fP option is specified, then \fBid\fP will print
-the effective uid or guid number, respectively, on a single line. Combined
-with either of those options, the \fB\-n\fP option prints the name instead of
-the number, and the \fB\-r\fP option prints the real instead of the effective
-uid or gid.
-.SH "SEE ALSO"
-.BR getuid (2),
-.BR getgid (2),
-.BR getgroups (2).
+++ /dev/null
-.TH TOUCH 1
-.SH NAME
-touch \- change file access and modification times
-.SH SYNOPSIS
-\fBtouch\fR [\fB\-c\fR] [\fB\-a\fR] [\fB\-m\fR] [\fB\-r\fR file] [\fB\-t\fR [CC[YY]]MMDDhhmm[.ss]] [MMDDhhmm[YY]] \fIfile\fR ...\fR
-.br
-.de FL
-.TP
-\\fB\\$1\\fR
-\\$2
-..
-.de EX
-.TP 20
-\\fB\\$1\\fR
-# \\$2
-..
-.SH OPTIONS
-.FL "\-c" "Do not create the file if it doesn't already exist"
-.FL "\-a" "Change access time"
-.FL "\-m" "Change modification time"
-.FL "\-r file" "Apply time of specified file"
-.FL "\-t [CC[YY]]MMDDhhmm[.ss]]" "Apply time specified"
-.FL "\-t [MMDDhhmm[YY]]" "Apply time specified (alternate form)"
-.SH EXAMPLES
-.EX "touch *.h" "Make the \fI.h\fP files look recent"
-.EX "touch -t 199610010000 *" "Change date and time of all files in current directory to midnight Oct 1, 1996"
-.SH DESCRIPTION
-.PP
-With no options specified, the times of last modification and last access
-are set to the current time.
-This command is mostly used to trick
-.I make
-into thinking that a file is more recent than it really is.
-If the file being touched does not exist, it is created, unless the \fB\-c\fR
-flag is present.
-.PP
-The \fB\-a\fR or \fB\-m\fR flag may be used to change only the access or
-modification time. The \fB\-r\fR or \fB\-t\fR flag may be used to change
-the times to match the times of another file or to a specified time.
-.SH "SEE ALSO"
-.BR utime (2).
-.SH "AUTHOR"
-.PP
-Original author unknown. Rewritten for POSIX by Peter Holzer
-(hp@vmars.tuwien.ac.at).
-.\" man page updated by A. S. Woodhull 2005-01-15
-
-
-