亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? serv_stuff.c

?? 手機短消息服務的服務器和客戶端
?? C
字號:
/*========================================================== * Program : serv_stuff.c                  Project : smslink * Author  : Philippe Andersson. * Date    : 24/01/00 * Version : 0.03b * Notice  : (c) Les Ateliers du Heron, 1998 for Scitex Europe, S.A. * Comment : Library of functions for the smslink server. * * Modification History : * - 0.01b (19/08/99) : Initial release. Moved the SMS server- *   specific functions from stuff.c over here. * - 0.02b (21/10/99) : Moved tellsock() over to stuff.c (also *   used by sms2mailgw for communication with sendmail). * - 0.03b (24/01/00) : The definition for union semun disappeared *   from the include files coming with the latest version of *   glibc2. Fixed the code for daemons_death() and set_semvalue() *   to account for this. *========================================================*/#include <unistd.h>#include <stdio.h>                         /* for fprintf */#include <stdlib.h>                  /* for errno & stuff */#include <errno.h>#include <string.h>#include <syslog.h>#include <sys/time.h>           /* for the struct timeval */#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>                        /* semaphores */#include <sys/shm.h>                     /* shared memory */#include <sys/ioctl.h>            /* for the ioctl() call */#include <dial/modems.h>           /* requires 'libmodem' */#include "sms_serv.h"/*========================================================*//* For debugging purposes only - comment out for normal compile *//* #define INCL_DEBUG_CODE *//*========================================================*/void daemons_death (){#ifdef _SEM_SEMUN_UNDEFINED		/* see <bits/sem.h> */  union semun {    int val;				/* value for SETVAL */    struct semid_ds *buf;		/* buffer for IPC_STAT & IPC_SET */    unsigned short int *array;		/* array for GETALL & SETALL */    struct seminfo *__buf;		/* buffer for IPC_INFO */  } sem_union;#else    union semun sem_union;#endif                     /* #ifdef _SEM_SEMUN_UNDEFINED */  extern int shmem_sem, global_sem;  extern int shmem_id;  extern void *shared_memory;  extern acl_list gsm_acl;  extern int errno;    /* free what's need to be freed */  free_acl_list (&gsm_acl);    /* release shared memory */  if (shmdt (shared_memory) == -1)    syserr ("sms_serv: can't detach from shared memory segment");  if (shmctl (shmem_id, IPC_RMID, 0) == -1)    syserr ("sms_serv: can't remove shared memory segment");    /* delete semaphores */  if (semctl (shmem_sem, 0, IPC_RMID, sem_union) == -1)    syserr ("sms_serv: can't delete shmem semaphore");    if (semctl (global_sem, 0, IPC_RMID, sem_union) == -1)    syserr ("sms_serv: can't delete global semaphore");    /* remove checkpoint file */  if (unlink (CHECKPOINTF) == -1) {    if (errno != ENOENT) {             /* no such file... */      syserr ("sms_serv: can't remove checkpoint file");    }  }  /* log it... */  syslog ((FACILITY | LOG_INFO), "server exiting on SIGTERM.");  /* closes connection to the syslog daemon */  closelog ();    /* now exits gracefully */  exit (0);}                                     /* daemons_death () *//*========================================================*//*========================================================*//*################# struct gsms_def handling #############*//*========================================================*/int gsmdevcpy (struct gsms_def *dest, struct gsms_def *src){  if ((src != NULL) && (dest != NULL)) {    dest->free = src->free;    dest->owner = src->owner;    strcpy (dest->device, src->device);    strcpy (dest->PIN, src->PIN);    strcpy (dest->PUK, src->PUK);    strcpy (dest->addr, src->addr);    strcpy (dest->defsca, src->defsca);    strcpy (dest->provider, src->provider);    return (0);  }  else {    return (-1);  }}                                         /* gsmdevcpy () *//*========================================================*//*################ Dialogue with GSM module ##############*//*========================================================*/int tell_gsm (int fd, char *command){  int len;    len = strlen (command);  if (write (fd, command, len) != len) {    syslog ((FACILITY | LOG_ERR), "error writing to the GSM module.");    mdmperror ("error writing to the GSM module");    mdm_unlock (mdmopendevice);    hangup (fd);    free (command);    exit (-1);  }}                                          /* tell_gsm () *//*========================================================*/int get_gsm_answer (int fd, char *answer, int size, int resptime){  int nread, retval, previous;  fd_set inputs;  struct timeval timeout;  char *buffer;    /*--------------------------------------Initializations */  nread = previous = 0;    FD_ZERO (&inputs);  FD_SET (fd, &inputs);    timeout.tv_sec = 10;  timeout.tv_usec = 0;    /* wait for data to arrive on the line */  retval = select (FD_SETSIZE, &inputs, NULL, NULL, &timeout);  switch (retval) {    case 0:      syslog ((FACILITY | LOG_WARNING), "timeout while waiting for GSM answer.");      break;        case -1:      syserr ("sms_serv: call to select() failed");      break;          default:      if (FD_ISSET (fd, &inputs)) {        /* first wait for all data to be ready */	ioctl (fd, FIONREAD, &nread);	while (nread != previous) {	  sleep (resptime);	  previous = nread;	  ioctl (fd, FIONREAD, &nread);	}                    /* while (nread != previous) */	/* we know what's the data size - alloc space for it */	buffer = (char *) malloc ((nread + 1) * sizeof (char));	if (!buffer)	  syserr ("sms_serv: can't allocate buffer space");	/* now we can finally read this data */	nread = read (fd, buffer, nread);	switch (nread) {	  case 0:	    /* EOF */	    syslog ((FACILITY | LOG_WARNING), "got no data from GSM module.");	    break;	    	  case -1:	    syserr ("sms_serv: error while reading answer from GSM");	    break;	    	  default:	    buffer[nread] = '\0';#ifdef INCL_DEBUG_CODE	    fprintf (stderr, "pid<%d> Got : [%s] (%d char)\n", getpid (), buffer, nread);#endif	    /* here we could pre-process it (remove Ctrl-Z) */	    /* copy it over to out string param. */	    if (nread > size) {	      syslog ((FACILITY | LOG_WARNING), "too much data, truncation will occur");	      strncpy (answer, buffer, size);	      answer[size] = '\0';	    }	    else {	      strcpy (answer, buffer);	    }	    break;	}                               /* switch (nread) */      }                                /* if (FD_ISSET... */      free (buffer);      break;  }                                    /* switch (retval) */  return (nread);}                                    /* get_gsm_answer () *//*========================================================*//*####################### Semaphores #####################*//*========================================================*/int set_semvalue (int sem_id, int value)/* returns 0 on success, -1 on failure */{#ifdef _SEM_SEMUN_UNDEFINED		/* see <bits/sem.h> */  union semun {    int val;				/* value for SETVAL */    struct semid_ds *buf;		/* buffer for IPC_STAT & IPC_SET */    unsigned short int *array;		/* array for GETALL & SETALL */    struct seminfo *__buf;		/* buffer for IPC_INFO */  } sem_union;#else    union semun sem_union;#endif                     /* #ifdef _SEM_SEMUN_UNDEFINED */    sem_union.val = value;  return (semctl (sem_id, 0, SETVAL, sem_union));}                                      /* set_semvalue () *//*========================================================*/int sem_wait (int sem_id)/* waits for the semaphore to be decreased */{  struct sembuf sem_b;    sem_b.sem_num = 0;                   /* sem array index */  sem_b.sem_op = -1;             /* value to inc. sem. by */  sem_b.sem_flg = SEM_UNDO;    /* --- can sleep here --- */  return (semop (sem_id, &sem_b, 1));}                                      /* int sem_wait () *//*========================================================*/int sem_decreq (int sem_id)/* attempts to decrease the semaphore - return error if fails */{  struct sembuf sem_b;    sem_b.sem_num = 0;                   /* sem array index */  sem_b.sem_op = -1;             /* value to inc. sem. by */  sem_b.sem_flg = (IPC_NOWAIT | SEM_UNDO);    return (semop (sem_id, &sem_b, 1));}                                    /* int sem_decreq () *//*========================================================*/int sem_signal (int sem_id)/* increases the semaphore - always succeeds */{  struct sembuf sem_b;    sem_b.sem_num = 0;                   /* sem array index */  sem_b.sem_op = 1;              /* value to inc. sem. by */  sem_b.sem_flg = SEM_UNDO;    return (semop (sem_id, &sem_b, 1));}                                    /* int sem_signal () *//*========================================================== * EOF : serv_stuff.c *===================*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩亚洲另类| 韩国理伦片一区二区三区在线播放| 亚洲精品一区二区三区蜜桃下载| 精品视频一区二区三区免费| 欧美日韩中文字幕精品| 欧美精品丝袜中出| 911精品国产一区二区在线| 欧美一区欧美二区| 久久久久久夜精品精品免费| 欧美激情一区二区三区| 亚洲欧洲国产日本综合| 亚洲综合一区在线| 日韩专区欧美专区| 国产精品一区二区久久精品爱涩| 成人性生交大片免费看中文| 色综合久久中文综合久久牛| 欧美性色黄大片| 在线免费av一区| 欧美精品亚洲二区| 日本一区二区三区视频视频| 亚洲欧美视频在线观看视频| 亚洲制服欧美中文字幕中文字幕| 亚洲成人久久影院| 国产成人精品影视| 欧美色男人天堂| 久久精品一级爱片| 亚洲影院在线观看| 国产一区二区免费视频| 一本一道久久a久久精品| 欧美一级专区免费大片| 国产欧美日本一区视频| 亚洲成a人v欧美综合天堂下载 | 91黄色激情网站| 午夜精品一区二区三区免费视频| 亚洲一区二区视频| 高清国产午夜精品久久久久久| 国产精品一二二区| 青青国产91久久久久久| 欧美日韩高清一区二区三区| 亚洲综合成人网| 制服.丝袜.亚洲.中文.综合| 蜜芽一区二区三区| 久久免费精品国产久精品久久久久| 精品亚洲欧美一区| 国产午夜精品一区二区三区视频 | 国产一区二区不卡老阿姨| 精品久久久久久久久久久久包黑料 | 午夜精品久久久久久久蜜桃app| 欧美日韩中文另类| 精品一区二区三区免费毛片爱| 91精品国产色综合久久不卡电影| 蜜桃91丨九色丨蝌蚪91桃色| 久久免费偷拍视频| 91麻豆高清视频| 亚洲成人av一区二区| 日韩欧美激情在线| 国产精品一区二区三区四区| **性色生活片久久毛片| 欧美色大人视频| 久久成人18免费观看| 国产精品免费aⅴ片在线观看| 在线日韩一区二区| 国内精品国产成人国产三级粉色 | 精品三级av在线| 不卡高清视频专区| 日韩精品成人一区二区在线| 久久婷婷久久一区二区三区| 91日韩精品一区| 蜜桃视频免费观看一区| 亚洲少妇屁股交4| 日韩三级在线免费观看| 不卡视频免费播放| 久久精品99久久久| 亚洲精品免费电影| 久久嫩草精品久久久精品一| 欧美亚洲日本一区| 国产成人免费9x9x人网站视频| 亚洲一区视频在线| 国产精品免费视频观看| 日韩一二三区视频| 欧美性色综合网| 成人h动漫精品一区二| 久久精品国产99国产精品| 亚洲伦理在线精品| 国产女人aaa级久久久级| 69久久夜色精品国产69蝌蚪网| 粗大黑人巨茎大战欧美成人| 久久国产精品72免费观看| 亚洲一区免费观看| 亚洲欧洲av色图| 久久综合色综合88| 欧美一级免费大片| 欧洲另类一二三四区| 国产91精品在线观看| 久久成人免费网| 免费欧美日韩国产三级电影| 亚洲国产精品久久久男人的天堂| ...xxx性欧美| 综合在线观看色| 国产精品久久久久aaaa樱花| 久久精品一区四区| 国产无人区一区二区三区| 精品久久五月天| 精品成人免费观看| www国产精品av| www成人在线观看| 久久女同互慰一区二区三区| 精品欧美乱码久久久久久1区2区| 5858s免费视频成人| 欧美日韩在线一区二区| 欧美日韩中文字幕精品| 欧美日韩免费一区二区三区| 欧美性猛交xxxx黑人交| 精品视频资源站| 91精品国产综合久久久久久久久久| 欧美在线综合视频| 欧美亚洲禁片免费| 91精品在线麻豆| 日韩欧美亚洲国产精品字幕久久久| 日韩一区二区在线免费观看| 日韩欧美国产麻豆| 久久综合九色综合欧美亚洲| 欧美高清在线视频| 最近中文字幕一区二区三区| 亚洲精品少妇30p| 亚洲国产美国国产综合一区二区| 三级久久三级久久| 精品一区二区三区视频| 成人午夜私人影院| 在线欧美一区二区| 日韩午夜精品视频| 国产日韩欧美一区二区三区乱码 | 日一区二区三区| 极品销魂美女一区二区三区| 国产成人aaa| 色偷偷一区二区三区| 精品视频一区二区三区免费| 日韩免费性生活视频播放| 国产欧美日韩三区| 有码一区二区三区| 久久99精品国产麻豆婷婷洗澡| 国产99精品视频| 欧美日韩五月天| 久久人人超碰精品| 亚洲自拍偷拍图区| 国产美女精品人人做人人爽| 99综合电影在线视频| 51午夜精品国产| 国产丝袜欧美中文另类| 亚洲一区欧美一区| 国产成人免费在线观看不卡| 色噜噜久久综合| 亚洲精品一区二区三区蜜桃下载 | 欧美日韩国产一级二级| 久久―日本道色综合久久| 亚洲精品美国一| 国产一区二区三区精品视频| 在线精品视频一区二区| 久久久国际精品| 亚洲成人免费电影| 91一区二区三区在线播放| 欧美成人艳星乳罩| 亚洲高清不卡在线| 成人一道本在线| 精品成人一区二区| 天天av天天翘天天综合网| 不卡电影一区二区三区| ww亚洲ww在线观看国产| 午夜精品久久久久久久久久久| 成人avav影音| 国产日韩欧美激情| 理论电影国产精品| 欧美欧美午夜aⅴ在线观看| 综合久久一区二区三区| 国产成人免费xxxxxxxx| 日韩免费福利电影在线观看| 亚洲一卡二卡三卡四卡五卡| 成人综合在线视频| 2021久久国产精品不只是精品| 亚洲福利一区二区| 欧美亚洲一区二区三区四区| 自拍偷自拍亚洲精品播放| 国产成人自拍网| 26uuu欧美| 国产美女视频一区| 久久综合久久综合久久综合| 久久国内精品视频| 日韩亚洲欧美在线| 日本不卡的三区四区五区| 欧美精品三级在线观看| 亚洲成a人片综合在线| 精品婷婷伊人一区三区三| 亚洲愉拍自拍另类高清精品| 欧洲国内综合视频| 亚洲综合一区二区三区| 欧美日韩激情一区二区| 午夜视黄欧洲亚洲| 欧美欧美午夜aⅴ在线观看| 婷婷开心久久网| 91精品国产麻豆|