diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/scrotty.c | 31 | 
1 files changed, 17 insertions, 14 deletions
| diff --git a/src/scrotty.c b/src/scrotty.c index b9ac6b8..16aebbb 100644 --- a/src/scrotty.c +++ b/src/scrotty.c @@ -89,13 +89,12 @@ static char** convert_args;   * Create an PNM-file that is sent to `convert` for convertion to a compressed format   *    * @param   fbname  The framebuffer device - * @param   fbno    The number of the framebuffer   * @param   width   The width of the image   * @param   height  The height of the image   * @param   fd      The file descriptor connected to `convert`'s stdin   * @return          Zero on success, -1 on error   */ -static int save_pnm(const char* fbpath, int fbno, long width, long height, int fd) +static int save_pnm(const char* fbpath, long width, long height, int fd)  {    char buf[PATH_MAX];    FILE* file; @@ -119,7 +118,7 @@ static int save_pnm(const char* fbpath, int fbno, long width, long height, int f    for (off = 0;;)      {        /* Read data from the framebuffer, we may have up to 3 bytes buffered. */ -      got = read(fbfd, buf + off, sizeof(buf) - off * sizeof(char)); +      got = read(fbfd, buf + off, sizeof(buf) - (size_t)off * sizeof(char));        if (got < 0)  	return saved_errno = errno, fclose(file), close(fbfd), errno = saved_errno, -1;        if (got += off, got == 0) @@ -143,7 +142,7 @@ static int save_pnm(const char* fbpath, int fbno, long width, long height, int f        if (off != got)  	{  	  off -= 4; -	  memcpy(buf, buf + off, (got - off) * sizeof(char)); +	  memcpy(buf, buf + off, (size_t)(got - off) * sizeof(char));  	  off = got - off;  	}        else @@ -163,12 +162,11 @@ static int save_pnm(const char* fbpath, int fbno, long width, long height, int f   *    * @param   fbname    The framebuffer device   * @param   imgname   The pathname of the output image - * @param   fbno      The number of the framebuffer   * @param   width     The width of the image   * @param   height    The height of the image   * @return            Zero on success, -1 on error   */ -static int save(const char* fbpath, const char* imgpath, int fbno, long width, long height) +static int save(const char* fbpath, const char* imgpath, long width, long height)  {    int pipe_rw[2];    pid_t pid, reaped; @@ -207,7 +205,7 @@ static int save(const char* fbpath, const char* imgpath, int fbno, long width, l    close(pipe_rw[0]);    /* Create a PNM-image of the framebuffer. */ -  if (save_pnm(fbpath, fbno, width, height, pipe_rw[1]) < 0) +  if (save_pnm(fbpath, width, height, pipe_rw[1]) < 0)      return saved_errno = errno, close(pipe_rw[1]), errno = saved_errno, -1;    /* Close the write-end of the pipe. */ @@ -351,7 +349,7 @@ static int evaluate(char* restrict buf, size_t n, const char* restrict pattern,        else if (c == '%')   buf[i++] = c, percent = 1;        else if (c == '\\')  backslash = 1;        else if (c == '$')   dollar = 1; -      else if (c == ' ')   buf[i++] = path == NULL ? ' ' : 255; /* 255 is not valid in UTF-8. */ +      else if (c == ' ')   buf[i++] = path == NULL ? ' ' : (char)255; /* 255 is not valid in UTF-8. */        else                 buf[i++] = c;        if (i >= n) @@ -370,7 +368,10 @@ static int evaluate(char* restrict buf, size_t n, const char* restrict pattern,    /* Expand '%'. */    t = time(NULL);    localtime_r(&t, &tm); +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wformat-nonliteral"    if (strftime(buf, n, fmt, &tm) == 0) +# pragma GCC diagnostic pop      return errno = ENAMETOOLONG, -1;    return 0; @@ -395,7 +396,7 @@ static int exec_image(char* flatten_args)    /* Count arguments. */    for (i = 0; flatten_args[i]; i++) -    if (flatten_args[i] == 255) +    if ((unsigned char)(flatten_args[i]) == 255)        arg_count++;    /* Allocate argument array. */ @@ -477,11 +478,11 @@ static int save_fb(int fbno, const char* filepattern, const char* execpattern)  	  }      }    else -    if (evaluate(imgpath, PATH_MAX, filepattern, fbno, width, height, NULL) < 0) +    if (evaluate(imgpath, (size_t)PATH_MAX, filepattern, fbno, width, height, NULL) < 0)        return -1;    /* Take a screenshot of the current framebuffer. */ -  if (save(fbpath, imgpath, fbno, width, height) < 0) +  if (save(fbpath, imgpath, width, height) < 0)      return -1;    fprintf(stderr, "Saved framebuffer %i to %s\n", fbno, imgpath); @@ -608,6 +609,8 @@ static int print_copyright(void)  int main(int argc, char* argv[])  {    int fbno, r, i, dash = argc, exec = -1, help = 0, version = 0, copyright = 0, filepattern = -1; +  static char convert_args_0[] = "convert"; +  static char convert_args_1[] = DEVDIR "/stdin";    static char convert_args_2[PATH_MAX];    execname = *argv; @@ -640,9 +643,9 @@ int main(int argc, char* argv[])    if (copyright)  return -(print_copyright());    /* Create arguments for `convert`. */ -  convert_args = alloca((4 + (argc - dash)) * sizeof(char*)); -  convert_args[0] = "convert"; -  convert_args[1] = DEVDIR "/stdin"; +  convert_args = alloca((size_t)(4 + (argc - dash)) * sizeof(char*)); +  convert_args[0] = convert_args_0; +  convert_args[1] = convert_args_1;    convert_args[2] = convert_args_2;    for (i = dash; i < argc; i++)      convert_args[i - dash + 2] = argv[i]; | 
