diff --git a/Docker/build.sh b/Docker/build.sh index e433a95..c6c0e55 100755 --- a/Docker/build.sh +++ b/Docker/build.sh @@ -1,4 +1,4 @@ -rm ./sist2 +rm ./sist2 sist2_debug cp ../sist2 ../sist2_debug . strip sist2 @@ -10,4 +10,4 @@ docker build . -t simon987/sist2:${version} -t simon987/sist2:latest docker push simon987/sist2:${version} docker push simon987/sist2:latest -docker run --rm -it simon987/sist2 -v \ No newline at end of file +docker run --rm simon987/sist2 -v \ No newline at end of file diff --git a/src/io/serialize.c b/src/io/serialize.c index ebc5644..722198f 100644 --- a/src/io/serialize.c +++ b/src/io/serialize.c @@ -40,10 +40,13 @@ void write_index_descriptor(char *path, index_descriptor_t *desc) { int fd = open(path, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR); if (fd < 0) { - LOG_FATALF("serialize.c", "Could not write index descriptor: %s", strerror(errno)); + LOG_FATALF("serialize.c", "Could not open index descriptor: %s", strerror(errno)); } char *str = cJSON_Print(json); - write(fd, str, strlen(str)); + int ret = write(fd, str, strlen(str)); + if (ret == -1) { + LOG_FATALF("serialize.c", "Could not write index descriptor: %s", strerror(errno)); + } free(str); close(fd); @@ -61,7 +64,10 @@ index_descriptor_t read_index_descriptor(char *path) { } char *buf = malloc(info.st_size + 1); - read(fd, buf, info.st_size); + int ret = read(fd, buf, info.st_size); + if (ret == -1) { + LOG_FATALF("serialize.c", "Could not read index descriptor: %s", strerror(errno)); + } *(buf + info.st_size) = '\0'; close(fd); @@ -205,8 +211,8 @@ void read_index_bin(const char *path, const char *index_id, index_func func) { FILE *file = fopen(path, "rb"); while (1) { buf.cur = 0; - fread((void *) &line, 1, sizeof(line_t), file); - if (feof(file)) { + size_t read = fread((void *) &line, 1, sizeof(line_t), file); + if (read != 1 || feof(file)) { break; } @@ -246,26 +252,27 @@ void read_index_bin(const char *path, const char *index_id, index_func func) { } enum metakey key = getc(file); + size_t ret = 0; while (key != '\n') { switch (key) { case MetaWidth: case MetaHeight: { int value; - fread(&value, sizeof(int), 1, file); + ret = fread(&value, sizeof(int), 1, file); cJSON_AddNumberToObject(document, get_meta_key_text(key), value); break; } case MetaMediaDuration: case MetaMediaBitrate: { long value; - fread(&value, sizeof(long), 1, file); + ret = fread(&value, sizeof(long), 1, file); cJSON_AddNumberToObject(document, get_meta_key_text(key), (double) value); break; } case MetaMediaAudioCodec: case MetaMediaVideoCodec: { int value; - fread(&value, sizeof(int), 1, file); + ret = fread(&value, sizeof(int), 1, file); const AVCodecDescriptor *desc = avcodec_descriptor_get(value); if (desc != NULL) { cJSON_AddStringToObject(document, get_meta_key_text(key), desc->name); @@ -304,6 +311,10 @@ void read_index_bin(const char *path, const char *index_id, index_func func) { LOG_FATALF("serialize.c", "Invalid meta key (corrupt index): %x", key) } + if (ret != 1) { + break; + } + key = getc(file); } @@ -402,8 +413,8 @@ void incremental_read(GHashTable *table, const char *filepath) { line_t line; while (1) { - fread((void *) &line, 1, sizeof(line_t), file); - if (feof(file)) { + size_t ret = fread((void *) &line, 1, sizeof(line_t), file); + if (ret != 1 || feof(file)) { break; } @@ -426,8 +437,8 @@ void incremental_copy(store_t *store, store_t *dst_store, const char *filepath, line_t line; while (1) { - fread((void *) &line, 1, sizeof(line_t), file); - if (feof(file)) { + size_t ret = fread((void *) &line, 1, sizeof(line_t), file); + if (ret != 1 || feof(file)) { break; } @@ -455,11 +466,11 @@ void incremental_copy(store_t *store, store_t *dst_store, const char *filepath, if (IS_META_INT(key)) { int val; - fread(&val, sizeof(val), 1, file); + ret = fread(&val, sizeof(val), 1, file); fwrite(&val, sizeof(val), 1, dst_file); } else if (IS_META_LONG(key)) { long val; - fread(&val, sizeof(val), 1, file); + ret = fread(&val, sizeof(val), 1, file); fwrite(&val, sizeof(val), 1, dst_file); } else { while ((c = (char) getc(file))) { @@ -467,6 +478,10 @@ void incremental_copy(store_t *store, store_t *dst_store, const char *filepath, } fwrite("\0", sizeof(c), 1, dst_file); } + + if (ret != 1) { + break; + } } } else { skip_meta(file); diff --git a/src/log.c b/src/log.c index 29d3e7b..bc7f252 100644 --- a/src/log.c +++ b/src/log.c @@ -31,14 +31,14 @@ void sist_logf(char *filepath, int level, char *format, ...) { if (is_tty) { log_len = snprintf( log_str, sizeof(log_str), - "\033[%dm[%04X]%s [%s] [%s %s] ", + "\033[%dm[%04llX]%s [%s] [%s %s] ", 31 + ((unsigned int) (pid)) % 7, pid, log_colors[level], datetime, log_levels[level], filepath ); } else { log_len = snprintf( log_str, sizeof(log_str), - "[%04X] [%s] [%s %s] ", + "[%04llX] [%s] [%s %s] ", pid, datetime, log_levels[level], filepath ); } @@ -56,7 +56,10 @@ void sist_logf(char *filepath, int level, char *format, ...) { log_len += 1; } - write(STDERR_FILENO, log_str, log_len); + int ret = write(STDERR_FILENO, log_str, log_len); + if (ret == -1) { + LOG_FATALF("serialize.c", "Could not write index descriptor: %s", strerror(errno)); + } } void sist_log(char *filepath, int level, char *str) { @@ -81,7 +84,7 @@ void sist_log(char *filepath, int level, char *str) { if (is_tty) { log_len = snprintf( log_str, sizeof(log_str), - "\033[%dm[%04X]%s [%s] [%s %s] %s \033[0m\n", + "\033[%dm[%04llX]%s [%s] [%s %s] %s \033[0m\n", 31 + ((unsigned int) (pid)) % 7, pid, log_colors[level], datetime, log_levels[level], filepath, str @@ -89,11 +92,14 @@ void sist_log(char *filepath, int level, char *str) { } else { log_len = snprintf( log_str, sizeof(log_str), - "[%04X] [%s] [%s %s] %s \n", + "[%04llX] [%s] [%s %s] %s \n", pid, datetime, log_levels[level], filepath, str ); } - write(STDERR_FILENO, log_str, log_len); + int ret = write(STDERR_FILENO, log_str, log_len); + if (ret == -1) { + LOG_FATALF("serialize.c", "Could not write index descriptor: %s", strerror(errno)); + } } diff --git a/web/css/bricklayer.min.css b/web/css/bricklayer.min.css new file mode 100644 index 0000000..f62e047 --- /dev/null +++ b/web/css/bricklayer.min.css @@ -0,0 +1 @@ +.bricklayer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.bricklayer-column-sizer{width:100%;display:none}@media screen and (min-width:640px){.bricklayer-column-sizer{width:50%}}@media screen and (min-width:980px){.bricklayer-column-sizer{width:33.333%}}@media screen and (min-width:1200px){.bricklayer-column-sizer{width:25%}}.bricklayer-column{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding-left:5px;padding-right:5px} \ No newline at end of file