]> granicus.if.org Git - procps-ng/commitdiff
Feb 1993 patch for GNU finger on Linux 0.99.4 :-)
authoralbert <>
Thu, 10 Oct 2002 19:22:45 +0000 (19:22 +0000)
committeralbert <>
Thu, 10 Oct 2002 19:22:45 +0000 (19:22 +0000)
gfinger.p [deleted file]

diff --git a/gfinger.p b/gfinger.p
deleted file mode 100644 (file)
index 9ff9b31..0000000
--- a/gfinger.p
+++ /dev/null
@@ -1,216 +0,0 @@
-Return-Path: <qpliu@ulch.Princeton.EDU>
-Date: Wed, 24 Feb 93 23:37:45 -0500
-From: qpliu@ulch.Princeton.EDU (Quowong P Liu)
-To: johnsonm@stolaf.edu
-Subject: Suggestions for procps
-Reply-To: qpliu@princeton.edu
-
-[...]
-
-Since you are collecting programs that use the proc-fs, I have included
-some patches to GNU finger that allow it to read the proc information
-that it uses.
-
-[...]
-
-Here the diffs for GNU finger begin.
--------------BEGIN---------------
-diff -ru finger-1.37.orig/lib/os.c finger-1.37/lib/os.c
---- finger-1.37.orig/lib/os.c  Thu Oct 22 17:01:10 1992
-+++ finger-1.37/lib/os.c       Mon Feb  8 00:56:32 1993
-@@ -23,7 +23,9 @@
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <sys/file.h>
-+#ifndef linux
- #include <sys/acct.h>
-+#endif
- #include <time.h>
- #include <packet.h>
-@@ -43,9 +45,11 @@
- #ifdef HAVE_PROC_FS
- #include <sys/signal.h>
-+#ifndef linux
- #include <sys/fault.h>
- #include <sys/syscall.h>
- #include <sys/procfs.h>
-+#endif /*linux*/
- #endif
- #include <general.h>
-@@ -193,6 +197,7 @@
-   long idle, current_time, get_last_access ();
-   char *hostname, *ttyloc, *tty_location ();
- #ifdef HAVE_PROC_FS
-+#ifndef linux
-   prpsinfo_t procinfo;
-   struct procent
-     {
-@@ -202,6 +207,16 @@
-       char fname[sizeof (procinfo.pr_fname)];
-     }
-   *proctable, *tableptr;
-+#else
-+  struct procent
-+    {
-+      time_t start;
-+      int uid;
-+      dev_t tty;
-+      char fname[15];
-+    }
-+  *proctable, *tableptr;
-+#endif /* linux */
-   int nprocs = 0;
- #endif /* HAVE_PROC_FS */
-       
-@@ -235,6 +250,7 @@
-      searching through user list. */
- #ifdef HAVE_PROC_FS
-+#ifndef linux
-   {
-     extern char *savedir ();
-     char *dirstring = savedir ("/proc", 2*1024, &nprocs);
-@@ -280,6 +296,64 @@
-       free (dirstring);
-       }
-   }
-+#else /* linux */
-+  {
-+
-+    extern char *savedir ();
-+    char *dirstring = savedir ("/proc", 2*1024, &nprocs);
-+    char *proc;
-+    int procfd;
-+    char procfile[17], procstatbuffer[1024];
-+    struct stat proc_fs_stat;
-+    char procstate;
-+    int tmp_tty; /* dev_t is unsigned, -1 means no controlling tty */
-+    
-+    /* Allocate process table */
-+    if (nprocs)
-+      proctable = (struct procent *) xmalloc (sizeof *proctable * nprocs);
-+
-+    /* Walk processes */
-+    if (dirstring && nprocs)
-+      {
-+      for (tableptr = proctable, proc = dirstring;
-+           *proc; proc += strlen (proc) + 1)
-+        {
-+          sprintf (procfile, "/proc/%.5s/stat", proc);
-+
-+          if ((procfd = open (procfile, O_RDONLY)) >= 0
-+              && read (procfd, procstatbuffer, 1024))
-+            {
-+              /* see /usr/src/linux/fs/proc/array.c
-+               * this is for 0.99.4
-+               */
-+              sscanf (procstatbuffer, "%*d (%14s %c %*d %*d %*d %d "
-+                      "%*d %*u %*u %*u %*u %*u %*d %*d %*d %*d %*d %*d %*u "
-+                      "%*u %hd" /* " %*u %*u %*u %*u %*u %*u %*u %*u %*d %*d "
-+                      "%*d %*d %*u" */,
-+                      tableptr->fname, &procstate, &tmp_tty,
-+                      &tableptr->start);
-+              tableptr->fname[strlen(tableptr->fname)-1] = 0; /*trailing )*/
-+              tableptr->tty = tmp_tty;
-+              if (fstat (procfd, &proc_fs_stat) == 0)
-+                      tableptr->uid = proc_fs_stat.st_uid;
-+
-+              /* Only collect non-zombies with controlling tty */
-+              if (tmp_tty > 0 && procstate != 'Z')
-+                {
-+                  tableptr++;
-+                }
-+              else
-+                nprocs--;
-+              
-+              close (procfd);
-+            }
-+          else
-+            nprocs--;
-+        }
-+      free (dirstring);
-+      }
-+  }
-+#endif /* linux */
- #endif /* HAVE_PROC_FS */
-@@ -332,10 +406,14 @@
-           if (stat (device_name, &finfo) != -1)
-             {
-+#ifdef linux
-+              dev_t tty = finfo.st_rdev&0xff;
-+#else
- #ifdef HAVE_ST_RDEV
-               dev_t tty = finfo.st_rdev;
- #else
-               dev_t tty = finfo.st_dev;
-+#endif
- #endif
-               int file;
-diff -ru finger-1.37.orig/lib/packet.c finger-1.37/lib/packet.c
---- finger-1.37.orig/lib/packet.c      Wed Oct 21 18:04:38 1992
-+++ finger-1.37/lib/packet.c   Mon Feb  8 01:10:00 1993
-@@ -348,7 +348,9 @@
-         perror (filename);
-     }
-+#ifndef linux /* doesn't have fsync (as of .99.4) */
-   fsync (file);
-+#endif
-   close (file);
- }
-diff -ru finger-1.37.orig/lib/savedir.c finger-1.37/lib/savedir.c
---- finger-1.37.orig/lib/savedir.c     Fri Oct 16 21:52:40 1992
-+++ finger-1.37/lib/savedir.c  Mon Feb  8 01:06:47 1993
-@@ -132,7 +132,7 @@
- char *
- stpcpy (dest, source)
-      char *dest;
--     char *source;
-+     const char *source; /* gcc insists on prototype consistency */
- {
-   while ((*dest++ = *source++) != '\0')
-     /* Do nothing. */ ;
-diff -ru finger-1.37.orig/src/finger.c finger-1.37/src/finger.c
---- finger-1.37.orig/src/finger.c      Wed Oct 21 20:41:13 1992
-+++ finger-1.37/src/finger.c   Mon Feb  8 00:56:32 1993
-@@ -192,6 +192,9 @@
-   long addr;
-   char *finger_server = NULL;
-   int suppress_hostname = 0;
-+#if defined(linux) /* gethostbyaddr evidently returns pointer to static area */
-+  int do_hostfree = 0;
-+#endif /* linux */
-   username = savestring (arg);
-@@ -237,6 +240,9 @@
-       {
-         host = (struct hostent *) xmalloc (sizeof (struct hostent));
-         host->h_name = hostname;
-+#if defined (linux)
-+        do_hostfree = 1;
-+#endif /* linux */
-       }
-     }
-   else
-@@ -296,6 +302,11 @@
-   if (finger_server)
-     free (finger_server);
-+#if !defined (linux)
-   if (host)
-     free (host);
-+#else
-+  if (host && do_hostfree)
-+    free (host);
-+#endif
- }
--------------END-------------