Diff for /embedaddon/mpd/src/util.c between versions 1.1.1.3 and 1.1.1.4

version 1.1.1.3, 2016/11/01 09:56:12 version 1.1.1.4, 2021/03/17 00:39:23
Line 15 Line 15
 #include <libutil.h>  #include <libutil.h>
 #include <netdb.h>  #include <netdb.h>
 #include <tcpd.h>  #include <tcpd.h>
   #include <sys/limits.h>
 #include <sys/wait.h>  #include <sys/wait.h>
 #include <sys/sysctl.h>  #include <sys/sysctl.h>
 #include <net/route.h>  #include <net/route.h>
Line 80  static const u_int16_t Crc16Table[256] = { Line 81  static const u_int16_t Crc16Table[256] = {
  */   */
   
   static void           Escape(char *line);    static void           Escape(char *line);
  static char           *ReadLine(FILE *fp, int *lineNum, char *result, int resultsize);  static char           *ReadLine(FILE *fp, int *lineNum, char *result, size_t resultsize);
   
   static char           HexVal(char c);    static char           HexVal(char c);
   
   static void           IndexConfFile(FILE *fp, struct configfile **cf);    static void           IndexConfFile(FILE *fp, struct configfile **cf);
       
  struct configfiles    *ConfigFilesIndex=NULL;  static struct configfiles     *ConfigFilesIndex=NULL;
   
 #undef isspace  #undef isspace
 #define isspace(c) (((c)==' '||(c)=='\t'||(c)=='\n'||(c)=='\r')?1:0)  #define isspace(c) (((c)==' '||(c)=='\t'||(c)=='\n'||(c)=='\r')?1:0)
Line 118  int Line 119  int
 ExecCmd(int log, const char *label, const char *fmt, ...)  ExecCmd(int log, const char *label, const char *fmt, ...)
 {  {
   int           rtn;    int           rtn;
  char          cmd[BIG_LINE_SIZE];  char          cmd[LINE_MAX];
  char          cmdn[BIG_LINE_SIZE];  char          cmdn[LINE_MAX];
   va_list       ap;    va_list       ap;
   
   va_start(ap, fmt);    va_start(ap, fmt);
Line 153  int Line 154  int
 ExecCmdNosh(int log, const char *label, const char *fmt, ...)  ExecCmdNosh(int log, const char *label, const char *fmt, ...)
 {  {
     int         rtn;      int         rtn;
    char        cmd[BIG_LINE_SIZE];    char        cmd[LINE_MAX];
     char        *cmdp = &(cmd[0]);      char        *cmdp = &(cmd[0]);
     char        *argv[256];      char        *argv[256];
     char        **arg;      char        **arg;
Line 378  Escape(char *line) Line 379  Escape(char *line)
   
 int  int
 ReadFile(const char *filename, const char *target,  ReadFile(const char *filename, const char *target,
        int (*func)(Context ctx, int ac, char *av[], const char *file, int line), Context ctx)        int (*func)(Context ctx, int ac, const char *const av[], const char *file, int line), Context ctx)
 {  {
   FILE  *fp;    FILE  *fp;
   int   ac;    int   ac;
Line 409  ReadFile(const char *filename, const char *target, Line 410  ReadFile(const char *filename, const char *target,
       break;        break;
     }      }
     ac = ParseLine(line, av, sizeof(av) / sizeof(*av), 0);      ac = ParseLine(line, av, sizeof(av) / sizeof(*av), 0);
    (*func)(ctx, ac, av, filename, lineNum);    (*func)(ctx, ac, (const char *const *)av, filename, lineNum);
   }    }
   
 /* Done */  /* Done */
Line 558  OpenConfFile(const char *name, struct configfile **cf) Line 559  OpenConfFile(const char *name, struct configfile **cf)
 char *  char *
 ReadFullLine(FILE *fp, int *lineNum, char *result, int resultsize)  ReadFullLine(FILE *fp, int *lineNum, char *result, int resultsize)
 {  {
  int           len, linelen, resultlinesize, continuation;  int           len, resultlinesize, continuation;
   unsigned        linelen;
   char          line[BIG_LINE_SIZE];    char          line[BIG_LINE_SIZE];
   char          real_line[BIG_LINE_SIZE];    char          real_line[BIG_LINE_SIZE];
   char          *resultline;    char          *resultline;
Line 626  ReadFullLine(FILE *fp, int *lineNum, char *result, int Line 628  ReadFullLine(FILE *fp, int *lineNum, char *result, int
  */   */
   
 static char *  static char *
ReadLine(FILE *fp, int *lineNum, char *result, int resultsize)ReadLine(FILE *fp, int *lineNum, char *result, size_t resultsize)
 {  {
   int           empty;    int           empty;
   char          *s;    char          *s;
Line 1050  ShowMesg(int log, const char *pref, const char *buf, i Line 1052  ShowMesg(int log, const char *pref, const char *buf, i
   
   if (len > 0)    if (len > 0)
   {    {
    if (len > sizeof(mesg) - 1)    if (len > (int)(sizeof(mesg) - 1))
       len = sizeof(mesg) - 1;        len = sizeof(mesg) - 1;
     memcpy(mesg, buf, len);      memcpy(mesg, buf, len);
     mesg[len] = 0;      mesg[len] = 0;
Line 1093  Bin2Hex(const unsigned char *bin, size_t len) Line 1095  Bin2Hex(const unsigned char *bin, size_t len)
 u_char *  u_char *
 Hex2Bin(char *hexstr)  Hex2Bin(char *hexstr)
 {  {
  int           i;  unsigned      i;
   u_char        *binval;    u_char        *binval;
   
   binval = Malloc(MB_UTIL, strlen(hexstr) / 2);    binval = Malloc(MB_UTIL, strlen(hexstr) / 2);
Line 1176  GetAnyIpAddress(struct u_addr *ipaddr, const char *ifn Line 1178  GetAnyIpAddress(struct u_addr *ipaddr, const char *ifn
             close(s);              close(s);
             return(-1);              return(-1);
         }          }
        ipa = ((struct sockaddr_in *)&ifreq.ifr_ifru.ifru_addr)->sin_addr;        ipa = ((struct sockaddr_in *)(void *)&ifreq.ifr_ifru.ifru_addr)->sin_addr;
         if ((ntohl(ipa.s_addr)>>24) == 127)          if ((ntohl(ipa.s_addr)>>24) == 127)
             ipa.s_addr = 0;     /* We don't like 127.0.0.1 */              ipa.s_addr = 0;     /* We don't like 127.0.0.1 */
     }      }
Line 1196  GetAnyIpAddress(struct u_addr *ipaddr, const char *ifn Line 1198  GetAnyIpAddress(struct u_addr *ipaddr, const char *ifn
         }          }
                   
         /* if used size is too close to allocated size retry with a larger buffer */          /* if used size is too close to allocated size retry with a larger buffer */
        if (ifc.ifc_len + 128 < buffsize)        if ((unsigned)ifc.ifc_len + 128 < buffsize)
           break;            break;
                   
          Freee(ifs);           Freee(ifs);
Line 1296  GetEther(struct u_addr *addr, struct sockaddr_dl *hwad Line 1298  GetEther(struct u_addr *addr, struct sockaddr_dl *hwad
         }          }
                     
         /* if used size is too close to allocated size retry with a larger buffer */          /* if used size is too close to allocated size retry with a larger buffer */
        if (ifc.ifc_len + 128 < buffsize)        if ((unsigned)ifc.ifc_len + 128 < buffsize)
             break;              break;
                     
         Freee(ifs);          Freee(ifs);
Line 1431  GetPeerEther(struct u_addr *addr, struct sockaddr_dl * Line 1433  GetPeerEther(struct u_addr *addr, struct sockaddr_dl *
         }          }
         lim = buf + needed;          lim = buf + needed;
         for (next = buf; next < lim; next += rtm->rtm_msglen) {          for (next = buf; next < lim; next += rtm->rtm_msglen) {
                rtm = (struct rt_msghdr *)next;                rtm = (struct rt_msghdr *)(void *)next;
                 sin2 = (struct sockaddr_inarp *)(rtm + 1);                  sin2 = (struct sockaddr_inarp *)(rtm + 1);
                 if (addr->u.ip4.s_addr == sin2->sin_addr.s_addr) {                  if (addr->u.ip4.s_addr == sin2->sin_addr.s_addr) {
                        sdl = (struct sockaddr_dl *)((char *)sin2 + SA_SIZE(sin2));                        sdl = (struct sockaddr_dl *)(void *)((char *)sin2 + SA_SIZE(sin2));
                         memcpy(hwaddr, sdl, sdl->sdl_len);                          memcpy(hwaddr, sdl, sdl->sdl_len);
                         found_entry = 1;                          found_entry = 1;
                         break;                          break;
Line 1451  void Line 1453  void
 ppp_util_ascify(char *buf, size_t bsiz, const char *data, size_t len)  ppp_util_ascify(char *buf, size_t bsiz, const char *data, size_t len)
 {  {
         char *bp;          char *bp;
        int i;        unsigned i;
   
         for (bp = buf, i = 0; i < len; i++) {          for (bp = buf, i = 0; i < len; i++) {
                 const char ch = (char)data[i];                  const char ch = (char)data[i];
Line 1505  ether_ntoa_r(const struct ether_addr *n, char *a) Line 1507  ether_ntoa_r(const struct ether_addr *n, char *a)
         return (a);          return (a);
 }  }
 #endif  #endif
   
   int
   IfaceSetFlag(const char *ifname, int value)
   {
           struct ifreq            my_ifr;
           int s;
           int flags;
   
           /* Get socket */
           if ((s = socket(PF_LOCAL, SOCK_DGRAM, 0)) < 0) {
               Perror("Can't get socket to set flags");
               return(-1);
           }
   
           memset(&my_ifr, 0, sizeof(my_ifr));
           (void) strlcpy(my_ifr.ifr_name, ifname, sizeof(my_ifr.ifr_name));
   
           if (ioctl(s, SIOCGIFFLAGS, (caddr_t)&my_ifr) < 0) {
                   Perror("ioctl (SIOCGIFFLAGS)");
                   close(s);
                   return (-1);
           }
           flags = (my_ifr.ifr_flags & 0xffff) | (my_ifr.ifr_flagshigh << 16);
   
           if (value < 0) {
                   value = -value;
                   flags &= ~value;
           } else
                   flags |= value;
           my_ifr.ifr_flags = flags & 0xffff;
           my_ifr.ifr_flagshigh = flags >> 16;
           if (ioctl(s, SIOCSIFFLAGS, (caddr_t)&my_ifr) < 0) {
                   Perror("ioctl (SIOCSIFFLAGS)");
                   close(s);
                   return (-1);
           }
           close(s);
           return (0);
   }

Removed from v.1.1.1.3  
changed lines
  Added in v.1.1.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>