perf(lib): some minor improvements

This commit is contained in:
Masahiko AMANO 2022-12-24 20:46:39 +03:00
parent 159379cad2
commit 3bca700ab6
4 changed files with 94 additions and 53 deletions

View File

@ -5,21 +5,29 @@
#include "../../include/tanabata.h"
int tanabata_init(Tanabata *tanabata) {
int status = 0;
status |= sasahyou_init(&tanabata->sasahyou);
status |= sappyou_init(&tanabata->sappyou);
status |= shoppyou_init(&tanabata->shoppyou);
return status;
if (sasahyou_init(&tanabata->sasahyou) != 0) {
return 1;
}
if (sappyou_init(&tanabata->sappyou) != 0) {
return 1;
}
if (shoppyou_init(&tanabata->shoppyou) != 0) {
return 1;
}
return 0;
}
int tanabata_free(Tanabata *tanabata) {
int status = 0;
status |= sasahyou_free(&tanabata->sasahyou);
status |= sappyou_free(&tanabata->sappyou);
status |= shoppyou_free(&tanabata->shoppyou);
return status;
if (sasahyou_free(&tanabata->sasahyou) != 0) {
return 1;
}
if (sappyou_free(&tanabata->sappyou) != 0) {
return 1;
}
if (shoppyou_free(&tanabata->shoppyou) != 0) {
return 1;
}
return 0;
}
int tanabata_weed(Tanabata *tanabata) {
@ -32,21 +40,29 @@ int tanabata_weed(Tanabata *tanabata) {
}
int tanabata_load(Tanabata *tanabata) {
int status = 0;
status |= sasahyou_load(&tanabata->sasahyou);
status |= sappyou_load(&tanabata->sappyou);
status |= shoppyou_load(&tanabata->shoppyou);
return status;
if (sasahyou_load(&tanabata->sasahyou) != 0) {
return 1;
}
if (sappyou_load(&tanabata->sappyou) != 0) {
return 1;
}
if (shoppyou_load(&tanabata->shoppyou) != 0) {
return 1;
}
return 0;
}
int tanabata_save(Tanabata *tanabata) {
int status = 0;
status |= sasahyou_save(&tanabata->sasahyou);
status |= sappyou_save(&tanabata->sappyou);
status |= shoppyou_save(&tanabata->shoppyou);
return status;
if (sasahyou_save(&tanabata->sasahyou) != 0) {
return 1;
}
if (sappyou_save(&tanabata->sappyou) != 0) {
return 1;
}
if (shoppyou_save(&tanabata->shoppyou) != 0) {
return 1;
}
return 0;
}
int tanabata_open(Tanabata *tanabata, const char *path) {
@ -54,17 +70,21 @@ int tanabata_open(Tanabata *tanabata, const char *path) {
if (stat(path, &st) != 0 || !S_ISDIR(st.st_mode)) {
return 1;
}
int status = 0;
char *file_path = malloc(strlen(path) + 10);
strcpy(file_path, path);
status |= sasahyou_open(&tanabata->sasahyou, strcat(file_path, "/sasahyou"));
if (sasahyou_open(&tanabata->sasahyou, strcat(file_path, "/sasahyou")) != 0) {
return 1;
}
strcpy(file_path, path);
status |= sappyou_open(&tanabata->sappyou, strcat(file_path, "/sappyou"));
if (sappyou_open(&tanabata->sappyou, strcat(file_path, "/sappyou")) != 0) {
return 1;
}
strcpy(file_path, path);
status |= shoppyou_open(&tanabata->shoppyou, strcat(file_path, "/shoppyou"));
if (shoppyou_open(&tanabata->shoppyou, strcat(file_path, "/shoppyou")) != 0) {
return 1;
}
free(file_path);
return status;
return 0;
}
int tanabata_dump(Tanabata *tanabata, const char *path) {
@ -72,15 +92,19 @@ int tanabata_dump(Tanabata *tanabata, const char *path) {
if (stat(path, &st) != 0 || !S_ISDIR(st.st_mode)) {
return 1;
}
int status = 0;
char *file_path = malloc(strlen(path) + 10);
strcpy(file_path, path);
status |= sasahyou_dump(&tanabata->sasahyou, strcat(file_path, "/sasahyou"));
strcpy(file_path, path);
status |= sappyou_dump(&tanabata->sappyou, strcat(file_path, "/sappyou"));
strcpy(file_path, path);
status |= shoppyou_dump(&tanabata->shoppyou, strcat(file_path, "/shoppyou"));
free(file_path);
return status;
if (sasahyou_dump(&tanabata->sasahyou, strcat(file_path, "/sasahyou")) != 0) {
return 1;
}
strcpy(file_path, path);
if (sappyou_dump(&tanabata->sappyou, strcat(file_path, "/sappyou")) != 0) {
return 1;
}
strcpy(file_path, path);
if (shoppyou_dump(&tanabata->shoppyou, strcat(file_path, "/shoppyou")) != 0) {
return 1;
}
free(file_path);
return 0;
}

View File

@ -3,11 +3,18 @@
#include "../../include/tanabata.h"
int tanabata_kazari_add(Tanabata *tanabata, uint64_t sasa_id, uint64_t tanzaku_id) {
for (uint64_t i = 0; i < tanabata->shoppyou.size; i++) {
if (tanabata->shoppyou.database[i].sasa_id == sasa_id &&
tanabata->shoppyou.database[i].tanzaku_id == tanzaku_id) {
if (sasa_id >= tanabata->sasahyou.size) {
return 1;
}
if (tanzaku_id >= tanabata->sappyou.size) {
return 1;
}
Kazari *current_kazari = tanabata->shoppyou.database;
for (uint64_t i = 0; i < tanabata->shoppyou.size; i++) {
if (current_kazari->sasa_id == sasa_id && current_kazari->tanzaku_id == tanzaku_id) {
return 1;
}
current_kazari++;
}
return kazari_add(&tanabata->shoppyou, sasa_id, tanzaku_id);
}
@ -22,13 +29,14 @@ Tanzaku *tanabata_tanzaku_get_by_sasa(Tanabata *tanabata, uint64_t sasa_id) {
}
Tanzaku *tanzaku_list = NULL;
uint64_t tanzaku_count = 0;
Kazari *current_kazari = tanabata->shoppyou.database;
for (uint64_t i = 0; i < tanabata->shoppyou.size; i++) {
if (tanabata->shoppyou.database[i].sasa_id == sasa_id) {
if (current_kazari->sasa_id == sasa_id) {
tanzaku_count++;
tanzaku_list = realloc(tanzaku_list, tanzaku_count * sizeof(Tanzaku));
tanzaku_list[tanzaku_count - 1] = \
tanabata_tanzaku_get_by_id(tanabata, tanabata->shoppyou.database[i].tanzaku_id);
tanzaku_list[tanzaku_count - 1] = tanabata_tanzaku_get_by_id(tanabata, current_kazari->tanzaku_id);
}
current_kazari++;
}
if (tanzaku_list != NULL) {
tanzaku_list = realloc(tanzaku_list, (tanzaku_count + 1) * sizeof(Tanzaku));
@ -43,13 +51,14 @@ Sasa *tanabata_sasa_get_by_tanzaku(Tanabata *tanabata, uint64_t tanzaku_id) {
}
Sasa *sasa_list = NULL;
uint64_t sasa_count = 0;
Kazari *current_kazari = tanabata->shoppyou.database;
for (uint64_t i = 0; i < tanabata->shoppyou.size; i++) {
if (tanabata->shoppyou.database[i].tanzaku_id == tanzaku_id) {
if (current_kazari->tanzaku_id == tanzaku_id) {
sasa_count++;
sasa_list = realloc(sasa_list, sasa_count * sizeof(Sasa));
sasa_list[sasa_count - 1] = \
tanabata_sasa_get_by_id(tanabata, tanabata->shoppyou.database[i].sasa_id);
sasa_list[sasa_count - 1] = tanabata_sasa_get_by_id(tanabata, current_kazari->sasa_id);
}
current_kazari++;
}
if (sasa_list != NULL) {
sasa_list = realloc(sasa_list, (sasa_count + 1) * sizeof(Sasa));

View File

@ -4,10 +4,12 @@
#include "../../include/tanabata.h"
int tanabata_sasa_add(Tanabata *tanabata, const char *path) {
Sasa *current_sasa = tanabata->sasahyou.database;
for (uint64_t i = 0; i < tanabata->sasahyou.size; i++) {
if (tanabata->sasahyou.database[i].id != HOLE_ID && strcmp(tanabata->sasahyou.database[i].path, path) == 0) {
if (current_sasa->id != HOLE_ID && strcmp(current_sasa->path, path) == 0) {
return 1;
}
current_sasa++;
}
char *abspath = NULL;
abspath = realpath(path, abspath);
@ -22,12 +24,12 @@ int tanabata_sasa_rem_by_id(Tanabata *tanabata, uint64_t sasa_id) {
}
int tanabata_sasa_rem_by_path(Tanabata *tanabata, const char *path) {
Sasa *current_sasa;
Sasa *current_sasa = tanabata->sasahyou.database;
for (uint64_t i = 0; i < tanabata->sasahyou.size; i++) {
current_sasa = tanabata->sasahyou.database + i;
if (current_sasa->id != HOLE_ID && strcmp(current_sasa->path, path) == 0) {
return sasa_rem(&tanabata->sasahyou, current_sasa->id);
}
current_sasa++;
}
return 1;
}
@ -48,10 +50,12 @@ Sasa tanabata_sasa_get_by_path(Tanabata *tanabata, const char *path) {
if (abspath == NULL) {
return HOLE_SASA;
}
Sasa *current_sasa = tanabata->sasahyou.database;
for (uint64_t i = 0; i < tanabata->sasahyou.size; i++) {
if (tanabata->sasahyou.database[i].id != HOLE_ID && strcmp(tanabata->sasahyou.database[i].path, abspath) == 0) {
return tanabata->sasahyou.database[i];
if (current_sasa->id != HOLE_ID && strcmp(current_sasa->path, abspath) == 0) {
return *current_sasa;
}
current_sasa++;
}
return HOLE_SASA;
}

View File

@ -2,10 +2,12 @@
#include "../../include/tanabata.h"
int tanabata_tanzaku_add(Tanabata *tanabata, const char *name, const char *description) {
Tanzaku *current_tanzaku = tanabata->sappyou.database;
for (uint64_t i = 0; i < tanabata->sappyou.size; i++) {
if (tanabata->sappyou.database[i].id != HOLE_ID && strcmp(tanabata->sappyou.database[i].name, name) == 0) {
if (current_tanzaku->id != HOLE_ID && strcmp(current_tanzaku->name, name) == 0) {
return 1;
}
current_tanzaku++;
}
return tanzaku_add(&tanabata->sappyou, name, description);
}
@ -15,12 +17,12 @@ int tanabata_tanzaku_rem_by_id(Tanabata *tanabata, uint64_t tanzaku_id) {
}
int tanabata_tanzaku_rem_by_name(Tanabata *tanabata, const char *name) {
Tanzaku *current_tanzaku;
Tanzaku *current_tanzaku = tanabata->sappyou.database;
for (uint64_t i = 0; i < tanabata->sappyou.size; i++) {
current_tanzaku = tanabata->sappyou.database + i;
if (current_tanzaku->id != HOLE_ID && strcmp(current_tanzaku->name, name) == 0) {
return tanzaku_rem(&tanabata->sappyou, current_tanzaku->id);
}
current_tanzaku++;
}
return 1;
}
@ -36,10 +38,12 @@ Tanzaku tanabata_tanzaku_get_by_id(Tanabata *tanabata, uint64_t tanzaku_id) {
}
Tanzaku tanabata_tanzaku_get_by_name(Tanabata *tanabata, const char *name) {
Tanzaku *current_tanzaku = tanabata->sappyou.database;
for (uint64_t i = 0; i < tanabata->sappyou.size; i++) {
if (tanabata->sappyou.database[i].id != HOLE_ID && strcmp(tanabata->sappyou.database[i].name, name) == 0) {
if (current_tanzaku->id != HOLE_ID && strcmp(current_tanzaku->name, name) == 0) {
return tanabata->sappyou.database[i];
}
current_tanzaku++;
}
return HOLE_TANZAKU;
}