signed char* p = line; 
char* p = line; 
static int parse_source_files(const char *objfile, struct md4_ctx *md){	char *cmd, *file, *line, *dir;	const char *base;	unsigned long flen, pos = 0;	int dirlen, ret = 0, check_files = 0;	cmd = NOFAIL(malloc(strlen(objfile) + sizeof("..cmd")));	base = strrchr(objfile, '/');	if (base) {		base++;		dirlen = base - objfile;		sprintf(cmd, "%.*s.%s.cmd", dirlen, objfile, base);	} else {		dirlen = 0;		sprintf(cmd, ".%s.cmd", objfile);	}	dir = NOFAIL(malloc(dirlen + 1));	strncpy(dir, objfile, dirlen);	dir[dirlen] = '\0';	file = grab_file(cmd, &flen);	if (!file) {		fprintf(stderr, "Warning: could not find %s for %s\n",			cmd, objfile);		goto out;	}	/* There will be a line like so:		deps_drivers/net/dummy.o := \		  drivers/net/dummy.c \		    $(wildcard include/config/net/fastroute.h) \		  include/linux/config.h \		    $(wildcard include/config/h.h) \		  include/linux/module.h \	   Sum all files in the same dir or subdirs.	*/	while ((line = get_next_line(&pos, file, flen)) != NULL) {		signed char* p = line;		if (strncmp(line, "deps_", sizeof("deps_")-1) == 0) {			check_files = 1;			continue;		}		if (!check_files)			continue;		/* Continue until line does not end with '\' */		if ( *(p + strlen(p)-1) != '\\')			break;		/* Terminate line at first space, to get rid of final ' \' */		while (*p) {                       if (isspace(*p)) {				*p = '\0';				break;			}			p++;		}		/* Check if this file is in same dir as objfile */		if ((strstr(line, dir)+strlen(dir)-1) == strrchr(line, '/')) {			if (!parse_file(line, md)) {				fprintf(stderr,					"Warning: could not open %s: %s\n",					line, strerror(errno));				goto out_file;			}		}	}	/* Everyone parsed OK */	ret = 1;out_file:	release_file(file, flen);out:	free(dir);	free(cmd);	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/61d9cdf2a9ccb9e4770d7723db8b18b8952778ce/sumversion.c/clean/scripts/mod/sumversion.c