当前位置:  技术问答>linux和unix

急死我了!!这个问题,你能帮我解决吗??

    来源: 互联网  发布时间:2014-12-14

    本文导语:  刚才提过了,大概没有人看见吧!! 就是我的机子没有Linux系统,也没有办法装(公家的). 我现在急需看一下Linux系统bash的源代码中,一个叫 fnmatch.c文件的源代码,请贴给我看看,或是发给我(windows能够打开的文件方式).mail: ane...

刚才提过了,大概没有人看见吧!!
就是我的机子没有Linux系统,也没有办法装(公家的).
我现在急需看一下Linux系统bash的源代码中,一个叫 fnmatch.c文件的源代码,请贴给我看看,或是发给我(windows能够打开的文件方式).mail: aneicou@hotmail.com
先谢谢各位了.

|
/* Copyright (C) 1991, 1992, 1993, 1996, 1997 Free Software Foundation, Inc.

   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, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */

#if HAVE_CONFIG_H
# include 
#endif

/* Enable GNU extensions in fnmatch.h.  */
#ifndef _GNU_SOURCE
# define _GNU_SOURCE 1
#endif

#include 
#include 
#include 


/* Comment out all this code if we are using the GNU C Library, and are not
   actually compiling the library itself.  This code is part of the GNU C
   Library, but also included in many other GNU distributions.  Compiling
   and linking in this code is a waste when using the GNU C library
   (especially if it is a shared library).  Rather than having every GNU
   program understand `configure --with-gnu-libc' and omit the object files,
   it is simpler to just do this in the source for each such file.  */

#if defined _LIBC || !defined __GNU_LIBRARY__


# if defined STDC_HEADERS || !defined isascii
#  define IN_CTYPE_DOMAIN(c) 1
# else
#  define IN_CTYPE_DOMAIN(c) isascii(c)
# endif

# define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c))


# ifndef errno
extern int errno;
# endif

/* Match STRING against the filename pattern PATTERN, returning zero if
   it matches, nonzero if not.  */
int
fnmatch (const char *pattern, const char *string, int flags)
{
  register const char *p = pattern, *n = string;
  register char c;

/* Note that this evaluates C many times.  */
# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c))

  while ((c = *p++) != '')
    {
      c = FOLD (c);

      switch (c)
{
case '?':
  if (*n == '')
    return FNM_NOMATCH;
  else if ((flags & FNM_FILE_NAME) && *n == '/')
    return FNM_NOMATCH;
  else if ((flags & FNM_PERIOD) && *n == '.' &&
   (n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/')))
    return FNM_NOMATCH;
  break;

case '\':
  if (!(flags & FNM_NOESCAPE))
    {
      c = *p++;
      if (c == '')
/* Trailing  loses.  */
return FNM_NOMATCH;
      c = FOLD (c);
    }
  if (FOLD (*n) != c)
    return FNM_NOMATCH;
  break;

case '*':
  if ((flags & FNM_PERIOD) && *n == '.' &&
      (n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/')))
    return FNM_NOMATCH;

  for (c = *p++; c == '?' || c == '*'; c = *p++)
    {
      if ((flags & FNM_FILE_NAME) && *n == '/')
/* A slash does not match a wildcard under FNM_FILE_NAME.  */
return FNM_NOMATCH;
      else if (c == '?')
{
  /* A ? needs to match one character.  */
  if (*n == '')
    /* There isn't another character; no match.  */
    return FNM_NOMATCH;
  else
    /* One character of the string is consumed in matching
       this ? wildcard, so *??? won't match if there are
       less than three characters.  */
    ++n;
}
    }

  if (c == '')
    return 0;

  {
    char c1 = (!(flags & FNM_NOESCAPE) && c == '\') ? *p : c;
    c1 = FOLD (c1);
    for (--p; *n != ''; ++n)
      if ((c == '[' || FOLD (*n) == c1) &&
  fnmatch (p, n, flags & ~FNM_PERIOD) == 0)
return 0;
    return FNM_NOMATCH;
  }

case '[':
  {
    /* Nonzero if the sense of the character class is inverted.  */
    register int not;

    if (*n == '')
      return FNM_NOMATCH;

    if ((flags & FNM_PERIOD) && *n == '.' &&
(n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/')))
      return FNM_NOMATCH;

    not = (*p == '!' || *p == '^');
    if (not)
      ++p;

    c = *p++;
    for (;;)
      {
register char cstart = c, cend = c;

if (!(flags & FNM_NOESCAPE) && c == '\')
  {
    if (*p == '')
      return FNM_NOMATCH;
    cstart = cend = *p++;
  }

cstart = cend = FOLD (cstart);

if (c == '')
  /* [ (unterminated) loses.  */
  return FNM_NOMATCH;

c = *p++;
c = FOLD (c);

if ((flags & FNM_FILE_NAME) && c == '/')
  /* [/] can never match.  */
  return FNM_NOMATCH;

if (c == '-' && *p != ']')
  {
    cend = *p++;
    if (!(flags & FNM_NOESCAPE) && cend == '\')
      cend = *p++;
    if (cend == '')
      return FNM_NOMATCH;
    cend = FOLD (cend);

    c = *p++;
  }

if (FOLD (*n) >= cstart && FOLD (*n) 

    
 
 

您可能感兴趣的文章:

  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 奇怪,怎么“已解决”问题只有4页(10/17日之后的),以前的已解决问题到哪里看?
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 硬盘分区后出现的问题,急待解决!!问题解决马上给分。
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 解决多级索引速度慢的问题可否像解决多级页表那样使用TLB?
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • 呵呵,前段时间Ubuntu服务器版的问题总算解决了,解决方法就是重新安装桌面版-_-!
  • vs2010下禁用vmware的方法以及解决vmware插件导致vs2010变慢的问题
  • 问发这问题"arprequest : Invalid argument"的朋友,你的问题解决了吗?
  • Linux下时钟同步问题:Clock skew detected原因分析及解决方法
  • 现在在公司遇到一个解决不了的页面缓存问题,在线等到下班,谁解决谁100分
  • c/c++服务器程序内存泄露问题分析及解决
  • linux下的vi中的乱码问题(急急急,在线等待!!!!!!,解决问题给高分)
  • Linux 下c++开发error while loading shared libraries问题解决
  • 如何解决安装问题!!??
  • HTML <!DOCTYPE> 标签用法详解及如何解决<!DOCTYPE html>未声明时导致页面无效的问题
  • 超初级问题:显示乱码的问题怎么解决?
  • Windows C/ C++堆相关问题及解决思路
  • 有关ResultSet的问题,帮助解决问题者另外加分...
  • Andriod上ANR介绍及ANR问题解决方法
  • 亟待解决的问题!Makefile问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 八个问题帮你快速了解Docker
  • 简单问题简单问题简单问题简单问题
  • nginx Windows版相关问题及使用说明
  • 小问题,急问题,重大问题!!!
  • ​部署 Docker 前必须问自己的四个问题
  • 弱弱的一问,linux下的中文问题及网络问题,分不是问题
  • spring的事务类型及spring和hibernate可能导致的问题分析
  • 请教两个小问题:一个cgywin下使用vi的问题,另一个socket的问题
  • Docker的隔离性和安全性问题
  • 死锁的问题 多级锁定问题 循环锁定问题
  • swing的问题还是jbuiler的问题?? iis7站长之家
  • [问题]双系统出现的问题!求问题的原因和解决办法!
  • OpenStack中compute介绍和compute实例需要注意的问题
  • 初学者问题。一个是编译hello world的问题,一个是配置ssh的问题
  • Windows下Docker应用部署相关问题详解
  • C程序问题:哪个高手帮我解释下下面的问题,主要是a[0]和&[0] 的区别 和编译器的问题??
  • swing的问题还是jbuiler的问题??
  • 菜鸟第一次安装红帽子7.2的一箩筐问题。每个问题会开个帖子,各放100分!请有安装经验的老鸟们帮忙解决。第二个问题:什么是LILO?怎么样
  • jbuilder7问题 编译没有问题,内部运行编写的的java程序就退出了???
  • 新手问题:中文问题等
  • 线程问题,别人不会问的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3