summaryrefslogtreecommitdiff
path: root/util
AgeCommit message (Collapse)Author
8 hoursutil/nvmutil: rename errval to nvm_errvalLeah Rowe
strtonum implementations in bsd sometimes have this variable name. rename it to avoid conflict. also removed the commentt errno values, since i'm only ever setting it to valid values, as are the syscalls that i'm using, so it should be ok. i'm not writing a stub to check errno. that would be far beyond the scope of nvmutil. Signed-off-by: Leah Rowe <leah@libreboot.org>
8 hoursutil/nvmutil: re-try reads if errno is EINTRLeah Rowe
this is a bit of fault tolerance. a bit bloated too, but it should make the code more resilient. we limited the number of retries to 200 retries. EINTR is when the syscall (read/pread) is interrupted. we still error out on other conditions; we also still error out on EINTR if the number of re-tries surpasses 200. during this re-try loop, if *another* error occurs, we exit as normal. this is done for both files: the gbe file, and /dev/urandom. Signed-off-by: Leah Rowe <leah@libreboot.org>
9 hoursutil/nvmutil: explicitly cast on read/pread/pwriteLeah Rowe
these functions return ssize_t, so compare explicitly to that, when using the SIZE_4KB define for example. Signed-off-by: Leah Rowe <leah@libreboot.org>
9 hoursutil/nvmutil: remove unnecessary checkLeah Rowe
we can just use errval as argument to set_err, because set_err itself now properly handles errno, ensuring that is is never set to zero. Signed-off-by: Leah Rowe <leah@libreboot.org>
10 hoursutil/nvmutil: stricter check_boundLeah Rowe
word/set_word are only meant to operate on the nvm area (128 bytes), but the current check is against the entire 4KB block. swap() only handles the nvm area, as per the design of nvmutil. this patch makes the boundary check truer to my real intent, guarding against future logical errors. Signed-off-by: Leah Rowe <leah@libreboot.org>
10 hoursutil/nvmutil: set errno only if x is not 0Leah Rowe
otherwise, some minor edge cases may result in err printing "success", when we want to signal an error. Signed-off-by: Leah Rowe <leah@libreboot.org>
10 hoursutil/nvmutil: consistent errors on close()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
10 hoursutil/nvmutil: print correct file name for urandomLeah Rowe
err_if reports fname, not /dev/urandom Signed-off-by: Leah Rowe <leah@libreboot.org>
10 hoursutil/nvmutil: don't bother with strncmpLeah Rowe
these are strings provided from the shell, which are guaranteed to always be null-terminated. Signed-off-by: Leah Rowe <leah@libreboot.org>
10 hoursutil/nvmutil: get rid of arg_cmdLeah Rowe
it's pointless. Signed-off-by: Leah Rowe <leah@libreboot.org>
10 hoursutil/nvmutil: use memcpy in word/set_wordLeah Rowe
alignment isn't an issue, but aliasing between uintX_t types in C means that this code may fail on some weird systems. using memcpy here is advisable. Signed-off-by: Leah Rowe <leah@libreboot.org>
11 hoursutil/nvmutil: use strncmp instead of strcmpLeah Rowe
set a constant maximum length. this seems reasonable, and it's even quite generous. Signed-off-by: Leah Rowe <leah@libreboot.org>
11 hoursutil/nvmutil: remove checkdir()Leah Rowe
we don't need it. what follows is a call to open(), which would fail anyway if the path is a directory; further, this removes a theoretical race condition in the program, and makes open() happen sooner, making it more likely that we get the file first, before another program can take it. checking whether /dev/urandom is a directory is the height of absurdity. Signed-off-by: Leah Rowe <leah@libreboot.org>
11 hoursutil/nvmutil: make rhex err_if consistentLeah Rowe
n + 1 is the same as saying sizeof(rnum) in this case. we should be clear about that, in code. n is irrelevant here, since it is only an index for the return value. Signed-off-by: Leah Rowe <leah@libreboot.org>
11 hoursutil/nvmutil rhex: check against sizeof(rnum)Leah Rowe
checking against -1 is incorrect, because we specifically want to ensure that it always read the number of bytes defined by the size of rnum. this still covers the case where the return value is -1, and therefore makes the error handling much stricter. Signed-off-by: Leah Rowe <leah@libreboot.org>
11 hoursutil/nvmutil err: filter errval when zeroLeah Rowe
default to ECANCELED if zero Signed-off-by: Leah Rowe <leah@libreboot.org>
11 hoursutil/nvmutil: always exit non-zero on errLeah Rowe
the way err works here now is very different than the bsd one. here, we ALWAYS exit with EXIT_FAILURE, and we call set_err with, as argument, the first argument given to err. this then sets errno, but the exit value is always consistent. that's what happens when i control err(). i make it even better. the original bsd one is too conservative. Signed-off-by: Leah Rowe <leah@libreboot.org>
12 hoursutil/nvmutil: more consistent output in usage()Leah Rowe
and use getnvmprogname Signed-off-by: Leah Rowe <leah@libreboot.org>
12 hoursutil/nvmutil: use getnvmprogname in usageLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
12 hoursutil/nvmutil: use own implementation of errLeah Rowe
and getprogname, written as getnvmprogname this removes a dependency on err.h, which is non-standard. the remaining code is posix-compliant, or ifdef'd where use of openbsd pledge is concerned - someone could theoretically define __OpenBSD__ that isn't and OpenBSD base maintainer, and then use nvmutil in it, but i so don't care about that evermore hypothetical individual. Signed-off-by: Leah Rowe <leah@libreboot.org>
12 hoursutil/nvmutil: close rfd on exitLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
13 hoursutil/nvmutil: remove unnecessary includeLeah Rowe
dirent.h is no longer needed, because i'm no longer making use of opendir() Signed-off-by: Leah Rowe <leah@libreboot.org>
13 hoursutil/nvmutil: tidy up write_gbeLeah Rowe
by handling close() in main, we can reduce the indendation in write_gbe and generally make it much easier to read. Signed-off-by: Leah Rowe <leah@libreboot.org>
13 hoursutil/nvmutil: make the part check easier to readLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
13 hoursutil/nvmutil: fix style inconsistencyLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
13 hoursutil/nvmutil: use braces on nested ifsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
13 hoursutil/nvmutil: remove unnecessary global assignmentLeah Rowe
these integers are already initialised to zero. Signed-off-by: Leah Rowe <leah@libreboot.org>
13 hoursutil/nvmutil: make swap() easier to understandLeah Rowe
the swap function reverses the byte order in memory, of a loaded GbE after after reading it, or before writing it. this is required (as detected) on big-endian CPUs, because GbE files store bytes in little-endian order. Signed-off-by: Leah Rowe <leah@libreboot.org>
13 hoursutil/nvmutil: declare arg_cmd earlierLeah Rowe
set it after the argc check i don't like initialising a const after declaration, but it compiles, and it keeps with the style used in the rest of the code. Signed-off-by: Leah Rowe <leah@libreboot.org>
13 hoursutil/nvmutil: don't make op a typedefLeah Rowe
it's not required Signed-off-by: Leah Rowe <leah@libreboot.org>
14 hoursutil/nvmutil: fix arg_cmd initialisationLeah Rowe
i declare it, using the 3rd argument, which might not be available if only the file name is declared. this fixes that. Signed-off-by: Leah Rowe <leah@libreboot.org>
14 hoursutil/nvmutil: remove COMMAND, MAC_ADDRESS, PARTNLeah Rowe
these macros serve no purpose except to obfuscate the code. it's actually cleaner just to refer directly to argv, and it reduces the chance of contamination later upon re-factoring. Signed-off-by: Leah Rowe <leah@libreboot.org>
14 hoursutil/nvmutil: rename op_t to opLeah Rowe
and op to ops typedefs not part of any base system e.g. openbsd base system, or e.g. the libc, should not have _t in them. this is a stylistic change, and does not alter any actual program behaviour. Signed-off-by: Leah Rowe <leah@libreboot.org>
14 hoursutil/nvmutil: make op a constLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
14 hoursutil/nvmutil: remove redundant commentLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
14 hoursutil/nvmutil: use const char in usageLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
14 hoursutil/nvmutil: tidy up set_cmdLeah Rowe
reduced indentation Signed-off-by: Leah Rowe <leah@libreboot.org>
14 hoursutil/nvmutil: split up set_cmdLeah Rowe
the second half of the function is mostly checking arguments, and has the hack to set cmd to cmd_setmac if cmd is unset (no command specified) but argc is above two. stylistically, this is more consistent. Signed-off-by: Leah Rowe <leah@libreboot.org>
14 hoursutil/nvmutil: tidy up final cmd check in set_cmdLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
14 hoursutil/nvmutil: tidy up rhexLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
14 hoursutil/nvmutil: reduce the size of rnum to 12Leah Rowe
we only need 12 bytes at a maximum Signed-off-by: Leah Rowe <leah@libreboot.org>
14 hoursutil/nvmutil: tidy up check_mac_separatorLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
14 hoursutil/nvmutil: rename openFiles to open_filesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
15 hoursutil/nvm: make variables and functions staticLeah Rowe
i don't intend for this to be used in a library Signed-off-by: Leah Rowe <leah@libreboot.org>
15 hoursutil/nvmutil: don't use spaces on err_ifLeah Rowe
this is inconsistent with the style in the rest of the code. Signed-off-by: Leah Rowe <leah@libreboot.org>
15 hoursutil/nvmutil: use const for string literal in opLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
15 hoursutil/nvmutil: no designated initialisers in opLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
15 hoursutil/nvmutil: declare one prototype per lineLeah Rowe
in the same order that functions are declared Signed-off-by: Leah Rowe <leah@libreboot.org>
15 hoursutil/nvmutil: don't declare variables in for loopsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
15 hoursutil/nvmutil: use size_t on op for loopLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>