⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compat.c

📁 cTorrent advanced 3.3.2。是对 CTorrent 的一个改进版本。这是目前的最新版。
💻 C
字号:
#include "def.h"/* compat.c:  Copyright 2007 Dennis Holmes  (dholmes@rahul.net) *            except as noted. */#ifdef HAVE_SYS_PARAM_H#include <sys/param.h>#endif#include "compat.h"#ifndef HAVE_CLOCK_GETTIMEint clock_gettime(clockid_t clock_id, struct timespec *tp){  int r = 0;#if defined(HAVE_GETTIMEOFDAY)  struct timeval tv;  if( (r = gettimeofday(&tv, (struct timezone *)0)) == 0 ){    tp->tv_sec = tv.tv_sec;    tp->tv_nsec = tv.tv_usec * 1000;  }#else#error No suitable precision timing functions appear to be available!#error Please report this problem and identify your system platform.#endif  return r;}#endif#ifndef HAVE_VSNPRINTFint vsnprintf(char *str, size_t size, const char *format, va_list ap){  int r;  char *buffer[4*MAXPATHLEN];  /* git-r-dun */  if( (r = vsprintf(buffer, format, ap)) >= 0){    strncpy(str, buffer, size-1);    str[size] = '\0';  }  return r;}#endif#ifndef HAVE_SNPRINTFint snprintf(char *str, size_t size, const char *format, ...){  int r;  va_list ap;  va_start(ap, format);  r = vsnprintf(str, size, format, ap);  va_end(ap);  return r;}#endif#ifndef HAVE_STRNSTR#include <string.h>/* FUNCTION PROGRAMER: Siberiaic Sang */char *strnstr(const char *haystack, const char *needle, size_t haystacklen){  char *p;  ssize_t plen;  ssize_t len = strlen(needle);  if( *needle == '\0' )    return (char *)haystack;  plen = haystacklen;  for( p = (char *)haystack;       p != (char *)0;       p = (char *)memchr(p + 1, *needle, plen-1) ){    plen = haystacklen - (p - haystack);    if( plen < len ) return (char *)0;    if( strncmp(p, needle, len) == 0 )      return (p);  }  return (char*) 0;}#endif#ifndef HAVE_STRNCASECMP#include <ctype.h>int strncasecmp(const char *s1, const char *s2, size_t len){  unsigned char c1, c2;  int r = 0;  for( ; r==0 && len && *s1 && *s2; s1++, s2++, len-- ){    if( *s1 == *s2 ) continue;    c1 = (unsigned char)tolower((int)*s1);    c2 = (unsigned char)tolower((int)*s2);    if( c1 == c2 ) continue;    else if( c1 < c2 ) r = -1;    else if( c1 > c2 ) r = 1;  }  if( r==0 && len ){    if( !*s1 && !*s2 ) r = 0;    else if( *s1 ) r = 1;    else r = -1;  }  return r;}#endif#ifndef HAVE_STRCASECMPint strcasecmp(const char *s1, const char *s2){  return strncasecmp(s1, s2, strlen(s1));}#endif#ifndef HAVE_RANDOMlong random(void){  long result;  unsigned long maxlong = 0, i = RAND_MAX;  maxlong--;  maxlong /= 2;  result = (long)rand();  while( i < maxlong ){    result = (result * 2UL*(RAND_MAX+1UL)) | rand();    i *= 2UL*(RAND_MAX+1UL);  }  return (result < 0) ? -result : result;}void srandom(unsigned long seed){  unsigned useed;  if( sizeof(seed) > sizeof(useed) ){    unsigned long mask = 0xffff;    int i = 2;    while( i < sizeof(useed) ){      mask = (mask << 16) | 0xffff;      i += 2;    }    useed = (unsigned)(seed & mask);  }else useed = seed;  srand(useed);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -