removing external library

This commit is contained in:
synt-xerror
2026-02-20 16:39:50 -03:00
parent a23637a2c8
commit 7bc499f740
4 changed files with 68 additions and 83 deletions

View File

@@ -3,12 +3,10 @@ LDFLAGS := $(shell pkg-config --libs glib-2.0)
HOME := $(HOME)
task:
gcc -c toybox.c -o toybox.o
ar rcs libtoybox.a toybox.o
gcc task.c -L. -ltoybox $(CFLAGS) -o task $(LDFLAGS)
gcc task.c $(CFLAGS) -o task $(LDFLAGS)
clean:
rm -f task libtoybox.a toybox.o
rm -f task
install:
mv task /usr/local/bin

67
task.c
View File

@@ -1,7 +1,11 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "toybox.h"
#include <unistd.h>
#include <pwd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
// IDEAS
// - Organização das tarefas por lista
@@ -18,6 +22,67 @@ char* CONFIG_DIR = ".config/task-cli";
// files
char* TASK_FILE = "task.txt";
char* home()
{
struct passwd *u;
u = getpwuid(getuid());
if (!u) {
perror("invalid return of getpwuid() function.\n");
return NULL;
}
return u->pw_dir;
}
// DIR_NAME deve ser o nome do diretório, não o caminho (ex: task)
// Se HOME = NULL, a função assume que a pasta que quer está fora da pasta /home/usuário
// Importante: essa função retorna um char*. Para abrir o diretório retornado, você deve usar
// a função opendir() com o valor retornado de get_dir()
char* get_dir(const char* HOME, const char* DIR_NAME) {
if (DIR_NAME[0] == '~') {
perror("get_dir doesn't expand '~'");
return NULL;
}
if (DIR_NAME[0] == '/') {
perror("DIR_NAME can't begin with '/'");
return NULL;
}
const char *prefix = HOME ? HOME : "";
int size = strlen(prefix) + 1 + strlen(DIR_NAME) + 1;
char *DIR_FINAL = malloc(size);
if (!DIR_FINAL) {
perror("malloc failed");
return NULL;
}
sprintf(DIR_FINAL, "%s/%s", prefix, DIR_NAME);
DIR *dir = opendir(DIR_FINAL);
if (!dir) {
if (mkdir(DIR_FINAL, 0755) != 0) {
fprintf(stderr, "'%s' cannot be created\n", DIR_FINAL);
free(DIR_FINAL);
return NULL;
}
} else {
closedir(dir);
}
return DIR_FINAL;
}
char* get_file(char* ROOT, char* FILE_NAME) {
char* FINAL_FILE;
FINAL_FILE = malloc(strlen(ROOT) + strlen(FILE_NAME) + 1);
sprintf(FINAL_FILE, "%s/%s", ROOT, FILE_NAME);
return FINAL_FILE;
}
int main(int argc, char* argv[])
{

View File

@@ -1,70 +0,0 @@
#include <unistd.h>
#include <pwd.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
char* home()
{
struct passwd *u;
u = getpwuid(getuid());
if (!u) {
perror("invalid return of getpwuid() function.\n");
return NULL;
}
return u->pw_dir;
}
// DIR_NAME deve ser o nome do diretório, não o caminho (ex: task)
// Se HOME = NULL, a função assume que a pasta que quer está fora da pasta /home/usuário
// Importante: essa função retorna um char*. Para abrir o diretório retornado, você deve usar
// a função opendir() com o valor retornado de get_dir()
char* get_dir(const char* HOME, const char* DIR_NAME) {
if (DIR_NAME[0] == '~') {
perror("get_dir doesn't expand '~'");
return NULL;
}
if (DIR_NAME[0] == '/') {
perror("DIR_NAME can't begin with '/'");
return NULL;
}
const char *prefix = HOME ? HOME : "";
int size = strlen(prefix) + 1 + strlen(DIR_NAME) + 1;
char *DIR_FINAL = malloc(size);
if (!DIR_FINAL) {
perror("malloc failed");
return NULL;
}
sprintf(DIR_FINAL, "%s/%s", prefix, DIR_NAME);
DIR *dir = opendir(DIR_FINAL);
if (!dir) {
if (mkdir(DIR_FINAL, 0755) != 0) {
fprintf(stderr, "'%s' cannot be created\n", DIR_FINAL);
free(DIR_FINAL);
return NULL;
}
} else {
closedir(dir);
}
return DIR_FINAL;
}
char* get_file(char* ROOT, char* FILE_NAME) {
char* FINAL_FILE;
FINAL_FILE = malloc(strlen(ROOT) + strlen(FILE_NAME) + 1);
sprintf(FINAL_FILE, "%s/%s", ROOT, FILE_NAME);
return FINAL_FILE;
}

View File

@@ -1,8 +0,0 @@
#ifndef TOYBOX_H
#define TOYBOX_H
char* home();
char* get_dir(const char* HOME, const char* DIR_NAME);
char* get_file(char* ROOT, char* FILE_NAME);
#endif