rem: else if (!fbool & !sbool) { printf("error: you have to give the file to send and the sip:uri at least.\n");
add: else if (!(fbool && sbool)) { printf("error: you have to give the file to send and the sip:uri at least.\n\n");
context: int main(int argc, char *argv[]){	long	address;	FILE	*pf;	char	buff[BUFSIZE];	int		length, c, fbool, sbool, tbool, vbool, ubool, dbool;	int		maxforw, lport, rport;	char	*delim, *delim2;	/* some initialisation to be shure */	username=NULL;	verbose=0;	namebeg=nameend=maxforw=-1;	fbool=sbool=tbool=lport=ubool=0;	vbool=dbool=1;    rport=5060;	memset(buff, 0, BUFSIZE);	memset(message, 0, BUFSIZE);	memset(mes_reply, 0, BUFSIZE);	memset(fqdn, 0, FQDN_SIZE);	if (argc==1) print_help();	/* lots of command line switches to handle*/	while ((c=getopt(argc,argv,"b:de:f:hil:m:r:s:tuv")) != EOF){		switch(c){			case 'b':				namebeg=atoi(optarg);				if (namebeg==-1) {					puts("error: non-numerical appendix begin for the username");					exit(2);				}				break;			case 'd':				dbool=0;				break;			case 'e':				nameend=atoi(optarg);				if (nameend==-1) {					puts("error: non-numerical appendix end for the username");					exit(2);				}				break;			case 'f':				/* file is opened in binary mode so that the cr-lf is preserved */				pf = fopen(optarg, "rb");				if (!pf){					puts("unable to open the file.\n");					exit(2);				}				length  = fread(buff, 1, sizeof(buff), pf);				if (length >= sizeof(buff)){					printf("error:the file is too big. try files of less than %i bytes.\n", BUFSIZE);					puts("      or recompile the program with bigger BUFSIZE defined.");					exit(2);				}				fclose(pf);				buff[length] = '\0';				fbool=1;				break;			case 'h':				print_help();				break;			case 'i':				vbool=0;				break;			case 'l':				lport=atoi(optarg);				if (!lport) {					puts("error: non-numerical local port number");					exit(2);				}				break;			case 'm':				maxforw=atoi(optarg);				if (maxforw==-1) {					puts("error: non-numerical number of max-forwards");					exit(2);				}			case 'r':				rport=atoi(optarg);				if (!rport) {					puts("error: non-numerical remote port number");					exit(2);				}				break;			case 's':				if (!strncmp(optarg,"sip",3)){					if ((delim=strchr(optarg,':'))!=NULL){						delim++;						if ((delim2=strchr(delim,'@'))!=NULL){							username=malloc(delim2-delim+1);							strncpy(username, delim, delim2-delim);							delim2++;							delim=delim2;						}						if ((delim2=strchr(delim,':'))!=NULL){							*delim2 = '\0';							delim2++;							rport = atoi(delim2);							if (!rport) {								puts("error: non-numerical remote port number");								exit(2);							}						}						domainname=malloc(strlen(delim)+1);						strncpy(domainname, delim, strlen(delim));						address = getaddress(delim);						if (!address){							puts("error:unable to determine the remote host address.");							exit(2);						}					}					else{						puts("error: sip:uri doesn't contain a : ?!");						exit(2);					}				}				else{					puts("error: sip:uri doesn't not begin with sip");					exit(2);				}				sbool=1;				break;			break;			case 't':				tbool=1;				break;			case 'u':				ubool=1;				break;			case 'v':				verbose=1;				break;			default:				printf("error: unknown parameter %c\n", c);				exit(2);				break;		}	}	/* lots of conditions to check */	if (tbool && ubool) {		printf("error: tracing and usrloc together isn't possible\n");		exit(2);	}	if (tbool) {		if (!sbool) {			printf("error: for trace modus a sip:uri is realy needed\n");			exit(2);		}		if (fbool) {/*			if (strncmp(buff, "OPTIONS", 7)){				printf("error: tracerouting only possible with an OPTIONS request.\n"					"       Give another request file or convert it to an OPTIONS request.\n");				exit(2);			} */			printf("warning: file will be ignored for tracing.");		}		if (!username) {			printf("error: for trace modus without a file the sip:uir have to contain a username\n");			exit(2);		}		if (!vbool){			printf("warning: Via-Line is needed for tracing. Ignoring -i\n");			vbool=1;		}		if (maxforw==-1) maxforw=0;	}	else if (ubool) {		if (!username || !sbool || nameend==-1) {			printf("error: for the USRLOC modus you have to give a sip:uri with a "					"username and the\n       username appendix end at least\n");			exit(2);		}		if (vbool) {			vbool=0;		}		if (dbool) {			printf("warning: redirects are not expected in USRLOC. Enableling -d\n");			dbool=0;		}		if (namebeg==-1)			namebeg=0;	}	else if (!fbool & !sbool) {		printf("error: you have to give the file to send and the sip:uri at least.\n");		print_help();	}	/* here we go...*/	shoot(buff, address, lport, rport, maxforw, tbool, vbool, fbool, ubool, dbool);	/* normaly we won't come back here, but to satisfy the compiler */	return 0;}