X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fargs.h;h=c0350e4a0ecc88d6d07c55d18f7393150da61bb8;hp=f8cda88b6d51aa79b861f9a0e9a20e5f8126eac8;hb=2c719855eac434f01d47ba0717d76de65939d74e;hpb=c69748fd50a518c8ca50e24b2e75b5614ac7d2f1 diff --git a/lib/args.h b/lib/args.h index f8cda88..c0350e4 100644 --- a/lib/args.h +++ b/lib/args.h @@ -4,12 +4,26 @@ Part of the swftools package. Copyright (c) 2001 Matthias Kramm + + 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 of the License, or + (at your option) any later version. - This file is distributed under the GPL, see file COPYING for details */ + 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 */ #ifndef __args_h__ #define __args_h__ +#ifndef NO_ARGPARSER + extern int args_callback_option(char*,char*); extern int args_callback_longoption(char*,char*); extern int args_callback_command(char*,char*); @@ -18,7 +32,7 @@ extern void args_callback_usage(char*name); //int argn; //char**argv; -void processargs(int argn2,char**argv2) +static void processargs(int argn2,char**argv2) { int t; if(argn2==1) @@ -32,7 +46,7 @@ void processargs(int argn2,char**argv2) if(t2) { + fprintf(stderr, "internal error in command line parsing\n"); + exit(1); + } + t+=num; } } } struct options_t { - char*shortoption; - char*longoption; + const char*shortoption; + const char*longoption; }; -int args_long2shortoption(struct options_t*options, char*name, char*val) +static int args_long2shortoption(struct options_t*options, char*name, char*val) { char*equal = strchr(name,'='); if (equal) { @@ -115,12 +130,14 @@ int args_long2shortoption(struct options_t*options, char*name, char*val) exit(1); } +#endif + /* check whether the value t is in a given range. examples: 3 is in range 1-10: true 7 is in range 2-4,6,8-10: false 9 is in range 1,2,3-12: true */ -char is_in_range(int t, char*irange) +static char is_in_range(int t, char*irange) { char*pos = irange; char*digits; @@ -190,4 +207,44 @@ char is_in_range(int t, char*irange) return 0; } +static char* filename2template(char*filename, int*startindex) +{ + int l = strlen(filename); + char*newname = (char*)malloc(l+5); + /* first look whether the file is already numbered */ + while(1) { + l--; + if(l<0 || strchr("0123456789", filename[l])) + break; + }; + if(l>=0) { + int lastdigit=l; + int firstdigit=l; + while(firstdigit && strchr("0123456789", filename[firstdigit-1])) + firstdigit--; + *startindex = atoi(filename+firstdigit); + memcpy(newname, filename, firstdigit); + sprintf(newname+firstdigit, "%%%dd", lastdigit+1-firstdigit); + strcat(newname+firstdigit, filename+lastdigit+1); + return newname; + } + /* if it isn't, try to paste a %d between filename and extension */ + char*dot = strrchr(filename, '.'); + if(dot) { + int pos = dot-filename; + memcpy(newname, filename, pos); + newname[pos++] = '.'; + newname[pos++] = '%'; + newname[pos++] = 'd'; + strcpy(newname+pos, dot); + *startindex = 1; + return newname; + } + /* if that didn't work either, just append the number at the end */ + strcpy(newname, filename); + strcat(newname, ".%d"); + *startindex = 1; + return newname; +} + #endif //__args_h__