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

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

?? util_str.c

?? MC Linux/Unix 終端下文件管理器
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*    Unix SMB/Netbios implementation.   Version 1.9.   Samba utility functions   Copyright (C) Andrew Tridgell 1992-1998      This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.      This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.      You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/#include "includes.h"extern int DEBUGLEVEL;static char *last_ptr=NULL;void set_first_token(char *ptr){	last_ptr = ptr;}/****************************************************************************  Get the next token from a string, return False if none found  handles double-quotes. Based on a routine by GJC@VILLAGE.COM. Extensively modified by Andrew.Tridgell@anu.edu.au****************************************************************************/BOOL next_token(char **ptr,char *buff,char *sep, size_t bufsize){  char *s;  BOOL quoted;  size_t len=1;  if (!ptr) ptr = &last_ptr;  if (!ptr) return(False);  s = *ptr;  /* default to simple separators */  if (!sep) sep = " \t\n\r";  /* find the first non sep char */  while(*s && strchr(sep,*s)) s++;  /* nothing left? */  if (! *s) return(False);  /* copy over the token */  for (quoted = False; len < bufsize && *s && (quoted || !strchr(sep,*s)); s++)    {	    if (*s == '\"') {		    quoted = !quoted;	    } else {		    len++;		    *buff++ = *s;	    }    }  *ptr = (*s) ? s+1 : s;    *buff = 0;  last_ptr = *ptr;  return(True);}/****************************************************************************Convert list of tokens to array; dependent on above routine.Uses last_ptr from above - bit of a hack.****************************************************************************/char **toktocliplist(int *ctok, char *sep){  char *s=last_ptr;  int ictok=0;  char **ret, **iret;  if (!sep) sep = " \t\n\r";  while(*s && strchr(sep,*s)) s++;  /* nothing left? */  if (!*s) return(NULL);  do {    ictok++;    while(*s && (!strchr(sep,*s))) s++;    while(*s && strchr(sep,*s)) *s++=0;  } while(*s);  *ctok=ictok;  s=last_ptr;  if (!(ret=iret=malloc(ictok*sizeof(char *)))) return NULL;    while(ictok--) {        *iret++=s;    while(*s++);    while(!*s) s++;  }  return ret;}/*******************************************************************  case insensitive string compararison********************************************************************/int StrCaseCmp(const char *s, const char *t){  /* compare until we run out of string, either t or s, or find a difference */  /* We *must* use toupper rather than tolower here due to the     asynchronous upper to lower mapping.   */#if !defined(KANJI_WIN95_COMPATIBILITY)  /*   * For completeness we should put in equivalent code for code pages   * 949 (Korean hangul) and 950 (Big5 Traditional Chinese) here - but   * doubt anyone wants Samba to behave differently from Win95 and WinNT   * here. They both treat full width ascii characters as case senstive   * filenames (ie. they don't do the work we do here).   * JRA.   */  if(lp_client_code_page() == KANJI_CODEPAGE)  {    /* Win95 treats full width ascii characters as case sensitive. */    int diff;    for (;;)    {      if (!*s || !*t)	    return toupper (*s) - toupper (*t);      else if (is_sj_alph (*s) && is_sj_alph (*t))      {        diff = sj_toupper2 (*(s+1)) - sj_toupper2 (*(t+1));        if (diff)          return diff;        s += 2;        t += 2;      }      else if (is_shift_jis (*s) && is_shift_jis (*t))      {        diff = ((int) (unsigned char) *s) - ((int) (unsigned char) *t);        if (diff)          return diff;        diff = ((int) (unsigned char) *(s+1)) - ((int) (unsigned char) *(t+1));        if (diff)          return diff;        s += 2;        t += 2;      }      else if (is_shift_jis (*s))        return 1;      else if (is_shift_jis (*t))        return -1;      else       {        diff = toupper (*s) - toupper (*t);        if (diff)          return diff;        s++;        t++;      }    }  }  else#endif /* KANJI_WIN95_COMPATIBILITY */  {    while (*s && *t && toupper(*s) == toupper(*t))    {      s++;      t++;    }    return(toupper(*s) - toupper(*t));  }}/*******************************************************************  case insensitive string compararison, length limited********************************************************************/int StrnCaseCmp(const char *s, const char *t, size_t n){  /* compare until we run out of string, either t or s, or chars */  /* We *must* use toupper rather than tolower here due to the     asynchronous upper to lower mapping.   */#if !defined(KANJI_WIN95_COMPATIBILITY)  /*   * For completeness we should put in equivalent code for code pages   * 949 (Korean hangul) and 950 (Big5 Traditional Chinese) here - but   * doubt anyone wants Samba to behave differently from Win95 and WinNT   * here. They both treat full width ascii characters as case senstive   * filenames (ie. they don't do the work we do here).   * JRA.    */  if(lp_client_code_page() == KANJI_CODEPAGE)  {    /* Win95 treats full width ascii characters as case sensitive. */    int diff;    for (;n > 0;)    {      if (!*s || !*t)        return toupper (*s) - toupper (*t);      else if (is_sj_alph (*s) && is_sj_alph (*t))      {        diff = sj_toupper2 (*(s+1)) - sj_toupper2 (*(t+1));        if (diff)          return diff;        s += 2;        t += 2;        n -= 2;      }      else if (is_shift_jis (*s) && is_shift_jis (*t))      {        diff = ((int) (unsigned char) *s) - ((int) (unsigned char) *t);        if (diff)          return diff;        diff = ((int) (unsigned char) *(s+1)) - ((int) (unsigned char) *(t+1));        if (diff)          return diff;        s += 2;        t += 2;        n -= 2;      }      else if (is_shift_jis (*s))        return 1;      else if (is_shift_jis (*t))        return -1;      else       {        diff = toupper (*s) - toupper (*t);        if (diff)          return diff;        s++;        t++;        n--;      }    }    return 0;  }  else#endif /* KANJI_WIN95_COMPATIBILITY */  {    while (n && *s && *t && toupper(*s) == toupper(*t))    {      s++;      t++;      n--;    }    /* not run out of chars - strings are different lengths */    if (n)       return(toupper(*s) - toupper(*t));    /* identical up to where we run out of chars,        and strings are same length */    return(0);  }}/*******************************************************************  compare 2 strings ********************************************************************/BOOL strequal(const char *s1, const char *s2){  if (s1 == s2) return(True);  if (!s1 || !s2) return(False);    return(StrCaseCmp(s1,s2)==0);}/*******************************************************************  compare 2 strings up to and including the nth char.  ******************************************************************/BOOL strnequal(const char *s1,const char *s2,size_t n){  if (s1 == s2) return(True);  if (!s1 || !s2 || !n) return(False);    return(StrnCaseCmp(s1,s2,n)==0);}/*******************************************************************  compare 2 strings (case sensitive)********************************************************************/BOOL strcsequal(const char *s1,const char *s2){  if (s1 == s2) return(True);  if (!s1 || !s2) return(False);    return(strcmp(s1,s2)==0);}/*******************************************************************  convert a string to lower case********************************************************************/void strlower(char *s){  while (*s)  {#if !defined(KANJI_WIN95_COMPATIBILITY)  /*   * For completeness we should put in equivalent code for code pages   * 949 (Korean hangul) and 950 (Big5 Traditional Chinese) here - but   * doubt anyone wants Samba to behave differently from Win95 and WinNT   * here. They both treat full width ascii characters as case senstive   * filenames (ie. they don't do the work we do here).   * JRA.    */    if(lp_client_code_page() == KANJI_CODEPAGE)    {      /* Win95 treats full width ascii characters as case sensitive. */      if (is_shift_jis (*s))      {        if (is_sj_upper (s[0], s[1]))          s[1] = sj_tolower2 (s[1]);        s += 2;      }      else if (is_kana (*s))      {        s++;      }      else      {        if (isupper(*s))          *s = tolower(*s);        s++;      }    }    else#endif /* KANJI_WIN95_COMPATIBILITY */    {      size_t skip = skip_multibyte_char( *s );      if( skip != 0 )        s += skip;      else      {        if (isupper(*s))          *s = tolower(*s);        s++;      }    }  }}/*******************************************************************  convert a string to upper case********************************************************************/void strupper(char *s){  while (*s)  {#if !defined(KANJI_WIN95_COMPATIBILITY)  /*   * For completeness we should put in equivalent code for code pages   * 949 (Korean hangul) and 950 (Big5 Traditional Chinese) here - but   * doubt anyone wants Samba to behave differently from Win95 and WinNT   * here. They both treat full width ascii characters as case senstive   * filenames (ie. they don't do the work we do here).   * JRA.    */    if(lp_client_code_page() == KANJI_CODEPAGE)    {      /* Win95 treats full width ascii characters as case sensitive. */      if (is_shift_jis (*s))      {        if (is_sj_lower (s[0], s[1]))          s[1] = sj_toupper2 (s[1]);        s += 2;      }      else if (is_kana (*s))      {        s++;      }      else      {        if (islower(*s))          *s = toupper(*s);        s++;      }    }    else#endif /* KANJI_WIN95_COMPATIBILITY */    {      size_t skip = skip_multibyte_char( *s );      if( skip != 0 )        s += skip;      else      {        if (islower(*s))          *s = toupper(*s);        s++;      }    }  }}/*******************************************************************  convert a string to "normal" form********************************************************************/void strnorm(char *s){  extern int case_default;  if (case_default == CASE_UPPER)    strupper(s);  else    strlower(s);}/*******************************************************************check if a string is in "normal" case********************************************************************/BOOL strisnormal(char *s){  extern int case_default;  if (case_default == CASE_UPPER)    return(!strhaslower(s));  return(!strhasupper(s));}/****************************************************************************  string replace****************************************************************************/void string_replace(char *s,char oldc,char newc){  size_t skip;  while (*s)  {    skip = skip_multibyte_char( *s );    if( skip != 0 )      s += skip;    else    {      if (oldc == *s)        *s = newc;      s++;    }  }}/*******************************************************************skip past some strings in a buffer********************************************************************/char *skip_string(char *buf,size_t n){  while (n--)    buf += strlen(buf) + 1;  return(buf);}/******************************************************************* Count the number of characters in a string. Normally this will be the same as the number of bytes in a string for single byte strings, but will be different for multibyte. 16.oct.98, jdblair@cobaltnet.com.********************************************************************/size_t str_charnum(const char *s){  size_t len = 0;    while (*s != '\0') {    int skip = skip_multibyte_char(*s);    s += (skip ? skip : 1);    len++;  }  return len;}/*******************************************************************trim the specified elements off the front and back of a string********************************************************************/BOOL trim_string(char *s,const char *front,const char *back){  BOOL ret = False;  size_t front_len = (front && *front) ? strlen(front) : 0;  size_t back_len = (back && *back) ? strlen(back) : 0;  size_t s_len;  while (front_len && strncmp(s, front, front_len) == 0)  {    char *p = s;    ret = True;    while (1)    {      if (!(*p = p[front_len]))        break;      p++;    }  }  /*   * We split out the multibyte code page   * case here for speed purposes. Under a   * multibyte code page we need to walk the   * string forwards only and multiple times.   * Thanks to John Blair for finding this   * one. JRA.   */  if(back_len)  {    if(!is_multibyte_codepage())    {      s_len = strlen(s);      while ((s_len >= back_len) &&              (strncmp(s + s_len - back_len, back, back_len)==0))        {        ret = True;        s[s_len - back_len] = '\0';        s_len = strlen(s);      }    }    else    {      /*       * Multibyte code page case.       * Keep going through the string, trying       * to match the 'back' string with the end       * of the string. If we get a match, truncate       * 'back' off the end of the string and       * go through the string again from the       * start. Keep doing this until we have       * gone through the string with no match       * at the string end.       */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色网站国产精品| 久久欧美一区二区| 欧美经典一区二区三区| 亚洲成a人片在线观看中文| 国产一区二区三区电影在线观看 | 麻豆成人综合网| 日本韩国欧美在线| 国产日韩av一区| 韩国欧美一区二区| 91精品国产麻豆| 亚洲午夜电影网| 色婷婷综合激情| 欧美激情一区三区| 精品一区二区三区视频在线观看| 欧美亚洲精品一区| 国产精品久久久久aaaa樱花| 国产精品自在欧美一区| 精品国产亚洲在线| 久久国产精品99久久久久久老狼| 欧美手机在线视频| 亚洲女同女同女同女同女同69| 国产精品911| 久久久蜜臀国产一区二区| 秋霞午夜av一区二区三区| 欧美精品欧美精品系列| 亚洲国产视频一区| 欧美午夜视频网站| 午夜精品免费在线| 欧美日韩五月天| 污片在线观看一区二区| 欧美日产在线观看| 日韩中文字幕区一区有砖一区 | 久久一二三国产| 激情文学综合丁香| 久久久久久电影| 国产一区二区成人久久免费影院| 国产亚洲污的网站| 成人性视频免费网站| 欧美激情在线观看视频免费| 成人午夜视频网站| 亚洲色图欧美在线| 欧美日韩一区二区在线观看| 日本成人中文字幕在线视频| 日韩三级.com| 国产成人自拍网| 亚洲色欲色欲www| 欧美性猛交xxxx黑人交| 日本不卡的三区四区五区| 精品久久一区二区| 丰满少妇久久久久久久| 亚洲裸体xxx| 欧美精品一二三| 国产一区二区美女诱惑| 1024精品合集| 欧美一三区三区四区免费在线看| 精品一区二区在线视频| 国产精品灌醉下药二区| 欧美亚洲一区三区| 久久精品国产亚洲aⅴ| 国产精品成人免费在线| 欧美日本在线播放| 国产精品1区二区.| 亚洲一区在线观看免费| 国产亚洲福利社区一区| 色哟哟一区二区在线观看| 精彩视频一区二区| 日韩毛片在线免费观看| 日韩欧美综合在线| 欧亚洲嫩模精品一区三区| 久久99国产精品久久99果冻传媒| 自拍av一区二区三区| 日韩美女一区二区三区四区| 色悠悠亚洲一区二区| 狠狠色狠狠色综合系列| 伊人色综合久久天天人手人婷| 日韩午夜av电影| 欧洲生活片亚洲生活在线观看| 国产精品一区二区三区99 | 中文字幕精品一区二区精品绿巨人| 色婷婷激情久久| 国产精品一区二区久久不卡| 亚洲国产成人av网| 国产精品美女久久久久久2018 | 国产成人免费在线观看| 婷婷六月综合亚洲| 亚洲视频一区二区免费在线观看 | 亚洲人成伊人成综合网小说| 亚洲精品在线观看视频| 欧美日韩国产一区| 色综合久久久久久久久| 国产成人在线网站| 极品少妇一区二区| 日本视频一区二区| 亚洲在线观看免费| 亚洲少妇最新在线视频| 欧美国产精品中文字幕| 亚洲精品一区二区三区99| 欧美三级三级三级| 欧美优质美女网站| 99精品久久只有精品| 成人高清视频在线观看| 国产在线播精品第三| 久久精品国产在热久久| 人人爽香蕉精品| 久久国产婷婷国产香蕉| 久久疯狂做爰流白浆xx| 久久成人免费电影| 精品亚洲aⅴ乱码一区二区三区| 丝袜亚洲精品中文字幕一区| 五月激情六月综合| 日韩激情视频网站| 美女视频网站黄色亚洲| 久久国产成人午夜av影院| 精品在线免费观看| 高清beeg欧美| 99精品久久只有精品| 91成人免费电影| 欧美日韩国产区一| 欧美一区二区三区在| 欧美刺激午夜性久久久久久久| 精品乱人伦一区二区三区| 久久欧美一区二区| 国产精品国产三级国产专播品爱网| 国产精品久久久久久久久免费樱桃| 国产精品不卡一区| 亚洲一区在线观看免费观看电影高清| 亚洲一区二区欧美激情| 日韩avvvv在线播放| 国产在线一区观看| 成人黄色大片在线观看| 91麻豆精品一区二区三区| 欧美性色aⅴ视频一区日韩精品| 欧美日韩综合在线免费观看| 91精品国产色综合久久不卡电影 | eeuss鲁片一区二区三区| 91亚洲男人天堂| 91精品国产麻豆| 国产精品婷婷午夜在线观看| 亚洲一区二区三区三| 久久99久国产精品黄毛片色诱| 成人不卡免费av| 91久久久免费一区二区| 91精品欧美久久久久久动漫| 国产亚洲一区二区三区在线观看 | 毛片av一区二区| 不卡的av在线| 在线综合亚洲欧美在线视频| 欧美激情艳妇裸体舞| 亚洲成人福利片| 国产成人h网站| 4hu四虎永久在线影院成人| 国产视频一区二区三区在线观看| 亚洲伦在线观看| 国产一区在线观看麻豆| 欧美自拍丝袜亚洲| 久久久99久久| 无吗不卡中文字幕| 99久久精品免费看国产免费软件| 在线播放日韩导航| 国产精品久久久久久久浪潮网站 | 一区二区三区高清不卡| 老汉av免费一区二区三区| 99精品视频在线观看免费| 精品99久久久久久| 日韩专区在线视频| 91免费精品国自产拍在线不卡| 精品福利一二区| 丝瓜av网站精品一区二区| 97久久精品人人做人人爽| 久久五月婷婷丁香社区| 视频在线观看91| 欧美亚洲综合在线| 亚洲色图在线视频| 成人h精品动漫一区二区三区| 日韩欧美精品在线| 三级欧美在线一区| 在线一区二区三区四区五区| 国产精品免费视频网站| 国内久久婷婷综合| 精品久久一区二区三区| 奇米综合一区二区三区精品视频| 在线亚洲一区二区| 一区二区高清免费观看影视大全 | 91 com成人网| 一区二区三区不卡在线观看| av亚洲产国偷v产偷v自拍| 久久久综合激的五月天| 国产乱子轮精品视频| 日韩精品资源二区在线| 日韩电影在线观看一区| 欧美丰满少妇xxxxx高潮对白| 亚洲在线中文字幕| 91久久精品一区二区二区| 亚洲日本丝袜连裤袜办公室| 暴力调教一区二区三区| 国产精品久久久久久久久果冻传媒| 国产精选一区二区三区| 国产三级欧美三级日产三级99| 韩国成人在线视频| 美美哒免费高清在线观看视频一区二区|