[net.sources] uid -- get user's uid/gid

warren@ll-xn.ARPA (Warren Lavallee) (11/29/85)

	Here is a little program I wrote that will get the
login name/uid of people.  You can specify "uid names...",
"uid uids..." or mix and match login name and uids. 

			Warren Lavallee
			ARPA: 	warren@ll-xn.arpa
				...!seismo  
			UUCP:	...!harvard!ll-xn!warren

-=-=-=-=-=-=-=-=--=-=-=-= cut here =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#! /bin/sh
# This is a shar archive.  Unbundle with sh, not csh
# This includes:
# Makefile
# all.c
# main.c
# me.c
# more.h
# one.c
# uid.c
# uid.local

echo x - Makefile
sed 's/^X//' >Makefile <<'*-*-END-of-Makefile-*-*'
XOBJS= all.o main.o one.o uid.o me.o
XSRC= all.c main.c one.c uid.c me.c
XFLAGS= -O 
X
X.c.o:
X	${CC} -c ${FLAGS} $*.c
X
Xall: uid
X
Xuid: ${OBJS}
X	${CC} -o uid ${OBJS}
X
Xinstall:
X	cp uid /u0/warren/bin
X	cp uid /usr/local/bin
X	cp uid.local /usr/man/manl/uid.l
X
Xlint:
X	lint $(SRC)
X
Xprint:	
X	imprint ${SRC}
X
X# DO NOT REMOVE THIS LINE
X
Xall.c: more.h
*-*-END-of-Makefile-*-*
echo x - all.c
sed 's/^X//' >all.c <<'*-*-END-of-all.c-*-*'
X#ifndef lint
Xstatic char *what = "@(#)all.c 11/29/85 Warren Lavallee";
X#endif
X
X/*  all.c-- prints out all the entrys in the /etc/passwd file */
X
X#include <pwd.h>
X#include <stdio.h>
X#include "more.h"		/* defines MORE */
X
Xstruct passwd  *pw;
Xstruct passwd  *getpwent ();
X
XFILE * more, *popen ();
X
Xall () {			/* prints all entrys if file */
X    if (!(more = popen (MORE, "w"))) {/* open pipe */
X	(void) fprintf (stderr, "cannot activate %s\n", MORE);
X	exit (2);
X    }
X
X    (void) setpwent ();
X    while (pw = getpwent ())
X	if (strlen (pw -> pw_passwd) >= 5){	/* see if active */
X	    (void) fprintf (more, "%s      \tuid: %3d\tgid: %3d\n",
X		    pw -> pw_name,
X		    pw -> pw_uid, pw -> pw_gid);
X	}
X    (void) endpwent ();
X    (void) pclose (more);
X}
*-*-END-of-all.c-*-*
echo x - main.c
sed 's/^X//' >main.c <<'*-*-END-of-main.c-*-*'
X#ifndef lint
Xstatic char *what = "@(#)main.c 11/29/85 Warren Lavallee";
X#endif
X
X#include <stdio.h>
X#include <strings.h>
X
X#define TRUE 1
X#define FALSE 0
X
X
Xmain (argc, argv)
Xint     argc;
Xchar   *argv[];
X{
X    register int i;
X
X    if (!strcmp (argv[1], "-a")) {/* see if -a set  */
X	(void) all ();
X	exit (0);
X    }
X
X    if (argc == 1) {		/* if not arguments print yours */
X	(void) me ();
X	exit (0);
X    }
X
X    for (i = 1; i < (argc); i++)/* loop through arguments */
X	if (!one (argv[i])) {	/* if login name, print   */
X	    if (strcmp (argv[i], "0") && !atoi (argv[i])) {
X		(void) fprintf (stderr, "%s not valid entry\n", argv[i]);
X		(void) fflush (stderr);
X	    }
X	    else
X		if (!uid (atoi (argv[i]))) {/* if uid print */
X		    (void) fprintf (stderr, "%s not valid entry\n", argv[i]);
X		    (void) fflush (stderr);
X		}
X	}
X}
*-*-END-of-main.c-*-*
echo x - me.c
sed 's/^X//' >me.c <<'*-*-END-of-me.c-*-*'
X#ifndef lint
Xstatic char *what = "@(#)me.c 11/29/85 Warren Lavallee";
X#endif
X
X#include <stdio.h>
X#include <pwd.h>
X
Xstruct passwd  *pw;
Xstruct passwd  *getpwnam ();
X
Xint     myuid;
X
Xme () {
X    myuid = getuid ();
X
X    (void) setpwent ();
X    if (pw = getpwuid (myuid)) {
X	(void) printf ("%s      \tuid: %3d\tgid: %3d\n",
X		pw -> pw_name,
X		pw -> pw_uid, pw -> pw_gid);
X	return (1);
X    }
X    else {
X	(void) fprintf (stderr, "Sorry old chap, but you don't exist\!\n");
X	exit (2);
X    }
X    (void) endpwent ();
X    return (0);
X}
*-*-END-of-me.c-*-*
echo x - more.h
sed 's/^X//' >more.h <<'*-*-END-of-more.h-*-*'
X/* more */
X#define MORE "/usr/local/bin/less -sm"
*-*-END-of-more.h-*-*
echo x - one.c
sed 's/^X//' >one.c <<'*-*-END-of-one.c-*-*'
X#ifndef lint
Xstatic char *what = "@(#)one.c 11/29/85 Warren Lavallee";
X#endif
X
X#include <pwd.h>
X#include <stdio.h>
X
Xstruct passwd  *pw;
Xstruct passwd  *getpwnam ();
X
Xone (name)
Xchar   *name;
X{
X    (void) setpwent ();
X    if (pw = getpwnam (name)) {
X	(void) printf ("%s      \tuid: %3d\tgid: %3d\n",
X		pw -> pw_name,
X		pw -> pw_uid, pw -> pw_gid);
X	return (1);
X    }
X    (void) endpwent ();
X    return (0);
X}
*-*-END-of-one.c-*-*
echo x - uid.c
sed 's/^X//' >uid.c <<'*-*-END-of-uid.c-*-*'
X#ifndef lint
Xstatic char *what = "@(#)uid.c 11/29/85 Warren Lavallee";
X#endif
X
X#include <pwd.h>
X#include <stdio.h>
X
Xstruct passwd  *pw;
Xstruct passwd  *getpwuid ();
X
Xuid (uid)	/* find a uid in /etc/passwd and prints it */
Xint     uid;
X{
X    (void) setpwent ();
X    if (pw = getpwuid (uid)) {
X	(void) printf ("%s      \tuid: %3d\tgid: %3d\n",
X		pw -> pw_name,
X		pw -> pw_uid, pw -> pw_gid);
X	return (1);
X    }
X    (void) endpwent ();
X    return (0);
X}
*-*-END-of-uid.c-*-*
echo x - uid.local
sed 's/^X//' >uid.local <<'*-*-END-of-uid.local-*-*'
X.TH UID LOCAL "26 October 1985"
X.SH NAME
Xuid \- print User id, Group id
X
X.SH SYNOPSIS
X/usr/local/bin/uid \[-a\] \[login name(s) or uid list\]
X
X.SH DESCRIPTION
X.IR Uid 
Xreturns the uid, and gid of the name(s) specified or
Xif no specification your uid. If the
X.I "\-a"
Xflag is specified, all active entry if files are shown.
X
XYou can mix login names and uids for arguments.
X
X.SH AUTHOR
XWarren Lavallee
*-*-END-of-uid.local-*-*
exit