From 6372dbba691b0c4fe33d9b15012a831d52955f42 Mon Sep 17 00:00:00 2001 From: nova Date: Sat, 4 Apr 2026 21:58:43 +0200 Subject: [PATCH] improvements to sort_random --- interactions.c | 7 ++----- main.c | 5 ++--- sorting.c | 20 ++++++++++++-------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/interactions.c b/interactions.c index 5c154b6..7e4169c 100644 --- a/interactions.c +++ b/interactions.c @@ -38,7 +38,7 @@ extern unsigned int status; extern char *start_path; extern char *input; -extern time_t *seed; +extern time_t seed; char search_buffer[INPUT_BUFFER_SIZE]; unsigned int input_pass; @@ -611,10 +611,7 @@ void jump_to_dir(unsigned long passes, int index){ void order_by(unsigned long passes, int index){ (void)passes; - free(seed); - seed = NULL; - seed = malloc(sizeof(time_t)); - *seed = time(NULL); + seed = time(NULL); order_func = key_binding[index].black_magic; status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_MASK | STATUS_RELOAD_DIRECTORY); diff --git a/main.c b/main.c index 032de70..4e20845 100644 --- a/main.c +++ b/main.c @@ -23,7 +23,7 @@ unsigned int file_modifiers; unsigned int status = (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_MASK | STATUS_RELOAD_DIRECTORY); char *start_path; char *global_path; -time_t *seed; +time_t seed; WINDOW *win_t; WINDOW *win_b; @@ -205,7 +205,6 @@ void init() { setenv("START_PATH", start_path, 0); free(start_path); - seed = malloc(sizeof(time_t)); - *seed = time(NULL); + seed = time(NULL); } diff --git a/sorting.c b/sorting.c index 1eae484..b8973e9 100644 --- a/sorting.c +++ b/sorting.c @@ -7,7 +7,7 @@ #include "defines.h" -extern time_t *seed; +extern time_t seed; int skip_hidden_files(const struct dirent *entry){ @@ -117,15 +117,19 @@ int sort_random(const void *file0, const void *file1){ if (!(((file*)file0)->file_type & FILE_TYPE_DIR) && (((file*)file1)->file_type & FILE_TYPE_DIR)) { return 1; } - time_t num = ((time_t)&sort_random)^((time_t)sort_natural); - int i = 1; - for (; i < 6; i++) { - num += *seed; - num ^= num << ((((time_t)&seed)%6)+i); - num ^= num >> ((((time_t)&num)%9)+i); + time_t num = ((time_t)&sort_random) + (time_t)seed + getpid(); + int i; + for (i = 1; i < (((time_t)&seed)%10); i++) { + num += getpid() / seed; + num ^= num << ((((time_t)seed)%11)+i); + num += ((file*)file0)->file_size; + num ^= num >> ((((time_t)seed)%7)+i); + num -= ((file*)file1)->file_size; } - return ((num%3) - 1); + /*printf("%ld\n", ((num & (3 << seed%16)) >> seed%16) - 1);*/ + return (((num & (3 << seed%32)) >> seed%32) - 1); + /*return ((num%3) - 1);*/ } int sort_type(const void *file0, const void *file1){