--- SpoolFileIterator.c.orig 2014-03-11 18:34:12.895026389 -0700 +++ SpoolFileIterator.c 2014-03-11 19:25:49.640606828 -0700 @@ -175,11 +175,11 @@ } /* Remove trailing newline */ - if((s_position = index(buffer, '\n'))) + if((s_position = strchr(buffer, '\n'))) *s_position = '\0'; /* Parse the position */ - if(!(s_position = index(buffer, ','))) + if(!(s_position = strchr(buffer, ','))) { fprintf(stderr, "Syntax error processing bookmark data '%s'\n", buffer); @@ -228,6 +228,7 @@ char buffer[256]; if(!iterator || !iterator->bookmark_file) return SF_EINVAL; + int offset; if(iterator->bookmark_fd == -1) { @@ -245,8 +246,22 @@ memset(buffer, 256, ' '); snprintf(buffer, 255, "%u, %u\n", timestamp, position); /* Set back to the beginning of the file */ - lseek(iterator->bookmark_fd, 0, SEEK_SET); - write(iterator->bookmark_fd, buffer, 256); + offset = 0; + offset = lseek(iterator->bookmark_fd, 0, SEEK_SET); + if (offset == -1) + { + fprintf(stderr, "Unable to seek file '%s': %s\n", + iterator->bookmark_file, strerror(errno)); + return -1; + } + offset = 0; + offset = write(iterator->bookmark_fd, buffer, 256); + if (offset == -1) + { + fprintf(stderr, "Unable to write file '%s': %s\n", + iterator->bookmark_file, strerror(errno)); + return -1; + } /* XXX Block signals here */ /* XXX We may also want to check for errors */ @@ -292,7 +307,12 @@ return SF_ENOENT; } - stat(iterator->filepath, &buf); + rval = stat(iterator->filepath, &buf); + if (rval < 0) + { + fprintf(stderr, "Unable to get file status: %s\n", + strerror(rval)); /* warning only */ + } } iterator->timestamp = file_timestamp;