diff options
Diffstat (limited to 'util/nvmutil')
| -rw-r--r-- | util/nvmutil/nvmutil.c | 66 | 
1 files changed, 34 insertions, 32 deletions
| diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index f9e56090..86e9c814 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -97,17 +97,16 @@ main(int argc, char *argv[])  	if (errno != 0)  		goto nvmutil_exit; -	if (readFromFile(&fd, gbe, FILENAME, flags, SIZE_8KB) -		== SIZE_8KB) -	{ -		if (strMac != NULL) -			setmac(strMac); -		else -			cmd(COMMAND); +	if (readFromFile(&fd, gbe, FILENAME, flags, SIZE_8KB) != SIZE_8KB) +		goto nvmutil_exit; -		if (gbeFileModified) -			writeGbeFile(&fd, FILENAME); -	} +	if (strMac != NULL) +		setmac(strMac); +	else +		cmd(COMMAND); + +	if (gbeFileModified) +		writeGbeFile(&fd, FILENAME);  nvmutil_exit:  	if (errno == ENOTDIR) @@ -126,16 +125,17 @@ writeGbeFile(int *fd, const char *filename)  	if (pwrite((*fd), gbe, SIZE_8KB, 0) == SIZE_8KB)  		close((*fd)); -	if (errno == 0) { -		for (partnum = 0; partnum < 2; partnum++) { -			if (nvmPartModified[partnum]) -				printf("Part %d modified\n", partnum); -			else -				fprintf (stderr, -					"Part %d NOT modified\n", partnum); -		} -		printf("File `%s` successfully modified\n", filename); +	if (errno != 0) +		return; + +	for (partnum = 0; partnum < 2; partnum++) { +		if (nvmPartModified[partnum]) +			printf("Part %d modified\n", partnum); +		else +			fprintf (stderr, +				"Part %d NOT modified\n", partnum);  	} +	printf("File `%s` successfully modified\n", filename);  }  ssize_t @@ -171,8 +171,10 @@ setmac(const char *strMac)  	if (readFromFile(&macfd, rmac, "/dev/urandom", O_RDONLY, 12) != 12)  		return; -	else if (strnlen(strMac, 20) != 17) + +	if (strnlen(strMac, 20) != 17)  		goto invalid_mac_address; +  	for (o = 0, random = 0; o < 16; o += 3) {  		if (o != 15)  			if (strMac[o + 2] != ':') @@ -214,12 +216,12 @@ setmac(const char *strMac)  			byteswap((uint8_t *) &mac[o]);  	for (partnum = 0; partnum < 2; partnum++) { -		if (validChecksum(partnum)) { -			for (o = 0; o < 3; o++) -				setWord(o, partnum, mac[o]); -			part = partnum; -			cmd("setchecksum"); -		} +		if (!validChecksum(partnum)) +			continue; +		for (o = 0; o < 3; o++) +			setWord(o, partnum, mac[o]); +		part = partnum; +		cmd("setchecksum");  	}  	return;  invalid_mac_address: @@ -306,12 +308,12 @@ validChecksum(int partnum)  	for(w = 0; w <= 0x3F; w++)  		total += word(w, partnum); -	if (total != 0xBABA) { -		fprintf(stderr, "WARNING: BAD checksum in part %d\n", partnum); -		errno = ECANCELED; -		return 0; -	} -	return 1; +	if (total == 0xBABA) +		return 1; + +	fprintf(stderr, "WARNING: BAD checksum in part %d\n", partnum); +	errno = ECANCELED; +	return 0;  }  uint16_t | 
