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

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

?? log.c

?? 一個使用des加密傳輸的unix下的login程序的服務器端和客戶端
?? C
字號:
/* * @(#) log.c  RCS: $Revision: 1.6 $ $Date: 95/03/08 15:54:50 $ * * Logging facility * * #define _USE_SYSLOG if you want to use logging via a socket to syslogd * instead of logging to a file.  I don't trust syslog's socket to be secure, * so I don't use syslog;  Your needs may be different.  Also, syslog does * a fork(), making life even more complex. */#define _POSIX_SOURCE#include <unistd.h>		/* close write _exit */#include <stdlib.h>		/* atexit */#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>		/* S_IRUSR S_IWUSR */#include <fcntl.h>		/* O_RDWR */#include <string.h>		/* strerror strlen for braindamaged vsprintf */#include <errno.h>		/* errno */#include <time.h>		/* time() localtime() strftime() struct tms */#include <sys/utsname.h>	/* uname() struct utsname */#if defined(_USE_SYSLOG)#include <syslog.h>#endif#include "log.h"#if (defined(sparc) || defined(sun3)) && !defined(__SOLARIS__)#define atexit	on_exit#endif#define SYSLOG_FD	32767		/* run-time value to enable syslog */#define LOGBUFSIZ	BUFSIZ		/* POSIX2 may have a better value */static int  logFd = 2;			/* stderr */static char logBuf[LOGBUFSIZ];static int  logOpen = 0;  /* non-zero if openLog has ever been successful */static char *syslogId = "";	/* long-lived storage */extern char *progName;/* * Close the log file if it's open.  Don't do anything if openLog has * never been called.  Shut down syslog if it was a syslog connection. */void closeLog() {   if (logOpen)	{		/* only close a log if it is open */      if (logFd == SYSLOG_FD) {#if defined(_USE_SYSLOG)	/* to allow machines w/o syslog */	 closelog();#endif	 logFd = -1;      }      if (logFd >= 0) {	 close(logFd);      }      logFd = -1;      logOpen = 0;   }}/* * Open the specified log file.  If the open fails, the existing logfile  * remains unchanged; if called multiple times on same log, works correctly. * the log() function acts like fprintf(stderr,...) until the first successful * call to openLog(), after which it formats like syslog(). */int openLog(fname)   char *fname;{   register int newlog = SYSLOG_FD;	/* default is success */#if defined(_USE_SYSLOG)   if (logFd != SYSLOG_FD) {		/* I don't trust syslog to reopen OK */#if !defined(__bsdi__) && !defined(linux)      /*        * Return value is not documented in BSD brick.       *       * BSD is braindamaged: How do you detect failure? it can definitely fail       * (It often forks and opens a TCP socket to a remote machine.)       * God only knows what BSD does if you call openlog twice; do you?       * If so, please send mail to the author, so I can fix this code properly.       * If your host is one of the ones that does't return a result, add       * "|| !defined(__mymachine) above and add a -D__mymachine to CFLAGS.       *       * The following machines do have a return value for syslog:       *    HP-UX       *    DEC Alpha OSF1       *       * I've been told that BSDI's BSD/386 doesn't.       */      newlog = #endif      openlog(syslogId, LOG_NDELAY|LOG_NOWAIT, LOG_AUTH);      /*       * We must open the log connection immediately (NDELAY) so that we don't        * use file descriptors 0,1, or 2 for the log connection fd.       */      if (newlog >= 0) {	 newlog = SYSLOG_FD;	/* a value to signal syslog is being used */      }   }#else   newlog = open(fname, O_CREAT|O_APPEND|O_WRONLY|O_NOCTTY, S_IRUSR|S_IWUSR);#endif   if (newlog < 0) {		      return -1;   }   if (logFd != SYSLOG_FD) {      closeLog();   }   logFd = newlog;   logOpen = 1;   newlog = atexit(closeLog);		/* close log file upon exit */   return 0;}/* * Get the local host name  (not the domain name!) * * A bombproof version of BSD's gethostname, which always succeeds and * has a sensible return value.  * * returns in the array hostName the '\0' terminated name of the local host.   * The size argument specifies space (in bytes) available.   * Returns the number of characters stored not including the '\0'.    * If the host cannot be determined, 0 is returned. * The array returned is always '\0'-terminated except if size is 0. * Only the characters before the first dot '.' character are returned. * * Returns: the number of characters stored (not including the final '\0'); */static size_t getHostName(hostName, size)   register char *hostName;   register size_t size;{    struct utsname hstats;    register char *chp;    int res;    register size_t i = 0;    res = uname(&hstats);    if ((res >= 0) && size) {       chp = hstats.nodename;       --size;       if (size) do {	  if ((*chp == '.') || (*chp == '\0')) {	      break;	  }	  *hostName++ = *chp++;	  i++;       } while (--size);       *hostName = '\0';    }    return i;}#if !defined(__STDC__) 	/* { */#include <varargs.h>void log(va_alist) va_dcl#else			/* } { */#include <stdarg.h>#if defined(__STDC__) || defined(__cplusplus) 	/* { */void log(char *fmt, ...) #else			/* } { */void log(fmt)    char *fmt;#endif	   /* } */#endif	/* } */{   size_t count = 0;   int ok = 1;   char *chp = logBuf;   time_t now = time((time_t *)0);   va_list args;#if !defined(__STDC__)	/* { */   char *fmt;   va_start(args); fmt = va_arg(args, char *);#else /* } { */   va_start(args , fmt);#endif /* } */   if (logFd != -1) {		/* do nothing if log fd not valid */      if (logOpen && (logFd != SYSLOG_FD)) {	 /*	  * Prepend the date time, and hostname like syslog does.	  */	 /* strftime is in <time.h> for ANSI C */	 count  = strftime(chp, 64, "%b %d %H:%M:%S ", localtime(&now));	 chp   += count;	 count  = getHostName(chp, 64);	 chp   += count;	 if (count != 0) {	    *chp++ = ' ';	    *chp = '\0';	 }	 if (chp != logBuf) {	    *chp++ = ':';	    *chp++ = ' ';	    *chp = '\0';	 }      }      count = vsprintf(chp, fmt, args);      /*        * If you get a compiler warning on the vsprintf line stating       * pointer to int  conversion, you're in big trouble.  This       * attempts to "fix" the braindamage.       *       * ANSI C states vsprintf returns the character count.         * Some BSD machines (even when compiled with ANSI compilers!)        * return a pointer to the first argument instead.       */      if (((char *) count) == chp) {	 while (*chp != '\0') {	    chp++;	 }      } else {	 chp += count;      }      count = chp - &logBuf[0];      if (count > 0) {		/* if log message not empty */	 /*	  * This is a kludge for now.  Posix 2 has a constant LINE_MAX which	  * may solve this problem.  Unfortunately, I don't have a copy of 	  * the posix 2 standard.	  */	 if (count > LOGBUFSIZ) {	    count = 37;	/* length of message below + 1 for the '\0' */	    memcpy(logBuf, "PANIC! log.c:log() buffer overflow!\n", count);	    ok = 0;	 }	 if (logFd == SYSLOG_FD) {#if defined(_USE_SYSLOG)	    syslog(LOG_INFO, "%-.*s", count, logBuf);#endif	 } else {	    /* Use write here instead of stdio to make atomic updates */	    write(logFd, logBuf, count);	 }	 if (!ok) {	    closeLog();	    _exit(1);	 }      }   }   va_end(args);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本va午夜在线电影| 欧美制服丝袜第一页| 久久精品国产99| 婷婷成人激情在线网| 日本v片在线高清不卡在线观看| 一区二区三区在线观看视频 | 午夜国产精品一区| 精品一区二区影视| 不卡视频一二三| 欧美伊人久久久久久久久影院 | 一区二区三区四区蜜桃| 午夜视频一区二区| 国产福利不卡视频| 欧美日韩在线播放三区四区| 久久亚洲一区二区三区四区| 亚洲女人的天堂| 国产高清一区日本| 欧美一二三区在线| 久久亚洲二区三区| 亚洲日本在线视频观看| 国内国产精品久久| 欧美日韩国产乱码电影| 中文字幕av一区 二区| 六月丁香综合在线视频| 91久久精品一区二区| 久久亚洲欧美国产精品乐播 | 91精品国产综合久久蜜臀| 久久久高清一区二区三区| 午夜亚洲福利老司机| 99re这里只有精品6| 国产精品视频在线看| 国产成人在线影院| 国产欧美一区二区三区沐欲| 免费成人在线观看| 欧美日韩高清在线播放| 亚洲一二三区不卡| 欧美日韩一级视频| 亚洲自拍偷拍九九九| 欧美日韩在线播| 日韩中文字幕亚洲一区二区va在线| 一本大道久久a久久综合| 亚洲男人的天堂在线aⅴ视频| 成人app软件下载大全免费| 国产精品二区一区二区aⅴ污介绍| 国产一区二区三区美女| 日本一区二区成人| 在线观看欧美黄色| 日本大胆欧美人术艺术动态| 欧美精品一区二区不卡| 国产不卡一区视频| 视频在线在亚洲| 久久这里只精品最新地址| 成人午夜视频在线| 亚洲已满18点击进入久久| 91麻豆精品国产自产在线| 国产在线视视频有精品| 中文字幕一区二区视频| 欧美肥大bbwbbw高潮| 成人中文字幕电影| 性久久久久久久久久久久 | 日韩高清在线不卡| 国产视频一区在线播放| 日本高清无吗v一区| 久久91精品久久久久久秒播| 亚洲欧美日韩国产成人精品影院 | 国产一区999| 亚洲福利视频导航| 自拍偷拍亚洲欧美日韩| 91麻豆精品91久久久久久清纯 | 一区二区三区国产| 亚洲国产精品黑人久久久| 亚洲一区二区三区四区五区中文| 日韩一区二区视频| 在线视频亚洲一区| 99久久精品免费精品国产| 国产乱码精品一区二区三区五月婷| 亚洲午夜视频在线| 一区二区免费在线| 国产三级精品三级| 欧美日本一区二区三区| 成人aa视频在线观看| 蜜臀av亚洲一区中文字幕| 亚洲狼人国产精品| 日韩视频一区二区三区| 在线日韩一区二区| 国产精品99久久久久久久女警| 午夜亚洲福利老司机| 一级女性全黄久久生活片免费| 久久久精品国产免大香伊| 欧美一级夜夜爽| 欧美人伦禁忌dvd放荡欲情| 色中色一区二区| av资源站一区| 91在线精品秘密一区二区| 青娱乐精品视频| 欧美bbbbb| 日韩av不卡在线观看| 天天色 色综合| 日韩和的一区二区| 久久精品噜噜噜成人av农村| 日本一道高清亚洲日美韩| 亚洲欧洲精品一区二区精品久久久| 日韩欧美一卡二卡| 久久久久久一二三区| 久久久精品综合| 91精品国产综合久久福利| 91精品福利在线一区二区三区 | 国产不卡在线播放| 成人午夜免费电影| 精品视频色一区| 久久精品亚洲精品国产欧美kt∨ | 日韩美女一区二区三区四区| 久久嫩草精品久久久精品一| 亚洲欧美一区二区三区极速播放| 夜夜亚洲天天久久| 久久精品国产成人一区二区三区| 国产91在线看| 69久久夜色精品国产69蝌蚪网| 日韩欧美国产电影| 亚洲精品日韩专区silk| 国产高清在线精品| 欧美一区二区三区在线看| 久久视频一区二区| 一区二区成人在线观看| 从欧美一区二区三区| 日韩欧美中文字幕精品| 亚洲国产精品天堂| av网站一区二区三区| 久久亚洲影视婷婷| 久久国产剧场电影| 色综合天天综合网国产成人综合天 | 国产精品久久毛片a| 久久国产综合精品| 欧美精品丝袜久久久中文字幕| 国产精品高潮久久久久无| 国产高清亚洲一区| 国产日产精品1区| 国产一区二区三区日韩| 日韩午夜中文字幕| 婷婷夜色潮精品综合在线| 91丨九色丨蝌蚪富婆spa| 中文字幕日韩一区| 91国产免费看| 亚洲成人在线免费| 日韩欧美国产一二三区| 国产一区二区三区免费观看| 久久久99久久| 国产一区二区三区观看| 国产欧美日韩精品一区| 国产精品影视在线| 亚洲欧美日韩国产另类专区| 欧洲国内综合视频| 久久国产乱子精品免费女| 精品国产一区二区三区久久久蜜月 | 欧美在线影院一区二区| 一区二区免费在线播放| 日韩欧美国产一二三区| 成人黄色免费短视频| 一区二区三区在线观看动漫| 日韩一区二区电影网| 国产成人精品亚洲777人妖| 亚洲午夜精品17c| 欧美一级夜夜爽| 97aⅴ精品视频一二三区| 午夜精品福利一区二区三区蜜桃| 欧美精品一区二区三| 在线视频欧美精品| 成人精品一区二区三区中文字幕| 无吗不卡中文字幕| 久久久久亚洲综合| 日韩免费高清视频| 91精彩视频在线| 成人免费精品视频| 九九九精品视频| 日本三级韩国三级欧美三级| ...xxx性欧美| 国产日韩v精品一区二区| 欧美成人精品二区三区99精品| av午夜一区麻豆| 成人激情黄色小说| 国产成人免费视频网站| 久久 天天综合| 国产精品资源网| 懂色一区二区三区免费观看| 福利视频网站一区二区三区| 九九九久久久精品| 国产美女av一区二区三区| 国产综合色在线| 免费黄网站欧美| 免费观看一级特黄欧美大片| 偷拍亚洲欧洲综合| 久久99精品国产.久久久久| 精品一区二区精品| 成人小视频免费观看| 99久久精品免费精品国产| 欧美日韩综合色| 久久夜色精品国产噜噜av| 国产欧美久久久精品影院| 国产欧美日韩视频一区二区| 亚洲乱码一区二区三区在线观看|