Annotation of embedaddon/mpd/src/util.h, revision 1.1.1.1

1.1       misho       1: 
                      2: /*
                      3:  * util.h
                      4:  *
                      5:  * Written by Archie Cobbs <archie@freebsd.org>
                      6:  * Copyright (c) 1995-1999 Whistle Communications, Inc. All rights reserved.
                      7:  * See ``COPYRIGHT.whistle''
                      8:  */
                      9: 
                     10: #ifndef _UTIL_H_
                     11: #define _UTIL_H_
                     12: 
                     13: #include "ip.h"
                     14: 
                     15:   /*-
                     16:    * The following macro is used to update an
                     17:    * internet checksum.  "acc" is a 32-bit
                     18:    * accumulation of all the changes to the
                     19:    * checksum (adding in old 16-bit words and
                     20:    * subtracting out new words), and "cksum"
                     21:    * is the checksum value to be updated.
                     22:    */
                     23:   #define ADJUST_CHECKSUM(acc, cksum) { \
                     24:     acc += cksum; \
                     25:     if (acc < 0) { \
                     26:       acc = -acc; \
                     27:       acc = (acc >> 16) + (acc & 0xffff); \
                     28:       acc += acc >> 16; \
                     29:       cksum = (u_short) ~acc; \
                     30:     } else { \
                     31:       acc = (acc >> 16) + (acc & 0xffff); \
                     32:       acc += acc >> 16; \
                     33:       cksum = (u_short) acc; \
                     34:     } \
                     35:   }
                     36: 
                     37:   #define MAX_U_INT32 0xffffffffU
                     38: 
                     39:   #define IFCONF_BUFFSIZE      16384
                     40:   #define IFCONF_BUFFMAXSIZE   1048576
                     41: 
                     42:   struct configfile {
                     43:     char               *label;
                     44:     off_t              seek;
                     45:     int                        linenum;
                     46:     struct configfile  *next;
                     47:   };
                     48: 
                     49:   struct configfiles {
                     50:     char               *filename;
                     51:     struct configfile  *sections;
                     52:     struct configfiles *next;
                     53:   };
                     54: /*
                     55:  * FUNCTIONS
                     56:  */
                     57: 
                     58:   extern FILE          *OpenConfFile(const char *name, struct configfile **cf);
                     59:   extern int           SeekToLabel(FILE *fp, const char *label, int *lineNum, struct configfile *cf);
                     60: 
                     61:   extern char          *ReadFullLine(FILE *fp, int *lineNum, char *result, int resultlen);
                     62:   extern int           ReadFile(const char *filename, const char *target,
                     63:                                int (*func)(Context ctx, int ac, char *av[], const char *file, int line), Context ctx);
                     64:   extern int           ParseLine(char *line, char *vec[], int max_args, int copy);
                     65:   extern void          FreeArgs(int ac, char *av[]);
                     66: 
                     67:   extern int           TcpGetListenPort(struct u_addr *addr, in_port_t port, int block);
                     68:   extern int           TcpAcceptConnection(int sock, struct sockaddr_storage *addr, int block);
                     69:   extern int           GetInetSocket(int type, struct u_addr *addr, in_port_t port, int block, char *ebuf, size_t len);
                     70: 
                     71:   extern int           OpenSerialDevice(const char *label, const char *path, int baudrate);
                     72:   extern int           ExclusiveOpenDevice(const char *label, const char *path);
                     73:   extern void          ExclusiveCloseDevice(const char *label, int fd, const char *path);
                     74: 
                     75:   extern int           PIDCheck(const char *lockfile, int killem);
                     76: 
                     77:   extern void          LengthenArray(void *arrayp, size_t esize,
                     78:                                int *alenp, const char *type);
                     79: 
                     80:   extern int           ExecCmd(int log, const char *label, const char *fmt, ...)
                     81:                                __printflike(3, 4);
                     82:   extern int           ExecCmdNosh(int log, const char *label, const char *fmt, ...)
                     83:                                __printflike(3, 4);
                     84:   extern void          ShowMesg(int log, const char *pref, const char *buf, int len);
                     85:   extern char          *Bin2Hex(const unsigned char *bin, size_t len);
                     86:   extern u_char                *Hex2Bin(char *hexstr);
                     87:   extern u_short       Crc16(u_short fcs, u_char *cp, int len);
                     88:   extern u_long                GenerateMagic(void);
                     89: 
                     90:   extern int           GetAnyIpAddress(struct u_addr *ipaddr, const char *ifname);
                     91:   extern int           GetEther(struct u_addr *addr,
                     92:                            struct sockaddr_dl *hwaddr);
                     93:   extern int           GetPeerEther(struct u_addr *addr, struct sockaddr_dl *hwaddr);
                     94:   extern void          ppp_util_ascify(char *buf, size_t max,
                     95:                            const char *bytes, size_t len);
                     96: 
                     97: #endif
                     98: 

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