From fad725f919108f28394c9dfc5420ed05dfc5b6b3 Mon Sep 17 00:00:00 2001 From: Alexander Zhylin Date: Fri, 13 Feb 2026 12:22:16 +0200 Subject: [PATCH] API: file list, file search: default values --- src/client.c | 30 +++++++++++++++++++++++++----- src/file_p.c | 3 +-- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/client.c b/src/client.c index 8a0dee6..523a93b 100644 --- a/src/client.c +++ b/src/client.c @@ -8,19 +8,30 @@ #include #include +#define DEF_LIMIT 15 +#define DEF_PAGE_NUM 1 + void process_client_command(char *line, session *sess, server_data_t *s_d) { char arg_1[32]; char arg_2[32]; uint32_t res; i_file_list_t fl_args; fl_args.name = NULL; + int32_t ret = 0; sscanf(line, "%s %s", arg_1, arg_2); if (!strcmp(arg_1, "file")) { /* LIST */ if (!strcmp(arg_2, "list")) { - sscanf(line, "%*s %*s %u %u", &(fl_args.limit), &(fl_args.page)); + ret = sscanf(line, "%*s %*s %u %u", &(fl_args.limit), &(fl_args.page)); + switch (ret) { + case EOF: + case 0: + fl_args.limit = DEF_LIMIT; + case 1: + fl_args.page = DEF_PAGE_NUM; + } file_list(sess, s_d, &fl_args); return; } @@ -28,7 +39,7 @@ void process_client_command(char *line, session *sess, server_data_t *s_d) { /* UPLOAD */ if (!strcmp(arg_2, "upload")) { res = file_receive_prepare(sess, line, s_d); - if (!res) + if (!res) sess->state = OP_UPLOAD; return; } @@ -43,10 +54,19 @@ void process_client_command(char *line, session *sess, server_data_t *s_d) { /* SEARCH */ if (!strcmp(arg_2, "search")) { - char *s_type = arg_1; /* since we don't need the contents of arg_1 and arg_2 variables */ + char *s_type = arg_1; /* since we don't need the contents of arg_1 and + arg_2 variables */ char *s_val = arg_2; - sscanf(line, "%*s %*s %s %s %u %u", s_type, s_val, &(fl_args.limit), &(fl_args.page)); - + ret = sscanf(line, "%*s %*s %s %s %u %u", s_type, s_val, &(fl_args.limit), + &(fl_args.page)); + + switch (ret) { + case 2: + fl_args.limit = DEF_LIMIT; + case 3: + fl_args.page = DEF_PAGE_NUM; + } + /* by name */ if (!strcmp(s_type, "name")) { fl_args.name = s_val; diff --git a/src/file_p.c b/src/file_p.c index 7de4b45..2914dcf 100644 --- a/src/file_p.c +++ b/src/file_p.c @@ -70,7 +70,7 @@ void file_list(session *sess, server_data_t *s_d, i_file_list_t *f_args) { pages_count = full_count / f_args->limit; if (!pages_count) pages_count = 1; - if (pages_count % f_args->limit) + if (pages_count > 1 && (pages_count % f_args->limit)) pages_count++; sprintf(page_info, ":END: PAGE %u/%lu COUNT: %lu/%lu\n", f_args->page, @@ -132,7 +132,6 @@ void extract_names_from_hash(uint32_t file_hash, char *dirname, char *fname) { int32_t file_send_prepare(session *sess, char *line, server_data_t *s_d) { int32_t sd = sess->sd; i_get_file_db args = {.id = 0, .user_id = 0, .name = ""}; - char st_message[256]; int32_t file_d; size_t fsize; char hashed_dir_name[3];