/*-------------------------------------------------------------------------------------------------------*/ /* EAS3 License */ /* */ /* Copyright (c) 2006 Institut fuer Aerodynamik und Gasdynamik, Universitaet Stuttgart */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and */ /* associated documentation files (the "Software"), to deal in the Software without restriction, */ /* including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, */ /* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, */ /* subject to the following conditions: */ /* */ /* The above copyright notice and this permission notice shall be included in all copies or substantial */ /* portions of the Software. */ /* */ /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT */ /* LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER */ /* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION */ /* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*-------------------------------------------------------------------------------------------------------*/ /* **************************************************************** */ /* */ /* Readline Anbindung an Fortran */ /* */ /* **************************************************************** */ #ifdef READLINE_LIBRARY #include #include #include "readline.h" #include "history.h" /* diese Definition muss immer mit EAS3 zusammenpassen */ #define INPUTLINELENGTH 2048 /* Anpassung an verschiedene Plattformen */ #if defined(SX4EW8) #define RETURNVALUE long long #else #define RETURNVALUE int #endif #ifdef T3E #define C_RL_GETSTR C_RL_GETSTR #else #define C_RL_GETSTR c_rl_getstr_ #endif /*=================================================================== Command completion in EAS3, according to readline definition. ===================================================================*/ char *command_generator __P((const char *, int)); char *option_generator __P((const char *, int)); char **eas3_completion __P((const char *, int, int)); /*list of commands for readline ato complete*/ char* commands[]= { "ABLEITEN," , "ABS" , "ATAN" , "AUSFUEHREN" , "CLIP," , "CONVERT," , "COVISE," , "DRUCKEN," , "ECHO," , "EDITATTR," , "ENDE" , "EXP" , "F2PT," , "F2PZ," , "FENSTER," , "FILES,", "FMITTELUNG," , "FT2PHYS," , "FTINFO," , "FTFTZHK2MODPH" , "FTREAL2FTFTZHK," , "FTREAL2MODPH," , "FT_ADIM," , "FT_CORRELATION," , "FT_DREHE_S," , "FT_DREHEFELD," , "FT_LAMBDA2," , "FT_SCALERE," , "FT_SCALEGEO," , "FT_VERKN_GRUND," , "GCUT,", "GEOM," , "GLOBALVARS" , "INFILE," , "INTEGRIEREN," , "INTPOL," , "INTERAKTIV," , "KENNSATZ," , "KOPIEREN," , "KSSCHREIB," , "LN," , "LOG," , "MITTELUNG," , "MISCHEN," , "NFILES," , "OUTFILE," , "P2FT," , "PAR2D_PAR3D," , "PAR3D_PAR2D" , "PARAMETER," , "PHASGLATT," , "PHYS2FT," , "POW10" , "REDUCE," , "SCALETRANS," , "SCHREIBFORMAT," , "SQR" , "SQRT" , "TECPLOT," , "UMORDNEN," , "VERKETTEN," , "VERKNUEPFEN," , "VOLUME" , "WERTEBEREICH," , "WINDOW," , "ZEITINDEX," , "ZEITSCHRITT," , (char *)NULL }; /*options: ein/aus*/ char* optlist_EINAUS[]= { "EIN" , "AUS" , (char *)NULL }; /*options for ableiten, part 1*/ char* optlist_ABLEITEN1[]= { "D1_FT," , "D2_FT," , "D3_FT," , "D4_FT," , "D1_S_O4," , "D2_S_O4," , "D4_S_O4," , (char *)NULL }; /*options for ableiten, part 2*/ char* optlist_ABLEITEN2[]= { "ZS" , "PAR" , "DIM1" , "DIM2" , "DIM3" , (char *)NULL }; /*options for convert, part 1*/ char* optlist_CONVERT[]= { "EAS2" , "EAS3" , "TECPLTSV" , "TECPLTMV" , "TECPLTCRV" , "ASCII2EAS" , "COVISE" , "EAS2ASCII" , (char *)NULL }; /*options for covise*/ char* optlist_COVISE[]= { "nogrid" , "vector" , "DIM1," , "DIM2," , "DIM3," , "nox0shift," , "shift," , (char *)NULL }; /*options for covise (nox0shift)*/ char* optlist_COVISE_nox0shift[]= { "DIM1" , "DIM2" , "DIM3" , "ALL" , (char *)NULL }; /*options for covise (shift)*/ char* optlist_COVISE_shift[]= { "DIM1," , "DIM2," , "DIM3," , (char *)NULL }; /*options for EDITATTR*/ char* optlist_EDITATTR[]= { "ZS," , "PAR," , "DIM1," , "DIM2," , "DIM3," , "UDEF," , "END", (char *)NULL }; /*options for F2PT part2*/ char* optlist_F2PT_2[]= { "first" , "last" , (char *)NULL }; /*options for F2PZ*/ char* optlist_F2PZ[]= { "SITRA," , "COTRA," , "FUTRA," , (char *)NULL }; /*options for FMITTELUNG part 1*/ char* optlist_FMITTELUNG_1[]= { "TAVG," , "RMS," , (char *)NULL }; /*options for FMITTELUNG part 2*/ char* optlist_FMITTELUNG_2[]= { "SITRA," , "COTRA," , (char *)NULL }; /*options for FMITTELUNG part 3*/ char* optlist_FMITTELUNG_3[]= { "K0," , "NOK0," , (char *)NULL }; /*options for FT_DREHE_S*/ char* optlist_FT_DREHE_S[]= { "X_S" , "Z_S" , (char *)NULL }; /*options for FT_ADIM part 1*/ char* optlist_FT_ADIM_1[]= { "ZS," , "PAR," , "DIM1," , "DIM2," , "DIM3," , "ALLD_G," , "DATA," , "ALL," , (char *)NULL }; /*options for FT_ADIM part 2*/ char* optlist_FT_ADIM_2[]= { "FT_ABS" , "FT_REL" , "ADIM" , "DIM" , "WALLCOOR" , (char *)NULL }; /*options for FT_CORRELATION*/ char* optlist_FT_CORRELATION[]= { "DIM1" , "DIM2" , "DIM3" , (char *)NULL }; /*options for FTINFO part 1*/ char* optlist_FTINFO_1[]= { "LAUFNAME," , "VARNAME," , "COORNAME_ZS," , "COORNAME_PAR," , "COORNAME_DIM1," , "COORNAME_DIM2," , "COORNAME_DIM3," , "U_UNEND," , "W_UNEND," , "RE_NUM," , "NU," , "ALPHA_ZS," , "ALPHA_PAR," , "ALPHA_DIM1," , "ALPHA_DIM2," , "ALPHA_DIM3," , "COORTYPE_ZS," , "COORTYPE_PAR," , "COORTYPE_DIM1," , "COORTYPE_DIM2," , "COORTYPE_DIM3," , "FTSYM_ZS," , "FTSYM_PAR," , "FTSYM_DIM1," , "FTSYM_DIM2," , "FTSYM_DIM3," , "FTRAUM_ZS," , "FTRAUM_PAR," , "FTRAUM_DIM1," , "FTRAUM_DIM2" , "FTRAUM_DIM3," , "FTFORM," , "FTKOEF," , (char *)NULL }; /*options for FTINFO part 2_1*/ char* optlist_FTINFO_2_1[]= { "FT_ABS" , "FT_REL" , (char *)NULL }; /*options for FTINFO part 2_2*/ char* optlist_FTINFO_2_2[]= { "FT_SYM" , "FT_ANTI" , "FT_ASYM" , (char *)NULL }; /*options for FTINFO part 2_3*/ char* optlist_FTINFO_2_3[]= { "FT_PHYS" , "FT_FOUR" , (char *)NULL }; /*options for FTINFO part 2_4*/ char* optlist_FTINFO_2_4[]= { "FT_REAL" , (char *)NULL }; /*options for FTINFO part 2_5*/ char* optlist_FTINFO_2_5[]= { "FT_REIM" , "FT_MODMATH" , "FT_MODPHYS" , "FT_PHASE" , (char *)NULL }; /*options for FT_SCALEGEO*/ char* optlist_FT_SCALEGEO[]= { "ZS," , "PAR," , "DIM1," , "DIM2," , "DIM3," , (char *)NULL }; /*options for FT_SCALERE*/ char* optlist_FT_SCALERE[]= { "1/RE" , "RE" , "SQRT(1/RE)" , "SQRT(RE)" , (char *)NULL }; /*options for FT_VERKN_GRUND*/ char* optlist_FT_VERKN_GRUND[]= { "ADD" , "SUB" , "DIV_Y_REF" , (char *)NULL }; /*options for FT2PHYS*/ char* optlist_FT2PHYS[]= { "ZS," , "PAR," , (char *)NULL }; /*options for FTREAL2MODPH*/ char* optlist_FTREAL2MODPH[]= { "MODMATH" , "MODPHYS" , "PHASE" , "REPART" , "IMPART" , (char *)NULL }; /*options for GCUT part 1*/ char* optlist_GCUT_1[]= { "ZS," , "PAR," , "DIM1," , "DIM2," , "DIM3," , "END" , (char *)NULL }; /*options for GCUT part 2*/ char* optlist_GCUT_2[]= { "TOP," , "TAIL," , "RANGE," , (char *)NULL }; /*options for GEOM part 1*/ char* optlist_GEOM_1[]= { "SET," , "SCTR," , (char *)NULL }; /*options for GEOM part 2*/ char* optlist_GEOM_2[]= { "ZS," , "PAR," , "DIM1," , "DIM2," , "DIM3," , (char *)NULL }; /*options for INTEGRIEREN part 1*/ char* optlist_INTEGRIEREN_1[]= { "DIM1," , "DIM2," , "DIM3," , (char *)NULL }; /*options for INTEGRIEREN part 3*/ char* optlist_INTEGRIEREN_3[]= { "AUF," , "AB," , (char *)NULL }; /*options for INTEGRIEREN part 4*/ char* optlist_INTEGRIEREN_4[]= { "F" , "D1" , "D2" , "D3" , "D2_ABS" , "D3_ABS" , "B10" , "BEXP" , (char *)NULL }; /*options for INTPOL part 1*/ char* optlist_INTPOL_1[]= { "DIM1," , "DIM2," , "DIM3," , "INGRID," , "OUTGRID," , (char *)NULL }; /*options for INTPOL part 2*/ char* optlist_INTPOL_2[]= { "O2" , "O4" , "O6" , (char *)NULL }; /*options for INTPOL INGRID*/ char* optlist_INTPOL_INGRID[]= { "X0," , "DX," , "MIX," , (char *)NULL }; /*options for INTPOL OUTGRID*/ char* optlist_INTPOL_OUTGRID[]= { "NPTS," , "XMIN," , "XMAX," , "MIX," , "FILE," , (char *)NULL }; /*options for INTPOL OUTGRID part 3*/ char* optlist_INTPOL_OUTGRID_3[]= { "GEO," , "DAT," , (char *)NULL }; /*options for INTPOL OUTGRID part 4*/ char* optlist_INTPOL_OUTGRID_4[]= { "ZS" , "PAR" , "DIM1" , "DIM2" , "DIM3" , (char *)NULL }; /*options for KENNSATZ part 2*/ char* optlist_KENNSATZ_2[]= { "KURZ" , "ZS" , "PAR" , "DIM" , "GEO" , "UDEF" , "MIX" , "X0XE" , (char *)NULL }; /*options for MISCHEN*/ char* optlist_MISCHEN[]= { "Z" , "P" , "X" , "Y" , (char *)NULL }; /*options for MITTELUNG*/ char* optlist_MITTELUNG[]= { "TAVG" , "RMS" , "PAVG," , "SAVG" , (char *)NULL }; /*options for P2FT part 2*/ char* optlist_P2FT_2[]= { "first," , "last," , (char *)NULL }; /*options for P2FT part 3*/ char* optlist_P2FT_3[]= { "nowin" , "welch" , "hanning" , (char *)NULL }; /*options for PHASGLATT part 1*/ char* optlist_PHASGLATT_1[]= { "DIM1," , "DIM2," , "DIM3," , (char *)NULL }; /*options for PHYS2FT*/ char* optlist_PHYS2FT[]= { "ZS," , "PAR," , "DIM1," , "DIM2," , "DIM3," , (char *)NULL }; /*options for REDUCE part 1*/ char* optlist_REDUCE_1[]= { "ZS," , "PAR," , "DIM1," , "DIM2," , "DIM3," , (char *)NULL }; /*options for REDUCE part 2*/ char* optlist_REDUCE_2[]= { "MAX" , "MIN" , "MAXABS" , "MINABS" , "MAXL10" , "SUM" , "SRMSFT" , "MEANVAL" , (char *)NULL }; /*options for SCHREIBFORMAT*/ char* optlist_SCHREIBFORMAT[]= { "IEEES" , "IEEED" , "IEEEQ" , (char *)NULL }; /*options for TECPLOT part 1*/ char* optlist_TECPLOT_1[]= { "titel," , "DIM1," , "DIM2," , "DIM3," , "vars," , "zones," , "TECPLTCRV_USE_OFFSET" , (char *)NULL }; /*options for TECPLOT part 2*/ char* optlist_TECPLOT_2[]= { "GEO" , "ATTR" , (char *)NULL }; /*options for UMORDNEN part 1*/ char* optlist_UMORDNEN_1[]= { "ZS," , "PAR," , "DIM1," , "DIM2," , "DIM3," , (char *)NULL }; /*options for UMORDNEN part 2*/ char* optlist_UMORDNEN_2[]= { "ZS" , "PAR" , "DIM1" , "DIM2" , "DIM3" , (char *)NULL }; /*options for VERKETTEN*/ char* optlist_VERKETTEN[]= { "ZS" , "PAR" , "DIM1" , "DIM2" , "DIM3" , (char *)NULL }; /*options for VERKNUEPFEN*/ char* optlist_VERKNUEPFEN[]= { "ADD," , "SUB," , "MUL," , "DIV," , (char *)NULL }; /*options for WINDOW part 1*/ char* optlist_WINDOW_1[]= { "HANNING," , "HANNING_SCALE," , "WELCH," , (char *)NULL }; /*options for WINDOW part 2*/ char* optlist_WINDOW_2[]= { "ZS" , "PAR" , "DIM1" , "DIM2" , "DIM3" , (char *)NULL }; /*initialization of readline improvements: --------------------------------------*/ initialize_readline_ () { /* Allow conditional parsing of the ~/.inputrc file. */ rl_readline_name = "EAS3"; /* Tell the completer that we want a crack first. */ rl_attempted_completion_function = eas3_completion; } /*duplicate string: ---------------*/ char * dupstr (s) char *s; { char *r; /*dopplet so gro�er Speicher allokiert, wegen IA64, besser mit sizeof(char) statt 2*/ /*r = xmalloc (strlen(s) + 1);*/ r = malloc (strlen (s) *2+ 2); if(r==NULL) return ((char*)NULL); strcpy (r, s); return (r); } /*global variables: ---------------*/ static char command_match[128]; static char option_one[128]; static char option_two[128]; static int start_global; static int option_count; /*Vervollstaendigung der EAS3 commandos: ------------------------------------*/ char ** eas3_completion (text, start, end) const char *text; int start, end; { char **matches; int commandnumber; int i; int laenge_1; int laenge_2; matches = (char **)NULL; start_global = start; if (start == 0) { sprintf(option_one,""); sprintf(option_two,""); matches = rl_completion_matches (text, command_generator); option_count=0; if( (matches!=NULL) ) { sprintf(command_match,"%s",matches[0]); } } else { matches = rl_completion_matches (text, option_generator); laenge_1=strlen(option_one); laenge_2=strlen(option_two); if( (matches!=NULL) ) { /*determine option no 1*/ if(laenge_1 == 0) { sprintf(option_one,"%s",matches[0]); } else if(option_one[laenge_1-1]!=',') { sprintf(option_one,"%s",matches[0]); } /*determine option no 2*/ else if(laenge_2 == 0) { sprintf(option_two,"%s",matches[0]); } else if(option_two[laenge_2-1]!=',') { sprintf(option_two,"%s",matches[0]); } /*increase option counter*/ if(matches[1]==NULL) { option_count=option_count+1; } } } return (matches); } /* Generator function for command completion. STATE lets us know whether to start from scratch; without any state (i.e. STATE == 0), then we start at the top of the list. -----------------------------------------------*/ char * command_generator (text, state) const char *text; int state; { static int list_index, len; char *name; /* If this is a new word to complete, initialize now. This includes saving the length of TEXT for efficiency, and initializing the index variable to 0. */ if (!state) { list_index = 0; len = strlen (text); } /* Return the next name which partially matches from the command list. */ while (name = commands[list_index]) { list_index++; if (strncasecmp (name, text, len) == 0) { return (dupstr(name)); } } /* If no names matched, then return NULL. */ return ((char *)NULL); } /* Options generator: ----------------*/ char * option_generator (text, state) const char *text; int state; { static int list_index, len; char *name; char **pointer; /*printf("start_global %i\n",start_global);*/ /*ABLEITEN part 1: --------------*/ if(!strcasecmp(command_match,"ABLEITEN,") && start_global == 10 ) { pointer = optlist_ABLEITEN1; } /*ABLEITEN part 2: --------------*/ else if(!strcasecmp(command_match,"ABLEITEN,") && option_count == 1 ) { pointer = optlist_ABLEITEN2; } /*CONVERT: ------*/ else if(!strcasecmp(command_match,"CONVERT,") && start_global ==9 ) { pointer = optlist_CONVERT; } /*COVISE part 1: ------------*/ else if(!strcasecmp(command_match,"COVISE,") && start_global ==8 ) { pointer = optlist_COVISE; } /*COVISE part 2 (nox0shift): ------------------------*/ else if(!strcasecmp(command_match,"COVISE,") && !strcasecmp(option_one,"nox0shift,") && option_count == 1 ) { pointer = optlist_COVISE_nox0shift; } /*COVISE part 2 (shift): ------------------------*/ else if(!strcasecmp(command_match,"COVISE,") && !strcasecmp(option_one,"shift,") && option_count == 1 ) { pointer = optlist_COVISE_shift; } /*COVISE part 3 (shift): ------------------------*/ else if(!strcasecmp(command_match,"COVISE,") && !strcasecmp(option_one,"shift,") && option_count == 2 ) { option_count = 3; printf("\n stepsize dx (real number)\n"); return ((char *)NULL); } /*COVISE part 2 (DIM1,DIM2,DIM3): -------------------*/ else if(!strcasecmp(command_match,"COVISE,") && (!strcasecmp(option_one,"DIM1,")||!strcasecmp(option_one,"DIM2,")||!strcasecmp(option_one,"DIM3,")) && option_count == 1 ) { option_count = 2; printf("\n initial coordinate x0 (real number)\n"); return ((char *)NULL); } /*COVISE part 3 (DIM1): -------------------*/ else if(!strcasecmp(command_match,"COVISE,") && (!strcasecmp(option_one,"DIM1,")||!strcasecmp(option_one,"DIM2,")||!strcasecmp(option_one,"DIM3,")) && option_count == 2 ) { option_count = 3; printf("\n stepsize dx (real number)\n"); return ((char *)NULL); } /*ECHO: ---*/ else if(!strcasecmp(command_match,"ECHO,") && start_global ==6 ) { pointer = optlist_EINAUS; } /*EDITATTR: -------*/ else if(!strcasecmp(command_match,"EDITATTR,") && start_global ==10 ) { pointer = optlist_EDITATTR; } /*F2PT part 1: -----------*/ else if(!strcasecmp(command_match,"F2PT,") && start_global ==6) { option_count = 1; printf("\n number of timesteps per period\n"); return ((char *)NULL); } /*F2PT part 2: -----------*/ else if(!strcasecmp(command_match,"F2PT,") && option_count==1) { pointer = optlist_F2PT_2; } /*F2PZ part 1: ----------*/ else if(!strcasecmp(command_match,"F2PZ,") && start_global ==6 ) { pointer = optlist_F2PZ; } /*F2PZ part 2: ----------*/ else if(!strcasecmp(command_match,"F2PZ,") && option_count==1) { option_count = 2; printf("\n points per two periods in z-direction\n"); return ((char *)NULL); } /*F2PZ part 3: ----------*/ else if(!strcasecmp(command_match,"F2PZ,") && option_count==2) { option_count = 3; printf("\n index intervals\n"); return ((char *)NULL); } /*FENSTER: ------*/ else if(!strcasecmp(command_match,"FENSTER,") && start_global ==9 ) { printf("\n index interval, e.g. 1-*/1, 1-*/1, 1-*/1\n"); return ((char *)NULL); } /*FILES: ----*/ else if(!strcasecmp(command_match,"FILES,") && start_global ==7 ) { printf("\n specify filenames, e.g. \"file1.eas\", \"file2.eas\"\n"); return ((char *)NULL); } /*FMITTELUNG part 1: ----------------*/ else if(!strcasecmp(command_match,"FMITTELUNG,") && start_global ==12 ) { pointer = optlist_FMITTELUNG_1; } /*FMITTELUNG part 2: ----------------*/ else if(!strcasecmp(command_match,"FMITTELUNG,") && start_global >12 && start_global <24 ) { pointer = optlist_FMITTELUNG_2; } /*FMITTELUNG part 3: ----------------*/ else if(!strcasecmp(command_match,"FMITTELUNG,") && option_count==2 ) { if(!strcasecmp(option_two,"SITRA,")) { pointer = optlist_FMITTELUNG_3; } else { printf("\n zpts2per = points per two periods in z-direction\n"); option_count=3; return ((char *)NULL); } } /*FMITTELUNG part 4: ----------------*/ else if(!strcasecmp(command_match,"FMITTELUNG,") && option_count==3 ) { if(!strcasecmp(option_two,"SITRA,")) { printf("\n zpts2per = points per two periods in z-direction\n"); option_count=4; return ((char *)NULL); } else { printf("\n zrange = index intervals\n"); option_count=4; return ((char *)NULL); } } /*FMITTELUNG part 5: ----------------*/ else if(!strcasecmp(command_match,"FMITTELUNG,") && option_count==4 ) { if(!strcasecmp(option_two,"SITRA,")) { printf("\n zrange = index intervals\n"); option_count=5; } return ((char *)NULL); } /*FT_DREHEFELD part 1: ------------------*/ else if(!strcasecmp(command_match,"FT_DREHEFELD,") && start_global ==14 ) { printf("\n reference point X0\n"); option_count=1; return ((char *)NULL); } /*FT_DREHEFELD part 2: ------------------*/ else if(!strcasecmp(command_match,"FT_DREHEFELD,") && option_count==1 ) { printf("\n reference point Z0\n"); option_count=2; return ((char *)NULL); } /*FT_DREHEFELD part 3: ------------------*/ else if(!strcasecmp(command_match,"FT_DREHEFELD,") && option_count==2 ) { printf("\n angle in degree\n"); option_count=3; return ((char *)NULL); } /*FT_DREHEFELD part 4: ------------------*/ else if(!strcasecmp(command_match,"FT_DREHEFELD,") && option_count==3 ) { printf("\n x coordinate of last point XXLEN\n"); option_count=4; return ((char *)NULL); } /*FT_DREHEFELD part 5: ------------------*/ else if(!strcasecmp(command_match,"FT_DREHEFELD,") && option_count==4 ) { printf("\n z coordinate of last point ZZLEN\n"); option_count=5; return ((char *)NULL); } /*FT_DREHEFELD part 6: ------------------*/ else if(!strcasecmp(command_match,"FT_DREHEFELD,") && option_count==5 ) { printf("\n z points in xx direction NPOINTSXX\n"); option_count=6; return ((char *)NULL); } /*FT_DREHEFELD part 7: ------------------*/ else if(!strcasecmp(command_match,"FT_DREHEFELD,") && option_count==6 ) { printf("\n z points in zz direction NPOINTSZZ\n"); option_count=7; return ((char *)NULL); } /*FT_DREHE_S: ---------*/ else if(!strcasecmp(command_match,"FT_DREHE_S,") && start_global ==12 ) { pointer = optlist_FT_DREHE_S; } /*FT_ADIM part 1: ----------------*/ else if(!strcasecmp(command_match,"FT_ADIM,") && start_global ==9 ) { pointer = optlist_FT_ADIM_1; } /*FT_ADIM part 2: ----------------*/ else if(!strcasecmp(command_match,"FT_ADIM,") && start_global >9 && start_global <18 ) { pointer = optlist_FT_ADIM_2; } /*FT_CORRELATION: -------------*/ else if(!strcasecmp(command_match,"FT_CORRELATION,") && start_global ==16) { pointer = optlist_FT_CORRELATION; } /*FTINFO part 1: ------------*/ else if(!strcasecmp(command_match,"FTINFO,") && start_global ==8 ) { pointer = optlist_FTINFO_1; } /*FTINFO part 2_1 (Befehle mit [FT_ABS | FT_REL]): ------------*/ else if(!strcasecmp(command_match,"FTINFO,") && option_count == 1 && (!strcasecmp(option_one,"COORTYPE_ZS,") || !strcasecmp(option_one,"COORTYPE_PAR,") || !strcasecmp(option_one,"COORTYPE_DIM1,") || !strcasecmp(option_one,"COORTYPE_DIM2,") || !strcasecmp(option_one,"COORTYPE_DIM3,")) ) { pointer = optlist_FTINFO_2_1; } /*FTINFO part 2_2 (Befehle mit [FT_SYM | FT_ANTI | FT_ASYM]): ------------*/ else if(!strcasecmp(command_match,"FTINFO,") && option_count == 1 && (!strcasecmp(option_one,"FTSYM_ZS,") || !strcasecmp(option_one,"FTSYM_PAR,") || !strcasecmp(option_one,"FTSYM_DIM1,") || !strcasecmp(option_one,"FTSYM_DIM2,") || !strcasecmp(option_one,"FTSYM_DIM3,")) ) { pointer = optlist_FTINFO_2_2; } /*FTINFO part 2_3 (Befehle mit [FT_PHYS | FT_FOUR]): ------------*/ else if(!strcasecmp(command_match,"FTINFO,") && option_count == 1 <25 && (!strcasecmp(option_one,"FTRAUM_ZS,") || !strcasecmp(option_one,"FTRAUM_PAR,") || !strcasecmp(option_one,"FTRAUM_DIM1,") || !strcasecmp(option_one,"FTRAUM_DIM2,") || !strcasecmp(option_one,"FTRAUM_DIM3,")) ) { pointer = optlist_FTINFO_2_3; } /*FTINFO part 2_4 (Befehle mit [FT_REAL]): ------------*/ else if(!strcasecmp(command_match,"FTINFO,") && (!strcasecmp(option_one,"FTFORM,")) && option_count == 1 ) { pointer = optlist_FTINFO_2_4; } /*FTINFO part 2_5 (Befehle mit [FT_REIM | FT_MODMATH | FT_MODPHYS | FT_PHASE]): ------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"FTKOEF,")) && option_count == 1 ) { pointer = optlist_FTINFO_2_5; } /*FTINFO part (LAUFNAME): ---------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"LAUFNAME,")) && option_count == 1 ) { printf("\n name of the simulation in \"\"\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (VARNAME): ---------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"VARNAME,")) && option_count == 1 ) { printf("\n name of the variable in \"\"\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (COORNAME): ---------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"COORNAME_ZS,")) && option_count == 1 ) { printf("\n name of timestep coordinate in \"\"\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (COORNAME): ---------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"COORNAME_PAR,")) && option_count == 1 ) { printf("\n name of parameter coordinate in \"\"\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (COORNAME): ---------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"COORNAME_DIM1,")) && option_count == 1 ) { printf("\n name of dimension 1 coordinate in \"\"\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (COORNAME): ---------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"COORNAME_DIM2,")) && option_count == 1 ) { printf("\n name of dimension 2 coordinate in \"\"\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (COORNAME): ---------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"COORNAME_DIM3,")) && option_count == 1 ) { printf("\n name of dimension 3 coordinate in \"\"\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (U_UNED): ---------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"U_UNEND,")) && option_count == 1 ) { printf("\n value of free stream velocity U_UNEND\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (W_UNED): ---------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"W_UNEND,")) && option_count == 1 ) { printf("\n value of free stream velocity W_UNEND (real number)\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (RE_NUM): ---------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"RE_NUM,")) && option_count == 1 ) { printf("\n Reynoldsnumber RE_NUM, e.g. for sqrt(Re) scaling (real number)\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (NU): ---------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"NU,")) && option_count == 1 ) { printf("\n NU (real number)\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (ALPHA_ZS): ---------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"ALPHA_ZS,")) && option_count == 1 ) { printf("\n wavenumber in timestep direction (real number)\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (ALPHA_PAR): ----------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"ALPHA_PAR,")) && option_count == 1 ) { printf("\n wavenumber in parameter direction (real number)\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (ALPHA_DIM1): -----------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"ALPHA_DIM1,")) && option_count == 1 ) { printf("\n wavenumber in direction 1 (real number)\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (ALPHA_DIM2): -----------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"ALPHA_DIM2,")) && option_count == 1 ) { printf("\n wavenumber in direction 2 (real number)\n"); option_count=2; return ((char *)NULL); } /*FTINFO part (ALPHA_DIM3): -----------------------*/ else if(!strcasecmp(command_match,"FTINFO,")&& (!strcasecmp(option_one,"ALPHA_DIM3,")) && option_count == 1 ) { printf("\n wavenumber in direction 3 (real number)\n"); option_count=2; return ((char *)NULL); } /*FT_LAMBDA2: ---------*/ else if(!strcasecmp(command_match,"FT_LAMBDA2,") && start_global == 12 ) { pointer = optlist_EINAUS; } /*FT_SCALEGEO: ----------*/ else if(!strcasecmp(command_match,"FT_SCALEGEO,") && start_global == 13 ) { pointer = optlist_FT_SCALEGEO; } /*FT_SCALEGEO (part 2): -------------------*/ else if(!strcasecmp(command_match,"FT_SCALEGEO,") && option_count == 1 ) { printf("\n exponent (integer number)\n"); option_count=2; return ((char *)NULL); } /*FT_SCALERE: ----------*/ else if(!strcasecmp(command_match,"FT_SCALERE,") && start_global == 12 ) { pointer = optlist_FT_SCALERE; } /*FT_VERKN_GRUND: -------------*/ else if(!strcasecmp(command_match,"FT_VERKN_GRUND,") && start_global == 16 ) { pointer = optlist_FT_VERKN_GRUND; } /*FT2PHYS: ------*/ else if(!strcasecmp(command_match,"FT2PHYS,") && start_global == 9 ) { pointer = optlist_FT2PHYS; } /*FT2PHYS (part 2): ---------------*/ else if(!strcasecmp(command_match,"FT2PHYS,") && option_count == 1 ) { printf("\n first coordinate (real number)\n"); option_count=2; return ((char *)NULL); } /*FT2PHYS (part 3): ---------------*/ else if(!strcasecmp(command_match,"FT2PHYS,") && option_count == 2 ) { printf("\n last coordinate (real number)\n"); option_count=3; return ((char *)NULL); } /*FT2PHYS (part 4): ---------------*/ else if(!strcasecmp(command_match,"FT2PHYS,") && option_count == 3 ) { printf("\n number of points (integer number)\n"); option_count=4; return ((char *)NULL); } /*FTREAL2MODPH: -----------*/ else if(!strcasecmp(command_match,"FTREAL2MODPH,") && start_global == 14 ) { pointer = optlist_FTREAL2MODPH; } /*GCUT part 1: -----------*/ else if(!strcasecmp(command_match,"GCUT,") && start_global == 6 ) { pointer = optlist_GCUT_1; } /*GCUT part 2: -----------*/ else if(!strcasecmp(command_match,"GCUT,") && option_count == 4 ) { pointer = optlist_GCUT_2; } /*GEOM part 1: -----------*/ else if(!strcasecmp(command_match,"GEOM,") && start_global == 6 ) { pointer = optlist_GEOM_1; } /*GEOM part 2: -----------*/ else if(!strcasecmp(command_match,"GEOM,") && option_count == 1 ) { pointer = optlist_GEOM_2; } /*GEOM part 3: -----------*/ else if(!strcasecmp(command_match,"GEOM,") && option_count == 2 ) { if(!strcasecmp(option_one,"SET,")) printf("\n initial coordinate X0 (real number)\n"); else if(!strcasecmp(option_one,"SCTR,")) printf("\n scaling factor FACT (real number)\n"); option_count =3; return ((char *)NULL); } /*GEOM part 4: -----------*/ else if(!strcasecmp(command_match,"GEOM,") && option_count == 3 ) { if(!strcasecmp(option_one,"SET,")) printf("\n stepsize X0 (real number)\n"); else if(!strcasecmp(option_one,"SCTR,")) printf("\n offset OFFSET (real number)\n"); option_count =4; return ((char *)NULL); } /*INFILE: -----*/ else if(!strcasecmp(command_match,"INFILE,") && start_global ==8) { printf("\n number of input files (integer number or TMP identifier)\n"); option_count=1; return ((char *)NULL); } /*INTEGRIEREN part 1: -----------------*/ else if(!strcasecmp(command_match,"INTEGRIEREN,") && start_global ==13) { pointer = optlist_INTEGRIEREN_1; } /*INTEGRIEREN part 2: -----------------*/ else if(!strcasecmp(command_match,"INTEGRIEREN,") && option_count ==1) { printf("\n integration constant (real number)\n"); option_count = 2; return ((char *)NULL); } /*INTEGRIEREN part 3: -----------------*/ else if(!strcasecmp(command_match,"INTEGRIEREN,") && option_count ==2) { pointer = optlist_INTEGRIEREN_3; } /*INTEGRIEREN part 4: -----------------*/ else if(!strcasecmp(command_match,"INTEGRIEREN,") && option_count ==3) { pointer = optlist_INTEGRIEREN_4; } /*INTERAKTIV: ---------*/ else if (!strcasecmp(command_match,"INTERAKTIV,") && start_global == 12 ) { pointer = optlist_EINAUS; } /*INTPOL part 1: ------------*/ else if (!strcasecmp(command_match,"INTPOL,") && start_global == 8 ) { pointer = optlist_INTPOL_1; } /*INTPOL part 2: ------------*/ else if (!strcasecmp(command_match,"INTPOL,") && option_count ==1 && (!strcasecmp(option_one,"DIM1,") || !strcasecmp(option_one,"DIM2,") || !strcasecmp(option_one,"DIM3,")) ) { pointer = optlist_INTPOL_2; } /*INTPOL (INGRID): --------------*/ else if (!strcasecmp(command_match,"INTPOL,") && option_count ==1 && !strcasecmp(option_one,"INGRID,") ) { pointer = optlist_INTPOL_INGRID; } /*INTPOL (INGRID part 2): ---------------------*/ else if (!strcasecmp(command_match,"INTPOL,") && option_count ==2 && !strcasecmp(option_one,"INGRID,") ) { if(!strcasecmp(option_two,"X0,")) printf("\n initial coordinate X0 of the input file (real number)\n"); else if(!strcasecmp(option_two,"DX,")) printf("\n step size DX of the input file (real number)\n"); else if(!strcasecmp(option_two,"MIX,")) printf("\n specification of wall zones of the input file (integer numbers)\n"); option_count = 3; return ((char *)NULL); } /*INTPOL (OUTGRID): ---------------*/ else if (!strcasecmp(command_match,"INTPOL,") && option_count ==1 && !strcasecmp(option_one,"OUTGRID,") ) { pointer = optlist_INTPOL_OUTGRID; } /*INTPOL (OUTGRID part 2): ---------------------*/ else if (!strcasecmp(command_match,"INTPOL,") && option_count ==2 && !strcasecmp(option_one,"OUTGRID,") ) { if(!strcasecmp(option_two,"NPTS,")) printf("\n number of points of the outputfile (integer number)\n"); else if(!strcasecmp(option_two,"XMIN,")) printf("\n initial coordinate XMIN of the outputfile (real number)\n"); else if(!strcasecmp(option_two,"XMAX,")) printf("\n final coordinate XMAX of the outputfile (real number)\n"); else if(!strcasecmp(option_two,"MIX,")) printf("\n specification of wall zones of the outputfile (integer numbers)\n"); else if(!strcasecmp(option_two,"FILE,")) printf("\n number of file for grid of output file (integer number)\n"); option_count = 3; return ((char *)NULL); } /*INTPOL (OUTGRID pert 3): ----------------------*/ else if (!strcasecmp(command_match,"INTPOL,") && option_count ==3 && !strcasecmp(option_one,"OUTGRID,") ) { pointer = optlist_INTPOL_OUTGRID_3; } /*INTPOL (OUTGRID pert 4): ----------------------*/ else if (!strcasecmp(command_match,"INTPOL,") && option_count ==4 && !strcasecmp(option_one,"OUTGRID,") ) { pointer = optlist_INTPOL_OUTGRID_4; } /*KENNSATZ: -------*/ else if (!strcasecmp(command_match,"KENNSATZ,") && start_global == 10 ) { printf("\n file number (integer number)\n"); option_count = 1; return ((char *)NULL); } /*KENNSATZ part 2 (optional): -------------------------*/ else if (!strcasecmp(command_match,"KENNSATZ,") && option_count == 1 ) { pointer = optlist_KENNSATZ_2; } /*KOPIEREN part 1: --------------*/ else if (!strcasecmp(command_match,"KOPIEREN,") && start_global == 10 ) { printf("\n file number (integer number)\n"); option_count = 1; return ((char *)NULL); } /*KSSCHREIB part 1: ---------------*/ else if (!strcasecmp(command_match,"KSSCHREIB,") && start_global == 11 ) { printf("\n file number, , file number (integer numbers, < or > indicating write direction)\n"); option_count = 1; return ((char *)NULL); } /*LOG: --*/ else if (!strcasecmp(command_match,"LOG,") && start_global == 5 ) { printf("\n epsilon (real number)\n"); option_count = 1; return ((char *)NULL); } /*LN: -*/ else if (!strcasecmp(command_match,"LN,") && start_global == 4 ) { printf("\n epsilon (real number)\n"); option_count = 1; return ((char *)NULL); } /*MISCHEN: -------*/ else if (!strcasecmp(command_match,"MISCHEN,") && start_global == 9 ) { pointer = optlist_MISCHEN; } /*MITTELUNG: --------*/ else if (!strcasecmp(command_match,"MITTELUNG,") && start_global == 11 ) { pointer = optlist_MITTELUNG; } /*MITTELUNG part 2: --------*/ else if (!strcasecmp(command_match,"MITTELUNG,") && option_count == 1 && !strcasecmp(option_one,"PAVG,") ) { printf("\n number of periods in file (integer)\n"); option_count=1; return ((char *)NULL); } /*NFILES: -----*/ else if(!strcasecmp(command_match,"NFILES,") && start_global ==8 ) { printf("\n specify filenames, e.g. \"file1.eas\", \"file2.eas\"\n"); option_count=1; return ((char *)NULL); } /*OUTFILE: ------*/ else if(!strcasecmp(command_match,"OUTFILE,") && start_global ==9) { printf("\n number of output files (integer number or TMP identifier)\n"); option_count=1; return ((char *)NULL); } /*P2FT part 1: ----------*/ else if (!strcasecmp(command_match,"P2FT,") && start_global == 6 ) { printf("\n highest harmonic (integer number)\n"); option_count = 1; return ((char *)NULL); } /*P2FT part 2: ----------*/ else if (!strcasecmp(command_match,"P2FT,") && option_count == 1 ) { pointer = optlist_P2FT_2; } /*P2FT part 3: ----------*/ else if (!strcasecmp(command_match,"P2FT,") && option_count == 2 ) { pointer = optlist_P2FT_3; } /*PAR2D_PAR3D: -----------*/ else if (!strcasecmp(command_match,"PAR2D_PAR3D,") && start_global == 13 ) { printf("\n parameter stepsize PARSTEP (integer number)\n"); option_count = 1; return ((char *)NULL); } /*PARAMETER: --------*/ else if(!strcasecmp(command_match,"PARAMETER,") && start_global ==11 ) { printf("\n parameter interval, e.g. 1-*/1\n"); option_count = 1; return ((char *)NULL); } /*PHASGLATT part 1: ---------------*/ else if(!strcasecmp(command_match,"PHASGLATT,") && start_global ==11 ) { pointer = optlist_PHASGLATT_1; } /*PHASGLATT part 2: ---------------*/ else if(!strcasecmp(command_match,"PHASGLATT,") && option_count == 1 ) { printf("\n first parameter (integer number)\n"); option_count = 2; return ((char *)NULL); } /*PHASGLATT part 3: ---------------*/ else if(!strcasecmp(command_match,"PHASGLATT,") && option_count == 2 ) { printf("\n parameter step (integer number)\n"); option_count = 3; return ((char *)NULL); } /*PHYS2FT part 1: -------------*/ else if(!strcasecmp(command_match,"PHYS2FT,") && start_global ==9 ) { pointer = optlist_PHYS2FT; } /*PHYS2FT part 2: -------------*/ else if(!strcasecmp(command_match,"PHYS2FT,") && option_count == 1 ) { printf("\n wavenumber range, e.g. 0-10\n"); option_count = 2; return ((char *)NULL); } /*REDUCE part 1: -------------*/ else if(!strcasecmp(command_match,"REDUCE,") && start_global ==8 ) { pointer = optlist_REDUCE_1; } /*REDUCE part 2: -------------*/ else if(!strcasecmp(command_match,"REDUCE,") && option_count == 1 ) { pointer = optlist_REDUCE_2; } /*SCALETRANS part 1: ----------------*/ else if(!strcasecmp(command_match,"SCALETRANS,") && start_global ==12 ) { printf("\n factor (real number)\n"); option_count = 1; return ((char *)NULL); } /*SCALETRANS part 2: ----------------*/ else if(!strcasecmp(command_match,"SCALETRANS,") && option_count == 1 ) { printf("\n offset (real number)\n"); option_count = 2; return ((char *)NULL); } /*SCHREIBFORMAT: ------------*/ else if(!strcasecmp(command_match,"SCHREIBFORMAT,") && start_global ==15 ) { pointer = optlist_SCHREIBFORMAT; } /*TECPLOT part 1: -------------*/ else if(!strcasecmp(command_match,"TECPLOT,") && start_global ==9 ) { pointer = optlist_TECPLOT_1; } /*TECPLOT part 2: -------------*/ else if(!strcasecmp(command_match,"TECPLOT,") && option_count == 1 && (!strcasecmp(option_one,"vars,")||!strcasecmp(option_one,"zones,")) ) { pointer = optlist_TECPLOT_2; } /*TECPLOT title: -------------*/ else if(!strcasecmp(command_match,"TECPLOT,") && option_count == 1 && !strcasecmp(option_one,"titel,") ) { printf("\n title name (string in \"\")\n"); option_count = 2; return ((char *)NULL); } /*TECPLOT dim1: -------------*/ else if(!strcasecmp(command_match,"TECPLOT,") && option_count == 1 && !strcasecmp(option_one,"DIM1,") ) { printf("\n name for dimension 1 (string in \"\")\n"); option_count = 2; return ((char *)NULL); } /*TECPLOT dim2: -------------*/ else if(!strcasecmp(command_match,"TECPLOT,") && option_count == 1 && !strcasecmp(option_one,"DIM2,") ) { printf("\n name for dimension 2 (string in \"\")\n"); option_count = 2; return ((char *)NULL); } /*TECPLOT dim3: -------------*/ else if(!strcasecmp(command_match,"TECPLOT,") && option_count == 1 && !strcasecmp(option_one,"DIM3,") ) { printf("\n name for dimension 3 (string in \"\")\n"); option_count = 2; return ((char *)NULL); } /*UMORDNEN part 1: --------------*/ else if(!strcasecmp(command_match,"UMORDNEN,") && start_global ==10 ) { pointer = optlist_UMORDNEN_1; } /*UMORDNEN part 2: --------------*/ else if(!strcasecmp(command_match,"UMORDNEN,") && option_count ==1 ) { pointer = optlist_UMORDNEN_2; } /*VERKETTEN: --------*/ else if(!strcasecmp(command_match,"VERKETTEN,") && start_global ==11 ) { pointer = optlist_VERKETTEN; } /*VERKNUEPFEN: ----------*/ else if(!strcasecmp(command_match,"VERKNUEPFEN,") && start_global ==13 ) { pointer = optlist_VERKNUEPFEN; } /*VERKNUEPFEN part 2: -----------------*/ else if(!strcasecmp(command_match,"VERKNUEPFEN,") && option_count ==1 ) { printf("\n timestep of infile 1 (integer or *)\n"); option_count = 2; return ((char *)NULL); } /*VERKNUEPFEN part 3: -----------------*/ else if(!strcasecmp(command_match,"VERKNUEPFEN,") && option_count ==2 ) { printf("\n parameter of infile 1 (integer or *)\n"); option_count = 3; return ((char *)NULL); } /*VERKNUEPFEN part 4: -----------------*/ else if(!strcasecmp(command_match,"VERKNUEPFEN,") && option_count ==3 ) { printf("\n timestep of infile 2 (integer or *)\n"); option_count = 4; return ((char *)NULL); } /*VERKNUEPFEN part 5: -----------------*/ else if(!strcasecmp(command_match,"VERKNUEPFEN,") && option_count ==4 ) { printf("\n parameter of infile 2 (integer or *)\n"); option_count = 5; return ((char *)NULL); } /*WERTEBEREICH: -----------*/ else if(!strcasecmp(command_match,"WERTEBEREICH,") && start_global ==14 ) { printf("\n number of file (integer number or TMP identifier)\n"); option_count = 1; return ((char *)NULL); } /*WINDOW part 1: --------------*/ else if(!strcasecmp(command_match,"WINDOW,") && start_global ==8 ) { pointer = optlist_WINDOW_1; } /*WINDOW part 2: --------------*/ else if(!strcasecmp(command_match,"WINDOW,") && option_count ==1 ) { pointer = optlist_WINDOW_2; } /*ZEITINDEX: --------*/ else if(!strcasecmp(command_match,"ZEITINDEX,") && start_global ==11 ) { printf("\n time index interval for time steps, e.g. 1-*/1\n"); option_count = 1; return ((char *)NULL); } /*ZEITSCHRITT: --------*/ else if(!strcasecmp(command_match,"ZEITSCHRITT,") && start_global ==13 ) { printf("\n time index interval for time steps, e.g. 1-*/1\n"); option_count = 1; return ((char *)NULL); } /*Keine Liste mit Optionen: -------------------------*/ else { return ((char *)NULL); } if (!state) { list_index = 0; len = strlen (text); } /* Return the next name which partially matches from the command list. */ while (name = pointer[list_index]) { list_index++; if (strncasecmp (name, text, len) == 0) { return (dupstr(name)); } } /* If no names matched, then return NULL. */ return ((char *)NULL); } /*=================================================================== End of command completion ===================================================================*/ /* History stack */ extern HIST_ENTRY **history_list (); RETURNVALUE C_RL_GETSTR(char cmdline[]) { char *temp, *prompt; int i, slen; temp = (char *) NULL; /* prompt = ""; */ prompt = "EAS3> "; /* String mit Leerzeichen beschreiben, damit Fortran keine Probleme bekommt */ for (i=0;i INPUTLINELENGTH ) { return( -1 ); } /* Falls string nicht leer auf history stack abspeichern. */ if (*temp) { add_history(temp); } /* copy from temp to cmdline */ for (i=0;i