diff options
author | Mattias Andrée <maandree@member.fsf.org> | 2015-12-11 12:10:07 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@member.fsf.org> | 2015-12-11 12:27:47 +0100 |
commit | 7852af7c93140a5d78cf35414d4ae5b42bca187a (patch) | |
tree | 48e6413cb5f83fca6618bd51c4499bd41cb552a0 /src/kern-linux.c | |
parent | whitespace (diff) | |
download | scrotty-7852af7c93140a5d78cf35414d4ae5b42bca187a.tar.gz scrotty-7852af7c93140a5d78cf35414d4ae5b42bca187a.tar.bz2 scrotty-7852af7c93140a5d78cf35414d4ae5b42bca187a.tar.xz |
m + split out save_fbs to main + do not use PATH_MAX + do not use alloca
Signed-off-by: Mattias Andrée <maandree@member.fsf.org>
Diffstat (limited to 'src/kern-linux.c')
-rw-r--r-- | src/kern-linux.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/kern-linux.c b/src/kern-linux.c index a3d4ea2..fdae636 100644 --- a/src/kern-linux.c +++ b/src/kern-linux.c @@ -49,14 +49,17 @@ print_not_found_help (void) /** * Construct the path to a framebuffer device. * - * @param pathbuf Ouput buffer for the path. - * @param altpath The index of the alternative path-pattern to use. - * @param fbno The index of the framebuffer. + * @param altpath The index of the alternative path-pattern to use. + * @param fbno The index of the framebuffer. + * @return The path to the framebuffer device. Errors are impossible. + * This string is statically allocated and must not be deallocated. */ -void -get_fbpath (char *restrict pathbuf, int altpath, int fbno) +char * +get_fbpath (int altpath, int fbno) { + static char pathbuf[sizeof (DEVDIR "/fb/") + 3 * sizeof (int)]; sprintf (pathbuf, "%s/fb%s%i", DEVDIR, (altpath ? "/" : ""), fbno); + return pathbuf; } @@ -72,7 +75,8 @@ get_fbpath (char *restrict pathbuf, int altpath, int fbno) int measure (int fbno, char *restrict fbpath, long *restrict width, long *restrict height) { - static char buf[PATH_MAX]; + static char buf[sizeof (SYSDIR "/class/graphics/fb/virtual_size") + 3 * sizeof(int)]; + /* The string "/class/graphics/fb/virtual_size" is large enought for the call (*) "*/ char *delim; int sizefd = -1; ssize_t got; @@ -85,7 +89,7 @@ measure (int fbno, char *restrict fbpath, long *restrict width, long *restrict h FILE_FAILURE (buf); /* Get the dimensions of the framebuffer. */ - got = read (sizefd, buf, sizeof (buf) / sizeof (char) - 1); + got = read (sizefd, buf, sizeof (buf) / sizeof (char) - 1); /* (*) */ if (got < 0) goto fail; close (sizefd); |