[BACK]Return to geticon.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gnuplot / win

Annotation of OpenXM_contrib/gnuplot/win/geticon.c, Revision 1.1.1.2

1.1       maekawa     1: #ifndef lint
1.1.1.2 ! maekawa     2: static char *RCSid = "$Id: geticon.c,v 1.2 1998/12/01 20:09:38 lhecking Exp $";
1.1       maekawa     3: #endif
                      4:
                      5: /* geticon.c */
                      6: /* extract Borland ascii format icons from resource script */
                      7: /* and write as Microsoft binary format .ICO files */
                      8: /* Russell Lang 1992-12-20 */
                      9:
                     10: #include <stdio.h>
                     11: #include <stdlib.h>
                     12: #include <string.h>
                     13: #include <ctype.h>
                     14:
                     15: /* HBB 980809: naming a variable 'inline' is a bad idea, these days. Too
                     16:  * many compilers use it as a keyword... Changed to 'inputline' */
                     17: #define MAXLINE 255
                     18: FILE *rcfile;
                     19: char inputline[MAXLINE+1];
                     20: char *tok1, *tok2, *tok3;
                     21: char *p;
                     22: char iconname[MAXLINE+1];
                     23: FILE *iconfile;
                     24: int line;
                     25:
                     26: int htoi(char ch)
                     27: {
                     28:     ch = toupper(ch);
                     29:     if (ch < '0')
                     30:         return(0);
                     31:     else if (ch <= '9')
                     32:         return((int)(ch - '0'));
                     33:     else if (ch < 'A')
                     34:         return(0);
                     35:     else if (ch <= 'F')
                     36:         return((int)(ch - 'A' + 10));
                     37:     return(0);
                     38: }
                     39:
                     40: void
                     41: geticon(void)
                     42: {
                     43: char ch;
                     44:     fgets(inputline,MAXLINE,rcfile);
                     45:     line++;
                     46:     if (strncmp(inputline,"BEGIN",5)) {
                     47:        fprintf(stderr,"Expecting BEGIN at line %d\n",line);
                     48:        exit(3);
                     49:     }
                     50:     if ( (iconfile = fopen(iconname,"wb")) == (FILE *)NULL) {
                     51:         fprintf(stderr,"Can't open ICON file %s\n",iconname);
                     52:         exit(4);
                     53:     }
                     54:     fgets(inputline,MAXLINE,rcfile);
                     55:     line++;
                     56:     while (strncmp(inputline,"END",3) && !feof(rcfile)) {
                     57:         for (p = inputline; *p && (*p==' ' || *p == '\t' || *p=='\''); p++);
                     58:         while (isxdigit(*p)) {
                     59:             ch = htoi(*p++)<<4;
                     60:             ch += htoi(*p++);
                     61:             fputc(ch, iconfile);
                     62:             p++;
                     63:         }
                     64:         fgets(inputline,MAXLINE,rcfile);
                     65:         line++;
                     66:     }
                     67:     fclose(iconfile);
                     68: }
                     69:
                     70: int
                     71: main(int argc, char *argv[])
                     72: {
                     73:     if ((argc < 2) || (argc > 3)) {
                     74:        fprintf(stderr,"Usage:  geticon  resource_file [icon_directory]\n");
                     75:        return(1);
                     76:     }
                     77:     if ( (rcfile = fopen(argv[1],"r")) == (FILE *)NULL) {
                     78:        fprintf(stderr,"Can't open RC file\n");
                     79:        return(2);
                     80:     }
                     81:     line = 0;
                     82:     while (fgets(inputline,MAXLINE,rcfile)) {
                     83:         line++;
                     84:        tok1 = strtok(inputline," \t\r\n");
                     85:        tok2 = strtok(NULL," \t\r\n");
                     86:        tok3 = strtok(NULL," \t\r\n");
                     87:        if (tok2 && !strcmp(tok2,"ICON") && (tok3 == (char *)NULL)) {
                     88:             iconname[0] = '\0';
                     89:            if (argc == 3) {
                     90:                 strcpy(iconname,argv[2]);
                     91:                 strcat(iconname,"\\");
                     92:             }
                     93:             strcat(iconname,tok1);
                     94:             strcat(iconname,".ico");
                     95:            fprintf(stdout,"%s\n",iconname);
                     96:            geticon();
                     97:        }
                     98:     }
                     99:     return (0);
                    100: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>