Compare commits

...

9 Commits

Author SHA1 Message Date
52466d5d8a Update tesseract datapaths 2021-12-25 11:12:00 -05:00
5f73fc024b Version bump, update readme 2021-12-25 11:08:52 -05:00
f2fd7ccf41 Fix raw parsing maybe, fix index picker css 2021-12-25 11:08:52 -05:00
d87fee8e00
Merge pull request #214 from dpieski/patch-2
Update USAGE.md
2021-12-22 09:55:24 -05:00
Andrew
672d1344d7
Update USAGE.md
Get-WmiObject is deprecated in favor of Get-CimInstance
2021-12-15 15:00:36 -06:00
27e32db1ed Fix attempt for excludes 2021-11-17 20:18:48 -05:00
bb91139ffb console log fixes, version bump 2021-11-15 20:52:24 -05:00
70cfa8c37c Fix Dockerfile.arm64 2021-11-13 18:25:24 -05:00
7493dedc8c
Merge pull request #208 from simon987/dev
v2.11.4
2021-11-13 17:37:47 -05:00
19 changed files with 95 additions and 50 deletions

View File

@ -11,21 +11,6 @@ steps:
image: simon987/sist2-build image: simon987/sist2-build
commands: commands:
- ./scripts/build.sh - ./scripts/build.sh
- name: docker
image: plugins/docker
settings:
username:
from_secret: DOCKER_USER
password:
from_secret: DOCKER_PASSWORD
repo: simon987/sist2
context: ./
dockerfile: ./Dockerfile
auto_tag: true
auto_tag_suffix: x64-linux
when:
event:
- tag
- name: scp files - name: scp files
image: appleboy/drone-scp image: appleboy/drone-scp
settings: settings:
@ -42,6 +27,21 @@ steps:
- ./VERSION - ./VERSION
- ./sist2-x64-linux - ./sist2-x64-linux
- ./sist2-x64-linux-debug - ./sist2-x64-linux-debug
- name: docker
image: plugins/docker
settings:
username:
from_secret: DOCKER_USER
password:
from_secret: DOCKER_PASSWORD
repo: simon987/sist2
context: ./
dockerfile: ./Dockerfile
auto_tag: true
auto_tag_suffix: x64-linux
when:
event:
- tag
--- ---
kind: pipeline kind: pipeline

3
.gitmodules vendored
View File

@ -1,6 +1,3 @@
[submodule "third-party/libscan"]
path = third-party/libscan
url = https://github.com/simon987/libscan
[submodule "third-party/argparse"] [submodule "third-party/argparse"]
path = third-party/argparse path = third-party/argparse
url = https://github.com/simon987/argparse url = https://github.com/simon987/argparse

View File

@ -7,7 +7,7 @@ RUN cmake -DSIST_PLATFORM=arm64_linux -DSIST_DEBUG=off -DBUILD_TESTS=off -DCMAKE
RUN make -j$(nproc) RUN make -j$(nproc)
RUN strip sist2 RUN strip sist2
FROM --platform linux/arm64/v8 ubuntu:21.10 FROM --platform="linux/arm64/v8" ubuntu:21.10
RUN apt update && apt install -y curl libasan5 && rm -rf /var/lib/apt/lists/* RUN apt update && apt install -y curl libasan5 && rm -rf /var/lib/apt/lists/*

View File

@ -51,7 +51,7 @@ sist2 (Simple incremental search tool)
1. Download the [latest sist2 release](https://github.com/simon987/sist2/releases) * 1. Download the [latest sist2 release](https://github.com/simon987/sist2/releases) *
1. *(or)* Download a [development snapshot](https://files.simon987.net/.gate/sist2/simon987_sist2/) *(Not 1. *(or)* Download a [development snapshot](https://files.simon987.net/.gate/sist2/simon987_sist2/) *(Not
recommended!)* recommended!)*
1. *(or)* `docker pull simon987/sist2:2.11.4-x64-linux` 1. *(or)* `docker pull simon987/sist2:2.11.6-x64-linux`
1. See [Usage guide](docs/USAGE.md) 1. See [Usage guide](docs/USAGE.md)
@ -143,7 +143,7 @@ docker run --rm my-sist2-image cat /root/sist2 > sist2-x64-linux
```bash ```bash
vcpkg install curl[core,openssl] vcpkg install curl[core,openssl]
vcpkg install lmdb cjson glib brotli libarchive[core,bzip2,libxml2,lz4,lzma,lzo] pthread tesseract libxml2 libmupdf gtest mongoose libuuid libmagic libraw jasper lcms gumbo vcpkg install lmdb cjson glib brotli libarchive[core,bzip2,libxml2,lz4,lzma,lzo] pthread tesseract libxml2 libmupdf gtest mongoose libmagic libraw jasper lcms gumbo
``` ```
1. Build 1. Build

View File

@ -85,7 +85,7 @@ Exec-script options
### Scan options ### Scan options
* `-t, --threads` * `-t, --threads`
Number of threads for file parsing. **Do not set a number higher than `$(nproc)` or `$(Get-WmiObject Win32_ComputerSystem).NumberOfLogicalProcessors` in Windows!** Number of threads for file parsing. **Do not set a number higher than `$(nproc)` or `$(Get-CimInstance Win32_ComputerSystem).NumberOfLogicalProcessors` in Windows!**
* `-q, --quality` * `-q, --quality`
Thumbnail quality, on a scale of 1.0 to 31.0, 1.0 being the best. Thumbnail quality, on a scale of 1.0 to 31.0, 1.0 being the best.
* `--size` * `--size`

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -133,6 +133,11 @@ export default Vue.extend({
font-size: 80%; font-size: 80%;
} }
.theme-black .version-badge {
color: #eee !important;
background: none;
}
.version-badge { .version-badge {
color: #222 !important; color: #222 !important;
background: none; background: none;

View File

@ -22,6 +22,7 @@
const char *TESS_DATAPATHS[] = { const char *TESS_DATAPATHS[] = {
"/usr/share/tessdata/", "/usr/share/tessdata/",
"/usr/share/tesseract-ocr/tessdata/", "/usr/share/tesseract-ocr/tessdata/",
"/usr/share/tesseract-ocr/4.00/tessdata/",
"./", "./",
NULL NULL
}; };

View File

@ -57,10 +57,11 @@ int handle_entry(const char *filepath, const struct stat *info, int typeflag, st
pthread_mutex_lock(&ScanCtx.dbg_file_counts_mu); pthread_mutex_lock(&ScanCtx.dbg_file_counts_mu);
ScanCtx.dbg_excluded_files_count += 1; ScanCtx.dbg_excluded_files_count += 1;
pthread_mutex_unlock(&ScanCtx.dbg_file_counts_mu); pthread_mutex_unlock(&ScanCtx.dbg_file_counts_mu);
return 0;
} else if (typeflag == FTW_D) { } else if (typeflag == FTW_D) {
return FTW_SKIP_SUBTREE; return FTW_SKIP_SUBTREE;
} }
return FTW_CONTINUE;
} }
if (typeflag == FTW_F && S_ISREG(info->st_mode)) { if (typeflag == FTW_F && S_ISREG(info->st_mode)) {

View File

@ -55,10 +55,14 @@ void vsist_logf(const char *filepath, int level, char *format, va_list ap) {
log_len += 1; log_len += 1;
} }
int ret = write(STDERR_FILENO, log_str, log_len); if (PrintingProgressBar) {
if (ret == -1) { PrintingProgressBar = FALSE;
LOG_FATALF("serialize.c", "Could not write index descriptor: %s", strerror(errno)) memmove(log_str + 1, log_str, log_len);
log_str[0] = '\n';
log_len += 1;
} }
write(STDERR_FILENO, log_str, log_len);
} }
void sist_logf(const char *filepath, int level, char *format, ...) { void sist_logf(const char *filepath, int level, char *format, ...) {
@ -104,8 +108,12 @@ void sist_log(const char *filepath, int level, char *str) {
); );
} }
int ret = write(STDERR_FILENO, log_str, log_len); if (PrintingProgressBar) {
if (ret == -1) { PrintingProgressBar = FALSE;
LOG_FATALF("serialize.c", "Could not write index descriptor: %s", strerror(errno)); memmove(log_str + 1, log_str, log_len);
log_str[0] = '\n';
log_len += 1;
} }
write(STDERR_FILENO, log_str, log_len);
} }

View File

@ -433,7 +433,7 @@ void sist2_index(index_args_t *args) {
cleanup = elastic_cleanup; cleanup = elastic_cleanup;
} }
IndexCtx.pool = tpool_create(args->threads, cleanup, FALSE, TRUE); IndexCtx.pool = tpool_create(args->threads, cleanup, FALSE, args->print == 0);
tpool_start(IndexCtx.pool); tpool_start(IndexCtx.pool);
struct dirent *de; struct dirent *de;
@ -518,8 +518,8 @@ void sist2_web(web_args_t *args) {
int main(int argc, const char *argv[]) { int main(int argc, const char *argv[]) {
// sigsegv_handler = signal(SIGSEGV, sig_handler); sigsegv_handler = signal(SIGSEGV, sig_handler);
// sigabrt_handler = signal(SIGABRT, sig_handler); sigabrt_handler = signal(SIGABRT, sig_handler);
setlocale(LC_ALL, ""); setlocale(LC_ALL, "");

View File

@ -53,7 +53,7 @@
#include <ctype.h> #include <ctype.h>
#include "git_hash.h" #include "git_hash.h"
#define VERSION "2.11.4" #define VERSION "2.11.6"
static const char *const Version = VERSION; static const char *const Version = VERSION;
#ifndef SIST_PLATFORM #ifndef SIST_PLATFORM

View File

@ -191,7 +191,9 @@ void tpool_wait(tpool_t *pool) {
} }
} }
} }
if (pool->print_progress) {
progress_bar_print(1.0, ScanCtx.stat_tn_size, ScanCtx.stat_index_size); progress_bar_print(1.0, ScanCtx.stat_tn_size, ScanCtx.stat_index_size);
}
pthread_mutex_unlock(&(pool->work_mutex)); pthread_mutex_unlock(&(pool->work_mutex));
LOG_INFO("tpool.c", "Worker threads finished") LOG_INFO("tpool.c", "Worker threads finished")

View File

@ -84,6 +84,8 @@ char *expandpath(const char *path) {
return expanded; return expanded;
} }
int PrintingProgressBar = 0;
void progress_bar_print(double percentage, size_t tn_size, size_t index_size) { void progress_bar_print(double percentage, size_t tn_size, size_t index_size) {
static int last_val = -1; static int last_val = -1;
@ -114,13 +116,21 @@ void progress_bar_print(double percentage, size_t tn_size, size_t index_size) {
index_unit = 'M'; index_unit = 'M';
} }
printf( if (tn_size == 0 && index_size == 0) {
fprintf(stderr,
"\r%3d%%[%.*s>%*s]",
val, lpad, PBSTR, rpad, ""
);
} else {
fprintf(stderr,
"\r%3d%%[%.*s>%*s] TN:%3d%c IDX:%3d%c", "\r%3d%%[%.*s>%*s] TN:%3d%c IDX:%3d%c",
val, lpad, PBSTR, rpad, "", val, lpad, PBSTR, rpad, "",
(int) tn_size, tn_unit, (int) tn_size, tn_unit,
(int) index_size, index_unit (int) index_size, index_unit
); );
fflush(stdout); }
PrintingProgressBar = TRUE;
} }
GHashTable *incremental_get_table() { GHashTable *incremental_get_table() {

View File

@ -19,6 +19,8 @@ char *expandpath(const char *path);
dyn_buffer_t url_escape(char *str); dyn_buffer_t url_escape(char *str);
extern int PrintingProgressBar;
void progress_bar_print(double percentage, size_t tn_size, size_t index_size); void progress_bar_print(double percentage, size_t tn_size, size_t index_size);
GHashTable *incremental_get_table(); GHashTable *incremental_get_table();

File diff suppressed because one or more lines are too long

View File

@ -143,7 +143,7 @@ void parse_raw(scan_raw_ctx_t *ctx, vfile_t *f, document_t *doc) {
libraw_gps_info_t gps = libraw_lib->other.parsed_gps; libraw_gps_info_t gps = libraw_lib->other.parsed_gps;
double gps_longitude_dec = double gps_longitude_dec =
(gps.longtitude[0] + gps.longtitude[1] / 60 + gps.longtitude[2] / 3600) * DMS_REF(gps.longref); (gps.longitude[0] + gps.longitude[1] / 60 + gps.longitude[2] / 3600) * DMS_REF(gps.longref);
snprintf(tmp, sizeof(tmp), "%.15f", gps_longitude_dec); snprintf(tmp, sizeof(tmp), "%.15f", gps_longitude_dec);
if (gps_longitude_dec != 0.0) { if (gps_longitude_dec != 0.0) {
APPEND_STR_META(doc, MetaExifGpsLongitudeDec, tmp) APPEND_STR_META(doc, MetaExifGpsLongitudeDec, tmp)
@ -163,7 +163,13 @@ void parse_raw(scan_raw_ctx_t *ctx, vfile_t *f, document_t *doc) {
return; return;
} }
libraw_unpack_thumb(libraw_lib); int unpack_ret = libraw_unpack_thumb(libraw_lib);
if (unpack_ret != 0) {
CTX_LOG_ERRORF(f->filepath, "libraw_unpack_thumb returned error code %d", unpack_ret)
free(buf);
libraw_close(libraw_lib);
return;
}
int errc = 0; int errc = 0;
libraw_processed_image_t *thumb = libraw_dcraw_make_mem_thumb(libraw_lib, &errc); libraw_processed_image_t *thumb = libraw_dcraw_make_mem_thumb(libraw_lib, &errc);

View File

@ -780,6 +780,19 @@ TEST(Arc, EncryptedZip) {
} }
/* RAW */ /* RAW */
TEST(RAW, Segfault1) {
vfile_t f;
document_t doc;
load_doc_file("libscan-test-files/test_files/raw/segfault1.dng", &f, &doc);
parse_raw(&raw_ctx, &f, &doc);
ASSERT_EQ(get_meta(&doc, MetaWidth)->long_val, 3840);
ASSERT_EQ(get_meta(&doc, MetaHeight)->long_val, 7680);
cleanup(&doc, &f);
}
TEST(RAW, Panasonic) { TEST(RAW, Panasonic) {
vfile_t f; vfile_t f;
document_t doc; document_t doc;