您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ IsFileSep函数代码示例

51自学网 2021-06-01 21:41:12
  C++
这篇教程C++ IsFileSep函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中IsFileSep函数的典型用法代码示例。如果您正苦于以下问题:C++ IsFileSep函数的具体用法?C++ IsFileSep怎么用?C++ IsFileSep使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了IsFileSep函数的21个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: IsAbsoluteFileName

int IsAbsoluteFileName(const char *f){    int off = 0;// Check for quoted strings    for (off = 0; f[off] == '/"'; off++)    {    }#ifdef _WIN32    if (IsFileSep(f[off]) && IsFileSep(f[off + 1]))    {        return true;    }    if (isalpha(f[off]) && f[off + 1] == ':' && IsFileSep(f[off + 2]))    {        return true;    }#endif    if (f[off] == '/')    {        return true;    }    return false;}
开发者ID:patuchov,项目名称:core,代码行数:28,


示例2: CompressPath

int CompressPath(char *dest, const char *src){    char node[CF_BUFSIZE];    int nodelen;    int rootlen;    memset(dest, 0, CF_BUFSIZE);    rootlen = RootDirLength(src);    strncpy(dest, src, rootlen);    for (const char *sp = src + rootlen; *sp != '/0'; sp++)    {        if (IsFileSep(*sp))        {            continue;        }        for (nodelen = 0; (sp[nodelen] != '/0') && (!IsFileSep(sp[nodelen])); nodelen++)        {            if (nodelen > CF_MAXLINKSIZE)            {                Log(LOG_LEVEL_ERR, "Link in path suspiciously large");                return false;            }        }        strncpy(node, sp, nodelen);        node[nodelen] = '/0';        sp += nodelen - 1;        if (strcmp(node, ".") == 0)        {            continue;        }        if (strcmp(node, "..") == 0)        {            if (!ChopLastNode(dest))            {                Log(LOG_LEVEL_DEBUG, "used .. beyond top of filesystem!");                return false;            }            continue;        }        else        {            AddSlash(dest);        }        if (!JoinPath(dest, node))        {            return false;        }    }    return true;}
开发者ID:patuchov,项目名称:core,代码行数:60,


示例3: StringWriter

char *MapNameCopy(const char *s){    Writer *w = StringWriter();    /* c:/a/b -> /cygdrive/c/a/b */    if (s[0] && isalpha(s[0]) && s[1] == ':')    {        WriterWriteF(w, "/cygdrive/%c", s[0]);        s += 2;    }    for (; *s; s++)    {        /* a//b//c -> a/b/c */        /* a//b//c -> a/b/c */        if (IsFileSep(*s) && IsFileSep(*(s + 1)))        {            continue;        }        /* a/b/c -> a/b/c */        WriterWriteChar(w, *s == '//' ? '/' : *s);    }    return StringWriterClose(w);}
开发者ID:fkoner,项目名称:core,代码行数:26,


示例4: DeleteRedundantSlashes

void DeleteRedundantSlashes(char *str){    int move_from;    // Invariant: newpos <= oldpos    int oldpos = RootDirLength(str);    int newpos = oldpos;    while (str[oldpos] != '/0')    {        // Skip over subsequent separators.        while (IsFileSep(str[oldpos]))        {            oldpos++;        }        move_from = oldpos;        // And then skip over the next path component.        while (str[oldpos] != '/0' && !IsFileSep(str[oldpos]))        {            oldpos++;        }        // If next character is file separator, move past it, since we want to keep one.        if (IsFileSep(str[oldpos]))        {            oldpos++;        }        int move_len = oldpos - move_from;        memmove(&str[newpos], &str[move_from], move_len);        newpos += move_len;    }    str[newpos] = '/0';}
开发者ID:npe9,项目名称:core,代码行数:34,


示例5: RootDirLength

int RootDirLength(char *f)  /* Return length of Initial directory in path - */{#ifdef NT  int len;if (IsFileSep(f[0]) && IsFileSep(f[1]))   {   /* UNC style path */   /* Skip over host name */   for (len=2; !IsFileSep(f[len]); len++)      {      if (f[len] == '/0')         {         return len;         }      }      /* Skip over share name */   for (len++; !IsFileSep(f[len]); len++)      {      if (f[len] == '/0')         {         return len;         }      }      /* Skip over file separator */   len++;      return len;   } if ( isalpha(f[0]) && f[1] == ':' && IsFileSep(f[2]) )    {    return 3;    }#endif if (*f == '/')    {    return 1;    }  return 0;}
开发者ID:AsherBond,项目名称:cf22cf3,代码行数:47,


示例6: NTRootDirLength

static int NTRootDirLength(const char *f){    int len;    if (IsFileSep(f[0]) && IsFileSep(f[1]))    {        /* UNC style path */        /* Skip over host name */        for (len = 2; !IsFileSep(f[len]); len++)        {            if (f[len] == '/0')            {                return len;            }        }        /* Skip over share name */        for (len++; !IsFileSep(f[len]); len++)        {            if (f[len] == '/0')            {                return len;            }        }        /* Skip over file separator */        len++;        return len;    }    if (isalpha(f[0]) && f[1] == ':')    {        if (IsFileSep(f[2]))        {            return 3;        }        return 2;    }    return UnixRootDirLength(f);}
开发者ID:patuchov,项目名称:core,代码行数:45,


示例7: UnixRootDirLength

static int UnixRootDirLength(const char *f){    if (IsFileSep(*f))    {        return 1;    }    return 0;}
开发者ID:npe9,项目名称:core,代码行数:9,


示例8: IsAbsPath

int IsAbsPath(const char *path){    if (IsFileSep(*path))    {        return true;    }    else    {        return false;    }}
开发者ID:npe9,项目名称:core,代码行数:11,


示例9: IsAbsoluteFileName

int IsAbsoluteFileName(char *f){#ifdef NTif (IsFileSep(f[0]) && IsFileSep(f[1]))   {   return true;   }if ( isalpha(f[0]) && f[1] == ':' && IsFileSep(f[2]) )   {   return true;   }#endifif (*f == '/')   {   return true;   }return false;}
开发者ID:AsherBond,项目名称:cf22cf3,代码行数:20,


示例10: AddSlash

void AddSlash(char *str){    char *sp, *sep = FILE_SEPARATOR_STR;    int f = false, b = false;    if (str == NULL)    {        return;    }// add root slash on Unix systems    if (strlen(str) == 0)    {#if !defined(_WIN32)        strcpy(str, "/");#endif        return;    }    /* Try to see what convention is being used for filenames       in case this is a cross-system copy from Win/Unix */    for (sp = str; *sp != '/0'; sp++)    {        switch (*sp)        {        case '/':            f = true;            break;        case '//':            b = true;            break;        default:            break;        }    }    if (f && (!b))    {        sep = "/";    }    else if (b && (!f))    {        sep = "//";    }    if (!IsFileSep(str[strlen(str) - 1]))    {        strcat(str, sep);    }}
开发者ID:patuchov,项目名称:core,代码行数:51,


示例11: DeleteSlash

// Can remove several slashes if they are redundant.void DeleteSlash(char *str){    int size = strlen(str);    if ((size == 0) || (str == NULL))    {        return;    }    int root = RootDirLength(str);    while (IsFileSep(str[size - 1]) && size - 1 > root)    {        size--;    }    str[size] = '/0'; /* no-op if we didn't change size */}
开发者ID:npe9,项目名称:core,代码行数:16,


示例12: DeleteSlash

void DeleteSlash(char *str){    if ((strlen(str) == 0) || (str == NULL))    {        return;    }    if (strcmp(str, "/") == 0)    {        return;    }    if (IsFileSep(str[strlen(str) - 1]))    {        str[strlen(str) - 1] = '/0';    }}
开发者ID:patuchov,项目名称:core,代码行数:17,


示例13: assert

const char *FirstFileSeparator(const char *str){    assert(str);    assert(strlen(str) > 0);    if(strncmp(str, "////", 2) == 0)  // windows share    {        return str + 1;    }    for(const char *pos = str; *pos != '/0'; pos++)    {        if(IsFileSep(*pos))        {            return pos;        }    }    return NULL;}
开发者ID:npe9,项目名称:core,代码行数:20,


示例14: strlen

const char *LastFileSeparator(const char *str)  /* Return pointer to last file separator in string, or NULL if      string does not contains any file separtors */{    const char *sp;/* Walk through string backwards */    sp = str + strlen(str) - 1;    while (sp >= str)    {        if (IsFileSep(*sp))        {            return sp;        }        sp--;    }    return NULL;}
开发者ID:npe9,项目名称:core,代码行数:21,


示例15: CompressPath

int CompressPath(char *dest,char *src){ char *sp;  char node[CF_BUFSIZE];  int nodelen;  int rootlen;Debug2("CompressPath(%s,%s)/n",dest,src);memset(dest,0,CF_BUFSIZE);rootlen = RootDirLength(src);strncpy(dest,src,rootlen); for (sp = src+rootlen; *sp != '/0'; sp++)   {   if (IsFileSep(*sp))      {      continue;      }   for (nodelen = 0; sp[nodelen] != '/0' && !IsFileSep(sp[nodelen]); nodelen++)      {      if (nodelen > CF_MAXLINKSIZE)         {         CfLog(cferror,"Link in path suspiciously large","");         return false;         }      }   strncpy(node, sp, nodelen);   node[nodelen] = '/0';      sp += nodelen - 1;      if (strcmp(node,".") == 0)      {      continue;      }      if (strcmp(node,"..") == 0)      {      if (!ChopLastNode(dest))         {         Debug("cfengine: used .. beyond top of filesystem!/n");         return false;         }         continue;      }   else      {      AddSlash(dest);      }   if (BufferOverflow(dest,node))      {      return false;      }      strcat(dest,node);   } return true;}
开发者ID:AsherBond,项目名称:cf22cf3,代码行数:65,


示例16: CompressPath

/** * @TODO fix the dangerous path lengths */int CompressPath(char *dest, const char *src){    char node[CF_BUFSIZE];    int nodelen;    int rootlen;    memset(dest, 0, CF_BUFSIZE);    rootlen = RootDirLength(src);    memcpy(dest, src, rootlen);    for (const char *sp = src + rootlen; *sp != '/0'; sp++)    {        if (IsFileSep(*sp))        {            continue;        }        for (nodelen = 0; (sp[nodelen] != '/0') && (!IsFileSep(sp[nodelen])); nodelen++)        {            if (nodelen > CF_MAXLINKSIZE)            {                Log(LOG_LEVEL_ERR, "Link in path suspiciously large");                return false;            }        }        strncpy(node, sp, nodelen);        node[nodelen] = '/0';        sp += nodelen - 1;        if (strcmp(node, ".") == 0)        {            continue;        }        if (strcmp(node, "..") == 0)        {            if (!ChopLastNode(dest))            {                Log(LOG_LEVEL_DEBUG, "used .. beyond top of filesystem!");                return false;            }            continue;        }        AddSlash(dest);        /* TODO use dest_size parameter instead of CF_BUFSIZE. */        size_t ret = strlcat(dest, node, CF_BUFSIZE);        if (ret >= CF_BUFSIZE)        {            Log(LOG_LEVEL_ERR,                "Internal limit reached in CompressPath(),"                " path too long: '%s' + '%s'",                dest, node);            return false;        }    }    return true;}
开发者ID:npe9,项目名称:core,代码行数:68,


示例17: VerifyRelativeLink

PromiseResult VerifyRelativeLink(EvalContext *ctx, char *destination, const char *source, Attributes attr, const Promise *pp){    char *sp, *commonto, *commonfrom;    char buff[CF_BUFSIZE], linkto[CF_BUFSIZE];    int levels = 0;    if (*source == '.')    {        return VerifyLink(ctx, destination, source, attr, pp);    }    if (!CompressPath(linkto, sizeof(linkto), source))    {        cfPS(ctx, LOG_LEVEL_ERR, PROMISE_RESULT_INTERRUPTED, pp, attr, "Failed to link '%s' to '%s'", destination, source);        return PROMISE_RESULT_INTERRUPTED;    }    commonto = linkto;    commonfrom = destination;    if (strcmp(commonto, commonfrom) == 0)    {        cfPS(ctx, LOG_LEVEL_ERR, PROMISE_RESULT_INTERRUPTED, pp, attr, "Failed to link '%s' to '%s', can't link file '%s' to itself",             destination, source, commonto);        return PROMISE_RESULT_INTERRUPTED;    }    while (*commonto == *commonfrom)    {        commonto++;        commonfrom++;    }    while (!((IsAbsoluteFileName(commonto)) && (IsAbsoluteFileName(commonfrom))))    {        commonto--;        commonfrom--;    }    commonto++;    for (sp = commonfrom; *sp != '/0'; sp++)    {        if (IsFileSep(*sp))        {            levels++;        }    }    memset(buff, 0, CF_BUFSIZE);    strcat(buff, ".");    strcat(buff, FILE_SEPARATOR_STR);    while (--levels > 0)    {        const char add[] = ".." FILE_SEPARATOR_STR;        if (!PathAppend(buff, sizeof(buff), add, FILE_SEPARATOR))        {            Log(LOG_LEVEL_ERR,                "Internal limit reached in VerifyRelativeLink(),"                " path too long: '%s' + '%s'",                buff, add);            return PROMISE_RESULT_FAIL;        }    }    if (!PathAppend(buff, sizeof(buff), commonto, FILE_SEPARATOR))    {        Log(LOG_LEVEL_ERR,            "Internal limit reached in VerifyRelativeLink() end,"            " path too long: '%s' + '%s'",            buff, commonto);        return PROMISE_RESULT_FAIL;    }    return VerifyLink(ctx, destination, buff, attr, pp);}
开发者ID:maciejmrowiec,项目名称:core,代码行数:79,


示例18: MakeParentDirectory

//.........这里部分代码省略.........                        }                    }                }                /* And then move the current object out of the way... */                if (rename(pathbuf, currentpath) == -1)                {                    Log(LOG_LEVEL_INFO, "Warning: The object '%s' is not a directory. (rename: %s)", pathbuf, GetErrorStr());                    return false;                }            }        }        else        {            if (!S_ISLNK(statbuf.st_mode) && !S_ISDIR(statbuf.st_mode))            {                Log(LOG_LEVEL_INFO,                      "The object %s is not a directory. Cannot make a new directory without deleting it.", pathbuf);                return false;            }        }    }/* Now we can make a new directory .. */    currentpath[0] = '/0';    rootlen = RootDirLength(parentandchild);    strncpy(currentpath, parentandchild, rootlen);    for (sp = (char*) parentandchild + rootlen, spc = currentpath + rootlen; *sp != '/0'; sp++)    {        if (!IsFileSep(*sp) && *sp != '/0')        {            *spc = *sp;            spc++;        }        else        {            Path_File_Separator = *sp;            *spc = '/0';            if (strlen(currentpath) == 0)            {            }            else if (stat(currentpath, &statbuf) == -1)            {                if (!DONTDO)                {                    mask = umask(0);                    if (mkdir(currentpath, DEFAULTMODE) == -1)                    {                        Log(LOG_LEVEL_ERR, "Unable to make directories to '%s'. (mkdir: %s)", parentandchild, GetErrorStr());                        umask(mask);                        return false;                    }                    umask(mask);                }            }            else            {                if (!S_ISDIR(statbuf.st_mode))                {#ifdef __APPLE__
开发者ID:rcorrieri,项目名称:core,代码行数:67,


示例19: MakeDirectoriesFor

//.........这里部分代码省略.........             /* And then move the current object out of the way...*/                          if (rename(pathbuf,currentpath) == -1)                {                snprintf(OUTPUT,CF_BUFSIZE*2,"Warning. The object %s is not a directory./n",pathbuf);                CfLog(cfinform,OUTPUT,"");                CfLog(cfinform,"Could not make a new directory or move the block","rename");                return(false);                }             }          }       else          {          if (! S_ISLNK(statbuf.st_mode) && ! S_ISDIR(statbuf.st_mode))             {             snprintf(OUTPUT,CF_BUFSIZE*2,"Warning. The object %s is not a directory./n",pathbuf);             CfLog(cfinform,OUTPUT,"");             CfLog(cfinform,"Cannot make a new directory without deleting it!/n/n","");             return(false);             }          }       }    } /* Now we can make a new directory .. */   currentpath[0] = '/0';  rootlen = RootDirLength(sp); strncpy(currentpath, file, rootlen); for (sp = file+rootlen, spc = currentpath+rootlen; *sp != '/0'; sp++)    {    if (!IsFileSep(*sp) && *sp != '/0')       {       *spc = *sp;       spc++;       }    else       {       Path_File_Separator = *sp;       *spc = '/0';              if (strlen(currentpath) == 0)          {          }       else if (stat(currentpath,&statbuf) == -1)          {          Debug2("cfengine: Making directory %s, mode %o/n",currentpath,DEFAULTMODE);                    if (! DONTDO)             {             mask = umask(0);                          if (mkdir(currentpath,DEFAULTMODE) == -1)                {                snprintf(OUTPUT,CF_BUFSIZE*2,"Unable to make directories to %s/n",file);                CfLog(cferror,OUTPUT,"mkdir");                umask(mask);                return(false);                }             umask(mask);             }          }       else          {
开发者ID:AsherBond,项目名称:cf22cf3,代码行数:67,


示例20: VerifyRelativeLink

PromiseResult VerifyRelativeLink(EvalContext *ctx, char *destination, const char *source, Attributes attr, const Promise *pp){    char *sp, *commonto, *commonfrom;    char buff[CF_BUFSIZE], linkto[CF_BUFSIZE], add[CF_BUFSIZE];    int levels = 0;    if (*source == '.')    {        return VerifyLink(ctx, destination, source, attr, pp);    }    if (!CompressPath(linkto, source))    {        cfPS(ctx, LOG_LEVEL_ERR, PROMISE_RESULT_INTERRUPTED, pp, attr, "Failed to link %s to %s/n", destination, source);        return PROMISE_RESULT_FAIL;    }    commonto = linkto;    commonfrom = destination;    if (strcmp(commonto, commonfrom) == 0)    {        cfPS(ctx, LOG_LEVEL_ERR, PROMISE_RESULT_INTERRUPTED, pp, attr, "Failed to link %s to %s - can't link file %s to itself/n",             destination, source, commonto);        return PROMISE_RESULT_FAIL;    }    while (*commonto == *commonfrom)    {        commonto++;        commonfrom++;    }    while (!((IsAbsoluteFileName(commonto)) && (IsAbsoluteFileName(commonfrom))))    {        commonto--;        commonfrom--;    }    commonto++;    for (sp = commonfrom; *sp != '/0'; sp++)    {        if (IsFileSep(*sp))        {            levels++;        }    }    memset(buff, 0, CF_BUFSIZE);    strcat(buff, ".");    strcat(buff, FILE_SEPARATOR_STR);    while (--levels > 0)    {        snprintf(add, CF_BUFSIZE - 1, "..%c", FILE_SEPARATOR);        if (!JoinPath(buff, add))        {            return PROMISE_RESULT_FAIL;        }    }    if (!JoinPath(buff, commonto))    {        return PROMISE_RESULT_FAIL;    }    return VerifyLink(ctx, destination, buff, attr, pp);}
开发者ID:baptr,项目名称:core,代码行数:71,


示例21: MakeParentDirectory

//.........这里部分代码省略.........                {                    Log(LOG_LEVEL_INFO,                        "Couldn't rename '%s' to .cf-moved"                        " (rename: %s)", pathbuf, GetErrorStr());                    return false;                }            }        }        else        {            if (!S_ISLNK(statbuf.st_mode) && !S_ISDIR(statbuf.st_mode))            {                Log(LOG_LEVEL_INFO, "The object '%s' is not a directory."                    " Cannot make a new directory without deleting it.",                    pathbuf);                return false;            }        }    }/* Now we make directories descending from the root folder down to the leaf */    currentpath[0] = '/0';    rootlen = RootDirLength(parentandchild);    /* currentpath is not NULL terminated on purpose! */    strncpy(currentpath, parentandchild, rootlen);    for (size_t z = rootlen; parentandchild[z] != '/0'; z++)    {        const char c = parentandchild[z];        /* Copy up to the next separator. */        if (!IsFileSep(c))        {            currentpath[z] = c;            continue;        }        const char path_file_separator = c;        currentpath[z]                 = '/0';        /* currentpath is complete path for each of the parent directories.  */        if (currentpath[0] == '/0')        {            /* We are at dir "/" of an absolute path, no need to create. */        }        /* WARNING: on Windows stat() fails if path has a trailing slash! */        else if (stat(currentpath, &statbuf) == -1)        {            if (!DONTDO)            {                mask = umask(0);                if (mkdir(currentpath, DEFAULTMODE) == -1)                {                    Log(LOG_LEVEL_ERR,                        "Unable to make directory: %s (mkdir: %s)",                        currentpath, GetErrorStr());                    umask(mask);                    return false;                }                umask(mask);            }        }
开发者ID:GregorioDiStefano,项目名称:core,代码行数:67,



注:本文中的IsFileSep函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ IsFinite函数代码示例
C++ IsFile函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。