tgainfo.c
上传用户:tany51
上传日期:2013-06-12
资源大小:1397k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*
  2.     Copyright (C) 2000  Marco Ziech (mmz@gmx.net)
  3.     Copyright (C) 2000  Ross Combs (rocombs@cs.nmsu.edu)
  4.     This program is free software; you can redistribute it and/or modify
  5.     it under the terms of the GNU General Public License as published by
  6.     the Free Software Foundation; either version 2 of the License, or
  7.     (at your option) any later version.
  8.     This program is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11.     GNU General Public License for more details.
  12.     You should have received a copy of the GNU General Public License
  13.     along with this program; if not, write to the Free Software
  14.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  15. */
  16. #include "common/setup_before.h"
  17. #ifdef HAVE_STDDEF_H
  18. # include <stddef.h>
  19. #else
  20. # ifndef NULL
  21. #  define NULL ((void *)0)
  22. # endif
  23. #endif
  24. #include <stdio.h>
  25. #ifdef STDC_HEADERS
  26. # include <stdlib.h>
  27. #endif
  28. #include "compat/exitstatus.h"
  29. #ifdef HAVE_STRING_H
  30. # include <string.h>
  31. #else
  32. # ifdef HAVE_STRINGS_H
  33. #  include <strings.h>
  34. # endif
  35. #endif
  36. #include <errno.h>
  37. #include "compat/strerror.h"
  38. #include "tga.h"
  39. #include "fileio.h"
  40. #include "common/version.h"
  41. #include "common/setup_after.h"
  42. static void usage(char const * progname)
  43. {
  44.     fprintf(stderr,
  45.             "usage: %s [<options>] [--] [<TGA file>]n"
  46.             "    -h, --help, --usage  show this information and exitn"
  47.             "    -v, --version        print version number and exitn",progname);
  48.     
  49.     exit(STATUS_FAILURE);
  50. }
  51. extern int main(int argc, char * argv[])
  52. {
  53.     char const * tgafile=NULL;
  54.     FILE *       fp;
  55.     int          a;
  56.     int          forcefile=0;
  57.     char         dash[]="-"; /* unique address used as flag */
  58.     
  59.     if (argc<1 || !argv || !argv[0])
  60.     {
  61.         fprintf(stderr,"bad argumentsn");
  62.         return STATUS_FAILURE;
  63.     }
  64.     
  65.     for (a=1; a<argc; a++)
  66.         if (forcefile && !tgafile)
  67.             tgafile = argv[a];
  68.         else if (strcmp(argv[a],"-")==0 && !tgafile)
  69.             tgafile = dash;
  70.         else if (argv[a][0]!='-' && !tgafile)
  71.             tgafile = argv[a];
  72.         else if (forcefile || argv[a][0]!='-' || strcmp(argv[a],"-")==0)
  73.         {
  74.             fprintf(stderr,"%s: extra file argument "%s"n",argv[0],argv[a]);
  75.             usage(argv[0]);
  76.         }
  77.         else if (strcmp(argv[a],"--")==0)
  78.             forcefile = 1;
  79.         else if (strcmp(argv[a],"-v")==0 || strcmp(argv[a],"--version")==0)
  80.         {
  81.             printf("version "PVPGN_VERSION"n");
  82.             return STATUS_SUCCESS;
  83.         }
  84.         else if (strcmp(argv[a],"-h")==0 || strcmp(argv[a],"--help")==0 || strcmp(argv[a],"--usage")
  85. ==0)
  86.             usage(argv[0]);
  87.         else
  88.         {
  89.             fprintf(stderr,"%s: unknown option "%s"n",argv[0],argv[a]);
  90.             usage(argv[0]);
  91.         }
  92.     
  93.     if (!tgafile)
  94. tgafile = dash;
  95.     
  96.     if (tgafile==dash)
  97. fp = stdin;
  98.     else
  99. if (!(fp = fopen(tgafile,"r")))
  100. {
  101.     fprintf(stderr,"%s: could not open TGA file "%s" for reading (fopen: %s)n",argv[0],tgafile,strerror(errno));
  102.     return STATUS_FAILURE;
  103. }
  104.     
  105.     {
  106. t_tgaimg * tgaimg;
  107. file_rpush(fp);
  108. if (!(tgaimg = load_tgaheader()))
  109. {
  110.     fprintf(stderr,"%s: could not load TGA headern",argv[0]);
  111.     if (tgafile!=dash && fclose(fp)<0)
  112. fprintf(stderr,"%s: could not close file "%s" after reading (fclose: %s)n",argv[0],tgafile,strerror(errno));
  113.     return STATUS_FAILURE;
  114. }
  115. print_tga_info(tgaimg,stdout);
  116. file_rpop();
  117.     }
  118.     
  119.     if (tgafile!=dash && fclose(fp)<0)
  120. fprintf(stderr,"%s: could not close file "%s" after reading (fclose: %s)n",argv[0],tgafile,strerror(errno));
  121.     return STATUS_SUCCESS;
  122. }