From f6764f4722191ac669ca8c867679727179a7b32f Mon Sep 17 00:00:00 2001 From: Mark Spencer <markster@digium.com> Date: Sun, 27 Apr 2003 21:34:27 +0000 Subject: [PATCH] More contributed BSD enhancements git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@919 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_agi.c | 6 +++--- apps/app_disa.c | 4 ++-- apps/app_qcall.c | 2 +- apps/app_voicemail.c | 10 +++++----- channels/alaw.h | 4 ++-- channels/chan_iax.c | 12 ++++++------ channels/chan_iax2.c | 10 +++++----- channels/chan_mgcp.c | 6 +++--- channels/chan_modem.c | 2 +- channels/chan_modem_aopen.c | 4 ++-- channels/chan_modem_bestdata.c | 4 ++-- channels/chan_modem_i4l.c | 4 ++-- channels/chan_oss.c | 4 ++-- channels/chan_sip.c | 12 ++++++------ include/asterisk/channel.h | 11 +++++++++++ include/asterisk/lock.h | 15 +++++++++++++-- indications.c | 2 +- res/res_indications.c | 4 ++-- res/res_parking.c | 2 +- 19 files changed, 70 insertions(+), 48 deletions(-) diff --git a/apps/app_agi.c b/apps/app_agi.c index 7c28daa44d..aa526d5592 100755 --- a/apps/app_agi.c +++ b/apps/app_agi.c @@ -914,7 +914,7 @@ static char usage_noop[] = " Usage: NOOP\n" " Does nothing.\n"; -agi_command commands[] = { +static agi_command commands[] = { { { "answer", NULL }, handle_answer, "Asserts answer", usage_answer }, { { "wait", "for", "digit", NULL }, handle_waitfordigit, "Waits for a digit to be pressed", usage_waitfordigit }, { { "send", "text", NULL }, handle_sendtext, "Sends text to channels supporting it", usage_sendtext }, @@ -1343,10 +1343,10 @@ static char dumpagihtml_help[] = "Usage: dump agihtml <filename>\n" " Dumps the agi command list in html format to given filename\n"; -struct ast_cli_entry showagi = +static struct ast_cli_entry showagi = { { "show", "agi", NULL }, handle_showagi, "Show AGI commands or specific help", showagi_help }; -struct ast_cli_entry dumpagihtml = +static struct ast_cli_entry dumpagihtml = { { "dump", "agihtml", NULL }, handle_dumpagihtml, "Dumps a list of agi command in html format", dumpagihtml_help }; int unload_module(void) diff --git a/apps/app_disa.c b/apps/app_disa.c index 9783369367..1377adc736 100755 --- a/apps/app_disa.c +++ b/apps/app_disa.c @@ -83,8 +83,8 @@ LOCAL_USER_DECL; static float loudness=4096.0; -int firstdigittimeout = 20000; /* 20 seconds first digit timeout */ -int digittimeout = 10000; /* 10 seconds subsequent digit timeout */ +static int firstdigittimeout = 20000; /* 20 seconds first digit timeout */ +static int digittimeout = 10000; /* 10 seconds subsequent digit timeout */ static void make_tone_block(unsigned char *data, float f1, float f2, int len, int *x) { diff --git a/apps/app_qcall.c b/apps/app_qcall.c index a68239abc0..6d89f0d2ba 100755 --- a/apps/app_qcall.c +++ b/apps/app_qcall.c @@ -73,7 +73,7 @@ #include <sys/file.h> #include "../astconf.h" -char qdir[255]; +static char qdir[255]; static char *tdesc = "Call from Queue"; static pthread_t qcall_thread; static int debug = 0; diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 52a570cb98..b70ce0ffdf 100755 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -64,11 +64,11 @@ #define BASELINELEN 72 #define eol "\r\n" -int iocp; -int iolen; -int linelength; -int ateof; -unsigned char iobuf[BASEMAXINLINE]; +static int iocp; +static int iolen; +static int linelength; +static int ateof; +static unsigned char iobuf[BASEMAXINLINE]; static char *tdesc = "Comedian Mail (Voicemail System)"; diff --git a/channels/alaw.h b/channels/alaw.h index 3148a9d67b..1423e495c7 100755 --- a/channels/alaw.h +++ b/channels/alaw.h @@ -23,7 +23,7 @@ // table to convert unsigned a-law bytes to signed linear integers -const int alaw2int[256] = { +static const int alaw2int[256] = { -5504,5504,-344,344,-22016,22016,-1376,1376,-2752,2752,-88,88,-11008,11008, -688,688,-7552,7552,-472,472,-30208,30208,-1888,1888,-3776,3776,-216,216, -15104,15104,-944,944,-4480,4480,-280,280,-17920,17920,-1120,1120,-2240,2240, @@ -50,7 +50,7 @@ const int alaw2int[256] = { // shift the integer to be 12+1 bit first, then add 4096 to get // the right index -const unsigned char int2alaw[8192] = { +static const unsigned char int2alaw[8192] = { 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, diff --git a/channels/chan_iax.c b/channels/chan_iax.c index fda8698796..fe580353de 100755 --- a/channels/chan_iax.c +++ b/channels/chan_iax.c @@ -93,7 +93,7 @@ static int expirey = AST_DEFAULT_REG_EXPIRE; static int usecnt; static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER; -int (*regfunk)(char *username, int onoff) = NULL; +int (*iax_regfunk)(char *username, int onoff) = NULL; /* Ethernet, etc */ #define IAX_CAPABILITY_FULLBANDWIDTH 0xFFFF @@ -218,7 +218,7 @@ struct iax_registry { struct iax_registry *next; }; -struct iax_registry *registrations; +static struct iax_registry *registrations; /* Don't retry more frequently than every 10 ms, or less frequently than every 5 seconds */ #define MIN_RETRY_TIME 10 @@ -426,10 +426,10 @@ static struct iax_dpcache { struct iax_dpcache *peer; /* For linking in peers */ } *dpcache; -pthread_mutex_t dpcache_lock; +static pthread_mutex_t dpcache_lock; #ifdef DEBUG_SUPPORT -void showframe(struct ast_iax_frame *f, struct ast_iax_full_hdr *fhi, int rx, struct sockaddr_in *sin) +static void showframe(struct ast_iax_frame *f, struct ast_iax_full_hdr *fhi, int rx, struct sockaddr_in *sin) { char *frames[] = { "(0?)", @@ -4501,7 +4501,7 @@ static struct iax_user *build_user(char *name, struct ast_variable *v) } -void delete_users(void){ +static void delete_users(void){ struct iax_user *user, *userlast; struct iax_peer *peer; struct iax_registry *reg, *regl; @@ -4535,7 +4535,7 @@ void delete_users(void){ ast_pthread_mutex_unlock(&peerl.lock); } -void prune_peers(void){ +static void prune_peers(void){ /* Prune peers who still are supposed to be deleted */ struct iax_peer *peer, *peerlast, *peernext; int x; diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 2a547926f5..2446c9ab66 100755 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -109,7 +109,7 @@ static int timingfd = -1; /* Timing file descriptor */ static int usecnt; static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER; -int (*regfunk)(char *username, int onoff) = NULL; +int (*iax2_regfunk)(char *username, int onoff) = NULL; /* Ethernet, etc */ #define IAX_CAPABILITY_FULLBANDWIDTH 0xFFFF @@ -244,7 +244,7 @@ struct iax2_registry { struct iax2_registry *next; }; -struct iax2_registry *registrations; +static struct iax2_registry *registrations; /* Don't retry more frequently than every 10 ms, or less frequently than every 5 seconds */ #define MIN_RETRY_TIME 10 @@ -429,7 +429,7 @@ static struct iax2_dpcache { struct iax2_dpcache *peer; /* For linking in peers */ } *dpcache; -pthread_mutex_t dpcache_lock; +static pthread_mutex_t dpcache_lock; static void iax_debug_output(const char *data) { @@ -4808,7 +4808,7 @@ static struct iax2_user *build_user(char *name, struct ast_variable *v) } -void delete_users(void){ +static void delete_users(void){ struct iax2_user *user, *userlast; struct iax2_peer *peer; struct iax2_registry *reg, *regl; @@ -4842,7 +4842,7 @@ void delete_users(void){ ast_pthread_mutex_unlock(&peerl.lock); } -void prune_peers(void){ +static void prune_peers(void){ /* Prune peers who still are supposed to be deleted */ struct iax2_peer *peer, *peerlast, *peernext; int x; diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c index 0975072b5c..43afb52401 100755 --- a/channels/chan_mgcp.c +++ b/channels/chan_mgcp.c @@ -155,7 +155,7 @@ struct mgcp_endpoint { struct mgcp_gateway *parent; }; -struct mgcp_gateway { +static struct mgcp_gateway { /* A gateway containing one or more endpoints */ char name[80]; struct sockaddr_in addr; @@ -293,7 +293,7 @@ struct my_ifreq { } ifr_ifru; }; -struct in_addr *lookup_iface(char *iface) { +static struct in_addr *lookup_iface(char *iface) { int mysock; int res; static struct my_ifreq ifreq; @@ -1694,7 +1694,7 @@ static struct ast_channel *mgcp_request(char *type, int format, void *data) return tmpc; } -struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v) +static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v) { struct mgcp_gateway *gw; struct mgcp_endpoint *e; diff --git a/channels/chan_modem.c b/channels/chan_modem.c index 90ac7c3ae1..900eb0ad58 100755 --- a/channels/chan_modem.c +++ b/channels/chan_modem.c @@ -808,7 +808,7 @@ static unsigned int get_group(char *s) char *piece; int start, finish,x; unsigned int group = 0; - char *copy = strdupa(s); + char *copy = ast_strdupa(s); char *stringp=NULL; if (!copy) { ast_log(LOG_ERROR, "Out of memory\n"); diff --git a/channels/chan_modem_aopen.c b/channels/chan_modem_aopen.c index a8f6adb06a..3aa1978afc 100755 --- a/channels/chan_modem_aopen.c +++ b/channels/chan_modem_aopen.c @@ -33,8 +33,8 @@ static char *breakcmd = "\0x10\0x03"; static char *desc = "A/Open (Rockwell Chipset) ITU-2 VoiceModem Driver"; -int usecnt; -pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER; +static int usecnt; +static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER; static char *aopen_idents[] = { /* Identify A/Open Modem */ diff --git a/channels/chan_modem_bestdata.c b/channels/chan_modem_bestdata.c index 3faad53e8e..90cc87828c 100755 --- a/channels/chan_modem_bestdata.c +++ b/channels/chan_modem_bestdata.c @@ -38,8 +38,8 @@ static char *breakcmd = "\020!"; static char *desc = "BestData (Conexant V.90 Chipset) VoiceModem Driver"; -int usecnt; -pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER; +static int usecnt; +static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER; static char *bestdata_idents[] = { /* Identify BestData Modem */ diff --git a/channels/chan_modem_i4l.c b/channels/chan_modem_i4l.c index 277c16b860..8571882772 100755 --- a/channels/chan_modem_i4l.c +++ b/channels/chan_modem_i4l.c @@ -33,8 +33,8 @@ static char *breakcmd = "\0x10\0x14\0x10\0x3"; static char *desc = "ISDN4Linux Emulated Modem Driver"; -int usecnt; -pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER; +static int usecnt; +static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER; static char *i4l_idents[] = { /* Identify ISDN4Linux Driver */ diff --git a/channels/chan_oss.c b/channels/chan_oss.c index 7199d33b93..376f5e0594 100755 --- a/channels/chan_oss.c +++ b/channels/chan_oss.c @@ -75,7 +75,7 @@ static char context[AST_MAX_EXTENSION] = "default"; static char language[MAX_LANGUAGE] = ""; static char exten[AST_MAX_EXTENSION] = "s"; -int hookstate=0; +static int hookstate=0; static short silence[FRAME_SIZE] = {0, }; @@ -123,7 +123,7 @@ static int time_has_passed(void) with 160 sample frames, and a buffer size of 3, we have a 60ms buffer, usually plenty. */ -pthread_t sthread; +static pthread_t sthread; #define MAX_BUFFER_SIZE 100 static int buffersize = 3; diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 8458f3a816..2488bd543c 100755 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -343,7 +343,7 @@ struct sip_registry { #define REINVITE_UPDATE 2 static int sip_do_register(struct sip_registry *r); -struct sip_registry *registrations; +static struct sip_registry *registrations; static int sipsock = -1; static int globalnat = 0; @@ -361,7 +361,7 @@ static int transmit_reinvite_with_sdp(struct sip_pvt *p, struct ast_rtp *rtp); static int transmit_info_with_digit(struct sip_pvt *p, char digit); static int transmit_message_with_text(struct sip_pvt *p, char *text); static int do_proxy_auth(struct sip_pvt *p, struct sip_request *req); -char *getsipuri(char *header); +static char *getsipuri(char *header); static void free_old_route(struct sip_route *route); static int build_reply_digest(struct sip_pvt *p, char *orig_header, char *digest, int digest_len); @@ -848,7 +848,7 @@ struct my_ifreq { struct sockaddr_in ifru_addr; }; -struct in_addr *lookup_iface(char *iface) { +static struct in_addr *lookup_iface(char *iface) { int mysock; int res; static struct my_ifreq ifreq; @@ -5350,7 +5350,7 @@ int load_module() return res; } -void delete_users(void) +static void delete_users(void) { struct sip_user *user, *userlast; struct sip_peer *peer; @@ -5384,7 +5384,7 @@ void delete_users(void) ast_pthread_mutex_unlock(&peerl.lock); } -void prune_peers(void) +static void prune_peers(void) { /* Prune peers who still are supposed to be deleted */ struct sip_peer *peer, *peerlast, *peernext; @@ -5502,7 +5502,7 @@ char *description() return desc; } -char *getsipuri(char *header) +static char *getsipuri(char *header) { char *c, *d, *retval; int n; diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h index befc13bc5b..c67dd58c4c 100755 --- a/include/asterisk/channel.h +++ b/include/asterisk/channel.h @@ -708,6 +708,17 @@ static inline int ast_select(int nfds, fd_set *rfds, fd_set *wfds, fd_set *efds, #endif } +#if !defined(ast_strdupa) && defined(__GNUC__) +# define ast_strdupa(s) \ + (__extension__ \ + ({ \ + __const char *__old = (s); \ + size_t __len = strlen (__old) + 1; \ + char *__new = (char *) __builtin_alloca (__len); \ + (char *) memcpy (__new, __old, __len); \ + })) +#endif + #ifdef DO_CRASH #define CRASH do { fprintf(stderr, "!! Forcing immediate crash a-la abort !!\n"); *((int *)0) = 0; } while(0) #else diff --git a/include/asterisk/lock.h b/include/asterisk/lock.h index bde1e6adaa..d27e295b49 100755 --- a/include/asterisk/lock.h +++ b/include/asterisk/lock.h @@ -29,10 +29,17 @@ // #define AST_MUTEX_KIND PTHREAD_MUTEX_RECURSIVE_NP #ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP #define AST_MUTEX_INITIALIZER PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP +#else +#ifdef PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#define AST_MUTEX_INITIALIZER PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define AST_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER +#endif +#endif +#ifdef PTHREAD_MUTEX_ERRORCHECK_NP #define AST_MUTEX_KIND PTHREAD_MUTEX_ERRORCHECK_NP #else -#define AST_MUTEX_INITIALIZER PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#define AST_MUTEX_KIND PTHREAD_MUTEX_RECURSIVE_NP +#define AST_MUTEX_KIND PTHREAD_MUTEX_ERRORCHECK #endif struct mutex_info { @@ -96,7 +103,11 @@ static inline int __ast_pthread_mutex_unlock(char *filename, int lineno, char *f #else #define AST_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER +#ifdef PTHREAD_MUTEX_FAST_NP #define AST_MUTEX_KIND PTHREAD_MUTEX_FAST_NP +#else +#define AST_MUTEX_KIND PTHREAD_NORMAL +#endif #define ast_pthread_mutex_init(mutex) pthread_mutex_init(mutex, NULL) #define ast_pthread_mutex_lock pthread_mutex_lock diff --git a/indications.c b/indications.c index 1ef2357adc..ccfd04e82b 100755 --- a/indications.c +++ b/indications.c @@ -140,7 +140,7 @@ static struct ast_generator playtones = { int ast_playtones_start(struct ast_channel *chan, int vol, const char *playlst, int interruptible) { - char *s, *data = strdupa(playlst); /* cute */ + char *s, *data = ast_strdupa(playlst); /* cute */ struct playtones_def d = { vol, -1, 0, 1, NULL}; char *stringp=NULL; if (!data) diff --git a/res/res_indications.c b/res/res_indications.c index 3ed4c088d6..5f039f6c7a 100755 --- a/res/res_indications.c +++ b/res/res_indications.c @@ -248,7 +248,7 @@ static int ind_load_module(void) if (!strcasecmp(v->name, "description")) { strncpy(tones->description, v->value, sizeof(tones->description)-1); } else if (!strcasecmp(v->name,"ringcadance")) { - char *ring,*rings = strdupa(v->value); + char *ring,*rings = ast_strdupa(v->value); c = rings; ring = strsep(&c,","); while (ring) { @@ -270,7 +270,7 @@ static int ind_load_module(void) ring = strsep(&c,","); } } else if (!strcasecmp(v->name,"alias")) { - char *countries = strdupa(v->value); + char *countries = ast_strdupa(v->value); c = countries; country = strsep(&c,","); while (country) { diff --git a/res/res_parking.c b/res/res_parking.c index 4ffbc5166b..63dc192309 100755 --- a/res/res_parking.c +++ b/res/res_parking.c @@ -611,7 +611,7 @@ unsigned int ast_get_group(char *s) char *c=NULL; int start=0, finish=0,x; unsigned int group = 0; - copy = strdupa(s); + copy = ast_strdupa(s); if (!copy) { ast_log(LOG_ERROR, "Out of memory\n"); return 0; -- GitLab