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

📄 common.c

📁 freetype库的应用demo,里面包含freetype的很多实例
💻 C
字号:
/* *  This is a cheap replacement for getopt() because that routine is not *  available on some platforms and behaves differently on other platforms. *  This code was written from scratch without looking at any other *  implementation. * *  This code is hereby expressly placed in the public domain. *  mleisher@crl.nmsu.edu (Mark Leisher) *  10 October 1997 */#include "common.h"#include <stdio.h>#include <stdarg.h>#include <stdlib.h>#include <string.h>  /*   *  Externals visible to programs.   */  int    opterr = 1;  int    optind = 1;  char*  optarg;  /*   *  Internal variables that are used to detect when the global values   *  need to be reset.   */  static int  cmdac;#ifdef __STDC__  static const char*   cmdname;  static char* const*  cmdav;#else  static char*   cmdname;  static char**  cmdav;#endif  int#ifdef __STDC__  getopt( int  ac, char* const*  av, const char*  pat )#else  getopt( ac, av, pat )    int     ac;    char**  av;    char*   pat;#endif  {    int  opt;#ifdef __STDC__    const char*  p;    const char*  pp;#else    char*  p;    char*  pp;#endif    /*     *  If there is no pattern, indicate the parsing is done.     */    if ( pat == 0 || *pat == 0 )      return -1;    /*     *  Always reset the option argument to NULL.     */    optarg = 0;    /*     *  If the number of arguments or argument list do not match the last     *  values seen, reset the internal pointers and the globals.     */    if ( ac != cmdac || av != cmdav )    {      optind = 1;      cmdac = ac;      cmdav = av;      /*       *  Determine the command name in case it is needed for warning       *  messages.       */      for ( cmdname = 0, p = av[0]; *p; p++ )      {        if ( *p == '/' || *p == '\\' )          cmdname = p;      }      /*       *  Skip the path separator if the name was assigned.       */      if ( cmdname )        cmdname++;      else        cmdname = av[0];    }    /*     *  If the next index is greater than or equal to the number of     *  arguments, then the command line is done.     */    if ( optind >= ac )      return -1;    /*     *  Test the next argument for one of three cases:     *    1. The next argument does not have an initial '-'.     *    2. The next argument is '-'.     *    3. The next argument is '--'.     *     *  In either of these cases, command line processing is done.     */    if ( av[optind][0] != '-'            ||         strcmp( av[optind], "-" ) == 0  ||         strcmp( av[optind], "--" ) == 0 )      return -1;    /*     *  Point at the next command line argument and increment the     *  command line index.     */    p = av[optind++];    /*     *  Look for the first character of the command line option.     */    for ( opt = *(p + 1), pp = pat; *pp && *pp != opt; pp++ )      ;    /*     *  If nothing in the pattern was recognized, then issue a warning     *  and return a '?'.     */    if ( *pp == 0 )    {      if ( opterr )        fprintf( stderr, "%s: illegal option -- %c\n", cmdname, opt );      return '?';    }    /*     *  If the option expects an argument, get it.     */    if ( *(pp + 1) == ':' && (optarg = av[optind]) == 0 )    {      /*       *  If the option argument is NULL, issue a warning and return a '?'.       */      if ( opterr )        fprintf( stderr, "%s: option requires an argument -- %c\n",                         cmdname, opt );      opt = '?';    }    else if ( optarg )    /*     *  Increment the option index past the argument.     */      optind++;    /*     *  Return the option character.     */    return opt;  }/****************************************************************************//*                                                                          *//*  The FreeType project -- a free and portable quality TrueType renderer.  *//*                                                                          *//*  Copyright 1996-1998 by                                                  *//*  D. Turner, R.Wilhelm, and W. Lemberg                                    *//*                                                                          *//* ft_basename():                                                           *//*                                                                          *//* a stupid but useful function...                                          *//*                                                                          *//* rewritten by DavidT to get rid of GPLed programs in the FreeType demos.  *//*                                                                          *//****************************************************************************/  char*#ifdef __STDC__  ft_basename ( const char*  name )#else  ft_basename ( name )    char* name;#endif  {#ifdef __STDC__    const char*  base;    const char*  current;#else    char*        base;    char*        current;#endif    char         c;    base    = name;    current = name;    c = *current;    while ( c )    {#ifndef macintosh      if ( c == '/' || c == '\\' )#else      if ( c == ':' )#endif        base = current + 1;      current++;      c = *current;    }    return (char*)base;  }#ifdef __STDC__  void Panic( const char*  fmt, ... )#else  void Panic( fmt )    const char* fmt;#endif  {    va_list  ap;    va_start( ap, fmt );    vprintf( fmt, ap );    va_end( ap );    exit( 1 );  }/* End */

⌨️ 快捷键说明

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