[BACK]Return to login_cap.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libutil

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/lib/libutil/login_cap.c between version 1.5.4.1 and 1.6

version 1.5.4.1, 2000/10/18 03:44:59 version 1.6, 2000/07/05 11:46:41
Line 57  __RCSID("$NetBSD$");
Line 57  __RCSID("$NetBSD$");
 #include <string.h>  #include <string.h>
 #include <syslog.h>  #include <syslog.h>
 #include <unistd.h>  #include <unistd.h>
 #include <util.h>  
   static char     *classfiles[] = { _PATH_LOGIN_CONF, 0 };
   
 static void     setuserpath(login_cap_t *, char *);  static void     setuserpath(login_cap_t *, char *);
 static u_quad_t multiply(u_quad_t, u_quad_t);  static u_quad_t multiply(u_quad_t, u_quad_t);
Line 70  static int isinfinite(const char *);
Line 71  static int isinfinite(const char *);
 login_cap_t *  login_cap_t *
 login_getclass(char *class)  login_getclass(char *class)
 {  {
         char *classfiles[2];  
         login_cap_t *lc;          login_cap_t *lc;
         int res;          int res;
   
         if (secure_path(_PATH_LOGIN_CONF) == 0) {          for (res = 0; classfiles[res]; ++res)
                 classfiles[0] = _PATH_LOGIN_CONF;                  if (secure_path(classfiles[res]) < 0)
                 classfiles[1] = NULL;                          return (0);
         } else {  
                 classfiles[0] = NULL;  
         }  
   
         if ((lc = malloc(sizeof(login_cap_t))) == NULL) {          if ((lc = malloc(sizeof(login_cap_t))) == NULL) {
                 syslog(LOG_ERR, "%s:%d malloc: %m", __FILE__, __LINE__);                  syslog(LOG_ERR, "%s:%d malloc: %m", __FILE__, __LINE__);
Line 98  login_getclass(char *class)
Line 95  login_getclass(char *class)
                 return (0);                  return (0);
         }          }
   
         /*          if ((res = cgetent(&lc->lc_cap, classfiles, lc->lc_class)) != 0 ) {
          * Not having a login.conf file is not an error condition.  
          * The individual routines deal reasonably with missing  
          * capabilities and use default values.  
          */  
         if (classfiles[0] == NULL)  
                 return(lc);  
   
         if ((res = cgetent(&lc->lc_cap, classfiles, lc->lc_class)) != 0) {  
                 lc->lc_cap = 0;                  lc->lc_cap = 0;
                 switch (res) {                  switch (res) {
                 case 1:                  case 1:
Line 359  login_close(login_cap_t *lc)
Line 348  login_close(login_cap_t *lc)
         }          }
 }  }
   
 #define R_CTIME 1  #define CTIME   1
 #define R_CSIZE 2  #define CSIZE   2
 #define R_CNUMB 3  #define CNUMB   3
   
 static struct {  static struct {
         int     what;          int     what;
         int     type;          int     type;
         char *  name;          char *  name;
 } r_list[] = {  } r_list[] = {
         { RLIMIT_CPU,           R_CTIME, "cputime", },          { RLIMIT_CPU,           CTIME, "cputime", },
         { RLIMIT_FSIZE,         R_CSIZE, "filesize", },          { RLIMIT_FSIZE,         CSIZE, "filesize", },
         { RLIMIT_DATA,          R_CSIZE, "datasize", },          { RLIMIT_DATA,          CSIZE, "datasize", },
         { RLIMIT_STACK,         R_CSIZE, "stacksize", },          { RLIMIT_STACK,         CSIZE, "stacksize", },
         { RLIMIT_RSS,           R_CSIZE, "memoryuse", },          { RLIMIT_RSS,           CSIZE, "memoryuse", },
         { RLIMIT_MEMLOCK,       R_CSIZE, "memorylocked", },          { RLIMIT_MEMLOCK,       CSIZE, "memorylocked", },
         { RLIMIT_NPROC,         R_CNUMB, "maxproc", },          { RLIMIT_NPROC,         CNUMB, "maxproc", },
         { RLIMIT_NOFILE,        R_CNUMB, "openfiles", },          { RLIMIT_NOFILE,        CNUMB, "openfiles", },
         { RLIMIT_CORE,          R_CSIZE, "coredumpsize", },          { RLIMIT_CORE,          CSIZE, "coredumpsize", },
         { -1, 0, 0 }          { -1, 0, 0 }
 };  };
   
Line 400  gsetrl(login_cap_t *lc, int what, char *
Line 389  gsetrl(login_cap_t *lc, int what, char *
 #define RMAX    r.rlim_max  #define RMAX    r.rlim_max
   
         switch (type) {          switch (type) {
         case R_CTIME:          case CTIME:
                 RCUR = login_getcaptime(lc, name, RCUR, RCUR);                  RCUR = login_getcaptime(lc, name, RCUR, RCUR);
                 RMAX = login_getcaptime(lc, name, RMAX, RMAX);                  RMAX = login_getcaptime(lc, name, RMAX, RMAX);
                 rl.rlim_cur = login_getcaptime(lc, name_cur, RCUR, RCUR);                  rl.rlim_cur = login_getcaptime(lc, name_cur, RCUR, RCUR);
                 rl.rlim_max = login_getcaptime(lc, name_max, RMAX, RMAX);                  rl.rlim_max = login_getcaptime(lc, name_max, RMAX, RMAX);
                 break;                  break;
         case R_CSIZE:          case CSIZE:
                 RCUR = login_getcapsize(lc, name, RCUR, RCUR);                  RCUR = login_getcapsize(lc, name, RCUR, RCUR);
                 RMAX = login_getcapsize(lc, name, RMAX, RMAX);                  RMAX = login_getcapsize(lc, name, RMAX, RMAX);
                 rl.rlim_cur = login_getcapsize(lc, name_cur, RCUR, RCUR);                  rl.rlim_cur = login_getcapsize(lc, name_cur, RCUR, RCUR);
                 rl.rlim_max = login_getcapsize(lc, name_max, RMAX, RMAX);                  rl.rlim_max = login_getcapsize(lc, name_max, RMAX, RMAX);
                 break;                  break;
         case R_CNUMB:          case CNUMB:
                 RCUR = login_getcapnum(lc, name, RCUR, RCUR);                  RCUR = login_getcapnum(lc, name, RCUR, RCUR);
                 RMAX = login_getcapnum(lc, name, RMAX, RMAX);                  RMAX = login_getcapnum(lc, name, RMAX, RMAX);
                 rl.rlim_cur = login_getcapnum(lc, name_cur, RCUR, RCUR);                  rl.rlim_cur = login_getcapnum(lc, name_cur, RCUR, RCUR);
Line 441  setuserenv(login_cap_t *lc)
Line 430  setuserenv(login_cap_t *lc)
         char **res;          char **res;
         char *str = login_getcapstr(lc, "setenv", NULL, NULL);          char *str = login_getcapstr(lc, "setenv", NULL, NULL);
   
         if (str == NULL || *str == '\0')          if(str == NULL || *str == '\0')
                 return 0;                  return 0;
   
         /* count the sub-strings */          /* count the sub-strings */
Line 449  setuserenv(login_cap_t *lc)
Line 438  setuserenv(login_cap_t *lc)
                 ptr += strcspn(ptr, stop);                  ptr += strcspn(ptr, stop);
                 if (*ptr)                  if (*ptr)
                         ptr++;                          ptr++;
         }                  }
   
         /* allocate ptr array and string */          /* allocate ptr array and string */
         count = i;          count = i;
         res = malloc(count * sizeof(char *) + strlen(str) + 1);          res = malloc( count * sizeof(char *) + strlen(str) + 1 );
   
         if (!res)          if(!res)
                 return -1;                  return -1;
   
         ptr = (char *)res + count * sizeof(char *);          ptr = (char *)res + count * sizeof(char *);
Line 467  setuserenv(login_cap_t *lc)
Line 456  setuserenv(login_cap_t *lc)
                 ptr += strcspn(ptr, stop);                  ptr += strcspn(ptr, stop);
                 if (*ptr)                  if (*ptr)
                         *ptr++ = '\0';                          *ptr++ = '\0';
         }                  }
   
         res[i] = NULL;          res[i] = NULL;
   
Line 733  isinfinite(const char *s)
Line 722  isinfinite(const char *s)
         };          };
         const char **i;          const char **i;
   
         for (i = infs; *i; i++) {          for(i = infs; *i; i++) {
                 if (!strcasecmp(s, *i))                  if (!strcasecmp(s, *i))
                         return 1;                          return 1;
         }          }
Line 823  multiply(u_quad_t n1, u_quad_t n2)
Line 812  multiply(u_quad_t n1, u_quad_t n2)
   
         return (m);          return (m);
 }  }
   

Legend:
Removed from v.1.5.4.1  
changed lines
  Added in v.1.6

CVSweb <webmaster@jp.NetBSD.org>