#include #include #include #include #include "ml.h" char *option_str=NULL; int is_option(char *option) { string str; strcpy(str,option); strupr(str); return strstr(option_str,str) != NULL; } char *get_option_str(char *dest, char *prompt) { static string res,str; char *p,*p1; strcpy(str,prompt); strupr(str); if( (p = strstr(option_str,str)) == NULL ) return NULL; p += strlen(str); if( (p1 = strstr(p,";")) == NULL) return NULL; memcpy(res,p,p1-p); res[p1-p] = '\0'; strcpy(dest,res); return dest; } long get_int_option(char *prompt) { string dest; long res; string errstr; sprintf(errstr,"error in parameter %s",prompt); if( ! get_option_str(dest,prompt)) error(errstr); if( ! sscanf(dest,"%ld",&res)) error(errstr); return res; } double get_double_option(char *prompt) { string dest; double res; string errstr; sprintf(errstr,"error in parameter %s",prompt); if( ! get_option_str(dest,prompt)) error(errstr); if( ! sscanf(dest,"%lf",&res)) error(errstr); return res; } char *set_option_str_len(unsigned len) { option_str = (char *)malloc(len); return option_str; } void accept_options(char *old_options, char *f_opt) { string opt_file_name; FILE *opt_file; int i,opt_len; option_str=old_options; strupr(option_str); if(is_option(f_opt)){ /* читаем опции из файла */ opt_file = Fopen(get_option_str(opt_file_name,f_opt),"r"); fseek(opt_file,0,SEEK_END); opt_len=strlen(old_options)+ftell(opt_file)+5; rewind(opt_file); set_option_str_len(opt_len); strcpy(option_str,old_options); if(opt_file != NULL){ for(i=strlen(option_str); !feof(opt_file) && !ferror(opt_file); i++) { option_str[i]=fgetc(opt_file); if(option_str[i]=='#') break; /* конец файла опций */ } option_str[i]='\0'; fclose(opt_file); } strupr(option_str); } } void concat_argv(char *com_buf, int i0, int argc, char **argv) { int i; *com_buf='\0'; for(i=i0; i < argc; i++) { strcat(com_buf,argv[i]); strcat(com_buf," "); } } void free_options(void) { free(option_str); }