From 700cef9963b8177937c26ffe751b3108443780cb Mon Sep 17 00:00:00 2001 From: s13bby Date: Thu, 3 Sep 2026 21:50:18 +0600 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit обработка ~/ в аргументе пути. ОБЯЗАТЕЛЬНО указывать в пути в конце / --- .gitignore | 2 ++ main.c | 63 +++++++++++++++++++++++++++++++++++++++-------------- zenith-cli | Bin 29136 -> 0 bytes 3 files changed, 49 insertions(+), 16 deletions(-) delete mode 100755 zenith-cli diff --git a/.gitignore b/.gitignore index cd531cf..7729ef9 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,5 @@ Module.symvers Mkfile.old dkms.conf +zenith-cli +*.jpg \ No newline at end of file diff --git a/main.c b/main.c index 0fe5a31..e52a232 100644 --- a/main.c +++ b/main.c @@ -1,6 +1,7 @@ #include #include #include +#include #include "libs/argparse.h" #include "curl/curl.h" @@ -20,21 +21,20 @@ void write_pallete(const struct Scheme *s){ //s->bg_color } -int download_wall(const char *link){ - CURL *curl; - FILE *fp; +int download_wall(const char* link, const char* path){ + CURL* curl; + FILE* fp; CURLcode res; - const char *outfilename = "wallpaper.jpg"; - curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if(curl) { - fp = fopen(outfilename, "wb"); + fp = fopen(path, "wb"); if(fp == NULL) { - fprintf(stderr, "ошибка: не удалось создать или открыть файл %s\n", outfilename); + fprintf(stderr, \ + "ошибка: не удалось создать или открыть файл %s\n", path); curl_easy_cleanup(curl); curl_global_cleanup(); @@ -49,7 +49,8 @@ int download_wall(const char *link){ res = curl_easy_perform(curl); if(res != CURLE_OK) { - fprintf(stderr, "ошибка скачивания: %s\n", curl_easy_strerror(res)); + fprintf(stderr, "ошибка скачивания: %s\n", \ + curl_easy_strerror(res)); } fclose(fp); @@ -64,16 +65,27 @@ int download_wall(const char *link){ int main(int argc, const char **argv) { const char* link = NULL; - const char* scheme_output = NULL; - const char* wall_output = NULL; - int is_pastel = 0; + const char* user_home = getenv("HOME"); + const char* filename = "wallpaper.jpg"; + + char* raw_scheme_path = NULL; + char* raw_wall_path = NULL; + + char wall_output[512]; + char path[512]; + + int is_pastel = 0; struct argparse_option options[] = { OPT_HELP(), - OPT_STRING(0,"link", &link, "ссылка на изображение с сайта wallhave.cc", NULL, 0, 0), - OPT_BOOLEAN('p', "pastel", &is_pastel, "создать пастельные палитры", NULL, 0, 0), - OPT_STRING(0,"scheme-output", &scheme_output, "директория для сохранения палитр", NULL, 0, 0), - OPT_STRING(0,"wall-output", &wall_output, "директория для сохранения обоев", NULL, 0, 0), + OPT_STRING(0,"link", &link, \ + "ссылка на изображение с сайта wallhave.cc", NULL, 0, 0), + OPT_BOOLEAN('p', "pastel", &is_pastel, \ + "создать пастельные палитры", NULL, 0, 0), + OPT_STRING(0,"scheme-output", &raw_scheme_path,\ + "директория для сохранения палитр", NULL, 0, 0), + OPT_STRING(0,"wall-output", &raw_wall_path, \ + "директория для сохранения обоев", NULL, 0, 0), OPT_END(), }; @@ -81,12 +93,31 @@ int main(int argc, const char **argv) { argparse_init(&argparse, options, NULL, 0); argc = argparse_parse(&argparse, argc, argv); - download_wall(link); + if (raw_wall_path == NULL){ + wall_output[0] = '.'; + wall_output[1] = '/'; + } + else if (raw_wall_path[0] == '~'){ + snprintf(wall_output, sizeof(wall_output), \ + "%s%s", user_home, raw_wall_path + 1); + } + snprintf(path, sizeof(path), "%s%s", wall_output, filename); + + download_wall(link, path); return 0; } /* +аргументы zenith-cli --link="link" -p/--pastel --scheme-output="path" --wall-output="path" +примеры использования + +если передать пустую строку, то файл сохранится в директории утилиты +./zenith-cli --link="https://w.wallhaven.cc/full/gw/wallhaven-gwd313.jpg" --wall-output="" + +ОБЯЗАТЕЛЬНО указывать в пути в конце /. потом мб добавлю проверку и автодополнение +./zenith-cli --link="https://w.wallhaven.cc/full/gw/wallhaven-gwd313.jpg" --wall-output="/home/ivan/" +./zenith-cli --link="https://w.wallhaven.cc/full/gw/wallhaven-gwd313.jpg" --wall-output="~/" */ \ No newline at end of file diff --git a/zenith-cli b/zenith-cli deleted file mode 100755 index cdf9365aaab89469d5f60cffaa470dceb9d8465e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29136 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