avuton
15-12-2003, 10:00
kann mir einer sagen, warum folgender code bei glibc versionen unter 2.2.5 einen segmentation fault auslöst?
int main(int argc, char *argv[]){
char buff[MAX],*p;
int begintag=0;
/* Help und Version Überprüfung */
if(argc!=1){
if(((argc==2 && !strcmp(argv[1], "-h")) || (!strcmp(argv[1], "--help")))){
textview_usage();
}
if(((argc==2 && !strcmp(argv[1], "-v"))|| (!strcmp(argv[1], "--version"))||(!strcmp(argv[1],"-V")))){
textview_version();
}
if(argc==1){
textview_usage();
}
/* Starten des eigentlichen Fensters */
initscr();
start_color();
curs_set(0);
splash_print(COLS);
/* -frame[on|off] */
if(!strcmp(argv[1],"--frame=on")){
drawwalls();
in_str=fopen(argv[2],"r");
}
else if(!strcmp(argv[1],"--frame=off")){
in_str=fopen(argv[2],"r");
}
else{
in_str=fopen(argv[1],"r");
}
/* falls Datei nicht geöffnet werden kann */
if(!in_str){
endwin();
printf("%s no such file (123)...\n", argv[1]);
return -1;
}
/* Datei zeichenweise auslesen */
while(fread(buff,1, 1,in_str)){
p=buff;
/* Anfang eines Tags suchen */
switch(*p){
case'<':
begintag=1;
/* wenn Tag Anfang gefunden, übergebe 1 an die Funktion tag */
tag(begintag);
break;
case'>':
begintag=0;
break;
}
}
getch();
endwin();
}
else{
textview_usage();
}
return 0;
}
gruß avuton
int main(int argc, char *argv[]){
char buff[MAX],*p;
int begintag=0;
/* Help und Version Überprüfung */
if(argc!=1){
if(((argc==2 && !strcmp(argv[1], "-h")) || (!strcmp(argv[1], "--help")))){
textview_usage();
}
if(((argc==2 && !strcmp(argv[1], "-v"))|| (!strcmp(argv[1], "--version"))||(!strcmp(argv[1],"-V")))){
textview_version();
}
if(argc==1){
textview_usage();
}
/* Starten des eigentlichen Fensters */
initscr();
start_color();
curs_set(0);
splash_print(COLS);
/* -frame[on|off] */
if(!strcmp(argv[1],"--frame=on")){
drawwalls();
in_str=fopen(argv[2],"r");
}
else if(!strcmp(argv[1],"--frame=off")){
in_str=fopen(argv[2],"r");
}
else{
in_str=fopen(argv[1],"r");
}
/* falls Datei nicht geöffnet werden kann */
if(!in_str){
endwin();
printf("%s no such file (123)...\n", argv[1]);
return -1;
}
/* Datei zeichenweise auslesen */
while(fread(buff,1, 1,in_str)){
p=buff;
/* Anfang eines Tags suchen */
switch(*p){
case'<':
begintag=1;
/* wenn Tag Anfang gefunden, übergebe 1 an die Funktion tag */
tag(begintag);
break;
case'>':
begintag=0;
break;
}
}
getch();
endwin();
}
else{
textview_usage();
}
return 0;
}
gruß avuton