ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/user_stats.c
(Generate patch)

Comparing projects/libstatgrab/src/libstatgrab/user_stats.c (file contents):
Revision 1.26 by ats, Sun Jul 18 21:30:12 2004 UTC vs.
Revision 1.27 by tdb, Mon Nov 1 18:30:17 2004 UTC

# Line 43 | Line 43
43   #ifdef CYGWIN
44   #include <sys/unistd.h>
45   #endif
46 + #ifdef HPUX
47 + #include <utmp.h>
48 + #endif
49  
50   sg_user_stats *sg_get_user_stats(){
51          int num_users = 0, pos = 0, new_pos;
52          VECTOR_DECLARE_STATIC(name_list, char, 128, NULL, NULL);
53          static sg_user_stats user_stats;
51 #if defined(SOLARIS) || defined(LINUX) || defined(CYGWIN)
52        struct utmp *entry;
53 #endif
54   #ifdef ALLBSD
55          struct utmp entry;
56          FILE *f;
57 #endif
57  
59 #if defined(SOLARIS) || defined(LINUX) || defined(CYGWIN)
60        setutent();
61        while((entry=getutent()) != NULL) {
62                if (entry->ut_type != USER_PROCESS) continue;
63
64                new_pos = pos + strlen(entry->ut_user) + 1;
65                if (VECTOR_RESIZE(name_list, new_pos) < 0) {
66                        return NULL;
67                }
68
69                strcpy(name_list + pos, entry->ut_user);
70                name_list[new_pos - 1] = ' ';
71                pos = new_pos;
72                num_users++;
73        }
74        endutent();
75 #endif
76 #ifdef ALLBSD
58          if ((f=fopen(_PATH_UTMP, "r")) == NULL){
59                  sg_set_error_with_errno(SG_ERROR_OPEN, _PATH_UTMP);
60                  return NULL;
# Line 92 | Line 73 | sg_user_stats *sg_get_user_stats(){
73                  num_users++;
74          }
75          fclose(f);
76 + #else
77 +        /* This works on everything else. */
78 +        struct utmp *entry;
79 +
80 +        setutent();
81 +        while((entry=getutent()) != NULL) {
82 +                if (entry->ut_type != USER_PROCESS) continue;
83 +
84 +                new_pos = pos + strlen(entry->ut_user) + 1;
85 +                if (VECTOR_RESIZE(name_list, new_pos) < 0) {
86 +                        return NULL;
87 +                }
88 +
89 +                strcpy(name_list + pos, entry->ut_user);
90 +                name_list[new_pos - 1] = ' ';
91 +                pos = new_pos;
92 +                num_users++;
93 +        }
94 +        endutent();
95   #endif
96  
97          /* Remove the extra space at the end, and append a \0. */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines