update: fix README information

This commit is contained in:
ngn
2024-07-16 20:38:58 +03:00
parent aeb375e8d3
commit 91f513132b
9 changed files with 106 additions and 113 deletions

View File

@@ -7,41 +7,41 @@
#include "args.h"
#include "util.h"
void args_add(args_t *args, char *name){
if(NULL == args->list)
args->list = malloc(sizeof(arg_t)*(args->count+1));
void args_add(args_t *args, char *name) {
if (NULL == args->list)
args->list = malloc(sizeof(arg_t) * (args->count + 1));
else
args->list = realloc(args->list, sizeof(arg_t)*(args->count+1));
args->list = realloc(args->list, sizeof(arg_t) * (args->count + 1));
args->list[args->count].name = name;
args->list[args->count].name = name;
args->list[args->count++].value = NULL;
}
void args_add_value(args_t *args, char *value){
if(NULL != args->list && args->list[args->count-1].value == NULL){
args->list[args->count-1].value = value;
void args_add_value(args_t *args, char *value) {
if (NULL != args->list && args->list[args->count - 1].value == NULL) {
args->list[args->count - 1].value = value;
return;
}
if(NULL == args->list)
args->list = malloc(sizeof(arg_t)*(args->count+1));
if (NULL == args->list)
args->list = malloc(sizeof(arg_t) * (args->count + 1));
else
args->list = realloc(args->list, sizeof(arg_t)*(args->count+1));
args->list = realloc(args->list, sizeof(arg_t) * (args->count + 1));
args->list[args->count].name = NULL;
args->list[args->count].name = NULL;
args->list[args->count++].value = value;
}
args_t *args_parse(int argc, char *argv[]){
args_t *args_parse(int argc, char *argv[]) {
args_t *args = malloc(sizeof(args_t));
bzero(args, sizeof(args_t));
if(argc <= 1)
if (argc <= 1)
return args;
for(int i = 1; i < argc; i++){
if(startswith(argv[i], "--"))
args_add(args, argv[i]+2);
for (int i = 1; i < argc; i++) {
if (startswith(argv[i], "--"))
args_add(args, argv[i] + 2);
else
args_add_value(args, argv[i]);
}
@@ -49,41 +49,41 @@ args_t *args_parse(int argc, char *argv[]){
return args;
}
void args_free(args_t *args){
void args_free(args_t *args) {
free(args->list);
free(args);
}
char *args_get_string(args_t *args, char *name){
for(int i = 0; i < args->count; i++){
if(NULL == args->list[i].name)
char *args_get_string(args_t *args, char *name) {
for (int i = 0; i < args->count; i++) {
if (NULL == args->list[i].name)
continue;
if(eq(args->list[i].name, name))
if (eq(args->list[i].name, name))
return args->list[i].value;
}
return NULL;
}
bool args_get_bool(args_t *args, char *name){
for(int i = 0; i < args->count; i++){
if(NULL == args->list[i].name)
bool args_get_bool(args_t *args, char *name) {
for (int i = 0; i < args->count; i++) {
if (NULL == args->list[i].name)
continue;
if(eq(args->list[i].name, name))
if (eq(args->list[i].name, name))
return true;
}
return false;
}
int args_get_int(args_t *args, char *name){
for(int i = 0; i < args->count; i++){
if(NULL == args->list[i].name)
int args_get_int(args_t *args, char *name) {
for (int i = 0; i < args->count; i++) {
if (NULL == args->list[i].name)
continue;
if(eq(args->list[i].name, name))
if (eq(args->list[i].name, name))
return atoi(args->list[i].value);
}

View File

@@ -12,7 +12,7 @@ typedef struct args {
} args_t;
args_t *args_parse(int argc, char *argv[]);
char *args_get_string(args_t *args, char *name);
bool args_get_bool(args_t *args, char *name);
int args_get_int(args_t *args, char *name);
void args_free(args_t *args);
char *args_get_string(args_t *args, char *name);
bool args_get_bool(args_t *args, char *name);
int args_get_int(args_t *args, char *name);
void args_free(args_t *args);

View File

@@ -2,14 +2,14 @@
#include <libmp/all.h>
#include <stdbool.h>
#include "config.h"
#include "args.h"
#include "config.h"
typedef bool (*cmd_func_t)(lm_ctx_t *ctx, config_t *config, args_t *args);
typedef struct cmd {
char *name;
char *desc;
char *name;
char *desc;
cmd_func_t func;
} cmd_t;

View File

@@ -9,10 +9,10 @@
#include "intl.h"
#include "log.h"
bool config_set(config_t *config, char *key, char *value){
if(eq(key, "tmpdir"))
bool config_set(config_t *config, char *key, char *value) {
if (eq(key, "tmpdir"))
config->tmpdir = strdup(value);
else if(eq(key, "datadir"))
else if (eq(key, "datadir"))
config->datadir = strdup(value);
else
return false;
@@ -23,8 +23,8 @@ pool_config_t *config_pool_add(config_t *config, char *name) {
pool_config_t *pool = malloc(sizeof(pool_config_t));
bzero(pool, sizeof(pool_config_t));
pool->name = strdup(name);
pool->next = config->pools;
pool->name = strdup(name);
pool->next = config->pools;
config->pools = pool;
config->pool_count++;
@@ -44,11 +44,11 @@ bool config_pool_contains(config_t *config, char *name) {
}
int config_load_handler(void *data, const char *_section, const char *_key, const char *_value) {
char *section = (char *)_section, *key = (char *)_key, *value = (char *)_value;
char *section = (char *)_section, *key = (char *)_key, *value = (char *)_value;
config_t *config = data;
if(eq(section, "")){
if(config_set(config, key, value))
if (eq(section, "")) {
if (config_set(config, key, value))
return 1;
goto unknown;
}
@@ -84,12 +84,12 @@ bool config_load(lm_ctx_t *ctx, config_t *config, char *file) {
return false;
}
if(NULL == config->tmpdir){
if (NULL == config->tmpdir) {
error(_("Please specify \"tmpdir\" in the configuration"));
return false;
}
if(NULL == config->datadir){
if (NULL == config->datadir) {
error(_("Please specify \"datadir\" in the configuration"));
return false;
}
@@ -102,7 +102,7 @@ bool config_load(lm_ctx_t *ctx, config_t *config, char *file) {
}
pool = pool->next;
}
return true;
}

View File

@@ -10,9 +10,9 @@ typedef struct pool_config {
} pool_config_t;
typedef struct config {
pool_config_t *pools;
char *datadir, *tmpdir;
ssize_t pool_count;
pool_config_t *pools;
char *datadir, *tmpdir;
ssize_t pool_count;
} config_t;
bool config_load(lm_ctx_t *ctx, config_t *config, char *file);

View File

@@ -1,10 +1,9 @@
#include <sys/ioctl.h>
#include <stdbool.h>
#include <stdarg.h>
#include <string.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/ioctl.h>
#include <time.h>
#include <unistd.h>
@@ -92,10 +91,10 @@ bool bar(float cur, float max) {
if (per > 100) {
return false;
}
struct winsize barwin = {0};
char perc[20];
char perc[20];
ioctl(STDOUT_FILENO, TIOCGWINSZ, &barwin);
sprintf(perc, " %%%.f", per);
@@ -107,7 +106,7 @@ bool bar(float cur, float max) {
int prog = size * (cur / max);
if (prog > size)
return true;
printf("\e[?25l");
printf("\r" FG_BOLD "[");

View File

@@ -26,48 +26,48 @@
#include <libmp/ctx.h>
#include <libmp/error.h>
#include <libmp/util.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include "config.h"
#include "args.h"
#include "intl.h"
#include "cmd.h"
#include "config.h"
#include "intl.h"
#include "log.h"
int main(int argc, char *argv[]) {
cmd_t commands[] = {
{.name="list", .desc="list all the installed packages", .func=cmd_list},
{.name="sync", .desc="update the pool info and package lists", .func=cmd_sync},
{.name="install", .desc="install package(s) from remote pools", .func=cmd_install},
{.name="remove", .desc="remove installed package(s)", .func=NULL},
{.name="update", .desc="update installed package(s)", .func=NULL},
{.name = "list", .desc = "list all the installed packages", .func = cmd_list },
{.name = "sync", .desc = "update the pool info and package lists", .func = cmd_sync },
{.name = "install", .desc = "install package(s) from remote pools", .func = cmd_install},
{.name = "remove", .desc = "remove installed package(s)", .func = NULL },
{.name = "update", .desc = "update installed package(s)", .func = NULL },
};
char *config_file = NULL, *root_dir = NULL;
char *full_datadir = NULL, *full_tmpdir = NULL;
args_t *args = NULL;
bool ret = false;
char *config_file = NULL, *root_dir = NULL;
char *full_datadir = NULL, *full_tmpdir = NULL;
args_t *args = NULL;
bool ret = false;
config_t config;
lm_ctx_t ctx;
lm_ctx_init(&ctx);
args = args_parse(argc, argv);
if((config_file = args_get_string(args, "config")) == NULL)
if ((config_file = args_get_string(args, "config")) == NULL)
config_file = "/etc/matt/config.ini";
if(!config_load(&ctx, &config, config_file))
if (!config_load(&ctx, &config, config_file))
goto end;
if(args->count <= 0 || args->list[0].name != NULL)
if (args->count <= 0 || args->list[0].name != NULL)
goto help;
if((root_dir = args_get_string(args, "root")) == NULL)
if ((root_dir = args_get_string(args, "root")) == NULL)
root_dir = "/";
if(!lm_ctx_set_root(&ctx, root_dir)){
if(LM_ERR_CtxRootNoWrite == lm_error())
if (!lm_ctx_set_root(&ctx, root_dir)) {
if (LM_ERR_CtxRootNoWrite == lm_error())
error(_("Failed to access the root directory, are you running as root?"));
else
error(_("Bad root directory (%s): %s"), root_dir, lm_strerror());
@@ -75,50 +75,51 @@ int main(int argc, char *argv[]) {
}
full_datadir = join_alloc(root_dir, config.datadir);
full_tmpdir = join_alloc(root_dir, config.tmpdir);
full_tmpdir = join_alloc(root_dir, config.tmpdir);
if(!lm_ctx_set_data(&ctx, full_datadir)){
if (!lm_ctx_set_data(&ctx, full_datadir)) {
error(_("Bad datadir (%s): %s"), full_datadir, lm_strerror());
goto end;
}
if(!lm_ctx_set_temp(&ctx, full_tmpdir)){
if (!lm_ctx_set_temp(&ctx, full_tmpdir)) {
error(_("Bad tmpdir (%s): %s"), full_tmpdir, lm_strerror());
goto end;
}
pool_config_t *pool = config.pools;
while (NULL != pool) {
if(!lm_ctx_pool_add(&ctx, pool->name, pool->url)){
error(_("Failed to add pool "FG_BOLD"%s"FG_RESET" to the list: %s"), pool->name, lm_strerror());
if (!lm_ctx_pool_add(&ctx, pool->name, pool->url)) {
error(_("Failed to add pool " FG_BOLD "%s" FG_RESET " to the list: %s"), pool->name, lm_strerror());
goto end;
}
pool = pool->next;
}
for(int i = 0; i < sizeof(commands)/sizeof(cmd_t); i++){
if(eq(commands[i].name, args->list[0].value)){
for (int i = 0; i < sizeof(commands) / sizeof(cmd_t); i++) {
if (eq(commands[i].name, args->list[0].value)) {
ret = commands[i].func(&ctx, &config, args);
goto end;
}
}
error(_("Command not found: "FG_BOLD"%s"), args->list[0].value);
error(_("Command not found: " FG_BOLD "%s"), args->list[0].value);
help:
info(_("MatterLinux package manager (version %s)"), VERSION);
info(_("Usage: "FG_BOLD"%s [command] <options> <arguments>"), argv[0]);
info(_("Usage: " FG_BOLD "%s [command] <options> <arguments>"), argv[0]);
printf("\n");
info(_("Here is a list of available commands:"));
for(int i = 0; i < sizeof(commands)/sizeof(cmd_t); i++)
printf(" "FG_BOLD"%s"FG_RESET":\t %s\n", commands[i].name, commands[i].desc);
for (int i = 0; i < sizeof(commands) / sizeof(cmd_t); i++)
printf(" " FG_BOLD "%s" FG_RESET ":\t %s\n", commands[i].name, commands[i].desc);
printf("\n");
info(_("To list different options, use commands with "FG_BOLD"--help"FG_RESET" option"));
info(_("To list different options, use commands with " FG_BOLD "--help" FG_RESET " option"));
info(_("Here is a list of available global options:"));
printf(_(" "FG_BOLD"--config"FG_RESET":\t specify the configuration file (default is /etc/matt/config.ini)\n"));
printf(_(" "FG_BOLD"--root"FG_RESET":\t specify a custom root directory (default is /)\n\n"));
printf(
_(" " FG_BOLD "--config" FG_RESET ":\t specify the configuration file (default is /etc/matt/config.ini)\n"));
printf(_(" " FG_BOLD "--root" FG_RESET ":\t specify a custom root directory (default is /)\n\n"));
info(_("Licensed under GPLv3, see https://www.gnu.org/licenses/ for more information"));

View File

@@ -4,11 +4,11 @@
#include "util.h"
bool startswith(char *str, char *sub){
bool startswith(char *str, char *sub) {
size_t strl = strlen(str);
size_t subl = strlen(sub);
if(subl > strl)
if (subl > strl)
return false;
return strncmp(sub, str, subl) == 0;