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

📄 mf_dirname.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
字号:
/* Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB This file is public domain and comes with NO WARRANTY of any kind */#include "mysys_priv.h"#include <m_string.h>	/* Functions definied in this file */uint dirname_length(const char *name){  register my_string pos,gpos;#ifdef FN_DEVCHAR  if ((pos=(char*)strrchr(name,FN_DEVCHAR)) == 0)#endif    pos=(char*) name-1;  gpos= pos++;  for ( ; *pos ; pos++)				/* Find last FN_LIBCHAR */    if (*pos == FN_LIBCHAR || *pos == '/'#ifdef FN_C_AFTER_DIR	|| *pos == FN_C_AFTER_DIR || *pos == FN_C_AFTER_DIR_2#endif	)      gpos=pos;  return ((uint) (uint) (gpos+1-(char*) name));}	/* Gives directory part of filename. Directory ends with '/' */	/* Returns length of directory part */uint dirname_part(my_string to, const char *name){  uint length;  DBUG_ENTER("dirname_part");  DBUG_PRINT("enter",("'%s'",name));  length=dirname_length(name);  (void) strmake(to,(char*) name,min(length,FN_REFLEN-2));  convert_dirname(to);				/* Convert chars */  DBUG_RETURN(length);} /* dirname */	/* convert dirname to use under this system */	/* If MSDOS converts '/' to '\' */	/* If VMS converts '<' to '[' and '>' to ']' */	/* Adds a '/' to end if there isn't one and the last isn't a dev_char */	/* ARGSUSED */#ifndef FN_DEVCHAR#define FN_DEVCHAR '\0'				/* For easier code */#endifchar *convert_dirname(my_string to){  reg1 char *pos;#ifdef FN_UPPER_CASE  caseup_str(to);#endif#ifdef FN_LOWER_CASE  casedn_str(to);#endif#if FN_LIBCHAR != '/'  {    pos=to-1;					/* Change from '/' */    while ((pos=strchr(pos+1,'/')) != 0)      *pos=FN_LIBCHAR;  }#endif#ifdef FN_C_BEFORE_DIR_2  {    for (pos=to ; *pos ; pos++)    {      if (*pos == FN_C_BEFORE_DIR_2)	*pos=FN_C_BEFORE_DIR;      if (*pos == FN_C_AFTER_DIR_2)	*pos=FN_C_AFTER_DIR;    }  }#else  {					/* Append FN_LIBCHAR if not there */    pos=strend(to);    if (pos != to && (pos[-1] != FN_LIBCHAR && pos[-1] != FN_DEVCHAR))    {      *pos++=FN_LIBCHAR;      *pos=0;    }  }#endif  return pos;					/* Pointer to end of dir */} /* convert_dirname */

⌨️ 快捷键说明

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