fix(lib): some bug fixes, optimization improves and code cleanup
This commit is contained in:
parent
8768d55b48
commit
cc795bae19
@ -1,4 +1,4 @@
|
|||||||
// Tanabata file manager lib
|
// Tanabata lib
|
||||||
// By Masahiko AMANO aka H1K0
|
// By Masahiko AMANO aka H1K0
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
@ -43,13 +43,13 @@ int tanabata_dump(Tanabata *tanabata, const char *path);
|
|||||||
int tanabata_sasa_add(Tanabata *tanabata, const char *path);
|
int tanabata_sasa_add(Tanabata *tanabata, const char *path);
|
||||||
|
|
||||||
// Remove sasa by ID
|
// Remove sasa by ID
|
||||||
int tanabata_sasa_rem_by_id(Tanabata *tanabata, uint64_t sasa_id);
|
int tanabata_sasa_rem(Tanabata *tanabata, uint64_t sasa_id);
|
||||||
|
|
||||||
// Update sasa file path
|
// Update sasa file path
|
||||||
int tanabata_sasa_upd(Tanabata *tanabata, uint64_t sasa_id, const char *path);
|
int tanabata_sasa_upd(Tanabata *tanabata, uint64_t sasa_id, const char *path);
|
||||||
|
|
||||||
// Get sasa by ID
|
// Get sasa by ID
|
||||||
Sasa tanabata_sasa_get_by_id(Tanabata *tanabata, uint64_t sasa_id);
|
Sasa tanabata_sasa_get(Tanabata *tanabata, uint64_t sasa_id);
|
||||||
|
|
||||||
// ==================== TANZAKU SECTION ==================== //
|
// ==================== TANZAKU SECTION ==================== //
|
||||||
|
|
||||||
@ -57,13 +57,13 @@ Sasa tanabata_sasa_get_by_id(Tanabata *tanabata, uint64_t sasa_id);
|
|||||||
int tanabata_tanzaku_add(Tanabata *tanabata, const char *name, const char *description);
|
int tanabata_tanzaku_add(Tanabata *tanabata, const char *name, const char *description);
|
||||||
|
|
||||||
// Remove tanzaku by ID
|
// Remove tanzaku by ID
|
||||||
int tanabata_tanzaku_rem_by_id(Tanabata *tanabata, uint64_t tanzaku_id);
|
int tanabata_tanzaku_rem(Tanabata *tanabata, uint64_t tanzaku_id);
|
||||||
|
|
||||||
// Update tanzaku name and description
|
// Update tanzaku name and description
|
||||||
int tanabata_tanzaku_upd(Tanabata *tanabata, uint64_t tanzaku_id, const char *name, const char *description);
|
int tanabata_tanzaku_upd(Tanabata *tanabata, uint64_t tanzaku_id, const char *name, const char *description);
|
||||||
|
|
||||||
// Get tanzaku by ID
|
// Get tanzaku by ID
|
||||||
Tanzaku tanabata_tanzaku_get_by_id(Tanabata *tanabata, uint64_t tanzaku_id);
|
Tanzaku tanabata_tanzaku_get(Tanabata *tanabata, uint64_t tanzaku_id);
|
||||||
|
|
||||||
// ==================== KAZARI SECTION ==================== //
|
// ==================== KAZARI SECTION ==================== //
|
||||||
|
|
||||||
|
|||||||
@ -33,20 +33,22 @@ int tanabata_free(Tanabata *tanabata) {
|
|||||||
shoppyou_free(&tanabata->shoppyou) != 0) {
|
shoppyou_free(&tanabata->shoppyou) != 0) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
tanabata->sasahyou_mod = 0;
|
||||||
|
tanabata->sappyou_mod = 0;
|
||||||
|
tanabata->shoppyou_mod = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tanabata_weed(Tanabata *tanabata) {
|
int tanabata_weed(Tanabata *tanabata) {
|
||||||
uint64_t hole_cnt = 0;
|
uint64_t hole_cnt = 0, new_id;
|
||||||
uint64_t new_id;
|
|
||||||
Kazari *current_kazari;
|
Kazari *current_kazari;
|
||||||
Sasa *current_sasa = tanabata->sasahyou.database;
|
Sasa *current_sasa = tanabata->sasahyou.database;
|
||||||
for (uint64_t i = 0; i < tanabata->sasahyou.size; i++) {
|
for (uint64_t i = 0; i < tanabata->sasahyou.size; i++, current_sasa++) {
|
||||||
if (current_sasa->id != HOLE_ID) {
|
if (current_sasa->id != HOLE_ID) {
|
||||||
if (hole_cnt > 0) {
|
if (hole_cnt > 0) {
|
||||||
new_id = current_sasa->id - hole_cnt;
|
new_id = current_sasa->id - hole_cnt;
|
||||||
for (current_kazari = tanabata->shoppyou.database + tanabata->shoppyou.size - 1;
|
for (current_kazari = tanabata->shoppyou.database + tanabata->shoppyou.size - 1;
|
||||||
current_kazari >= tanabata->shoppyou.database; current_kazari++) {
|
current_kazari >= tanabata->shoppyou.database; current_kazari--) {
|
||||||
if (current_kazari->sasa_id == current_sasa->id) {
|
if (current_kazari->sasa_id == current_sasa->id) {
|
||||||
current_kazari->sasa_id = new_id;
|
current_kazari->sasa_id = new_id;
|
||||||
}
|
}
|
||||||
@ -58,23 +60,24 @@ int tanabata_weed(Tanabata *tanabata) {
|
|||||||
kazari_rem_by_sasa(&tanabata->shoppyou, current_sasa->id);
|
kazari_rem_by_sasa(&tanabata->shoppyou, current_sasa->id);
|
||||||
hole_cnt++;
|
hole_cnt++;
|
||||||
}
|
}
|
||||||
current_sasa++;
|
|
||||||
}
|
}
|
||||||
if (hole_cnt > 0) {
|
if (hole_cnt > 0) {
|
||||||
tanabata->sasahyou.size -= hole_cnt;
|
tanabata->sasahyou.size -= hole_cnt;
|
||||||
tanabata->sasahyou.hole_cnt = 0;
|
tanabata->sasahyou.hole_cnt = 0;
|
||||||
free(tanabata->sasahyou.holes);
|
free(tanabata->sasahyou.holes);
|
||||||
tanabata->sasahyou.database = realloc(tanabata->sasahyou.database, tanabata->sasahyou.size * sizeof(Sasa));
|
tanabata->sasahyou.holes = NULL;
|
||||||
|
tanabata->sasahyou.database = reallocarray(tanabata->sasahyou.database, tanabata->sasahyou.size,
|
||||||
|
sizeof(Sasa));
|
||||||
tanabata->sasahyou.modified_ts = time(NULL);
|
tanabata->sasahyou.modified_ts = time(NULL);
|
||||||
}
|
}
|
||||||
hole_cnt = 0;
|
hole_cnt = 0;
|
||||||
Tanzaku *current_tanzaku = tanabata->sappyou.database;
|
Tanzaku *current_tanzaku = tanabata->sappyou.database;
|
||||||
for (uint64_t i = 0; i < tanabata->sappyou.size; i++) {
|
for (uint64_t i = 0; i < tanabata->sappyou.size; i++, current_tanzaku++) {
|
||||||
if (current_tanzaku->id != HOLE_ID) {
|
if (current_tanzaku->id != HOLE_ID) {
|
||||||
if (hole_cnt > 0) {
|
if (hole_cnt > 0) {
|
||||||
new_id = current_tanzaku->id - hole_cnt;
|
new_id = current_tanzaku->id - hole_cnt;
|
||||||
for (current_kazari = tanabata->shoppyou.database + tanabata->shoppyou.size - 1;
|
for (current_kazari = tanabata->shoppyou.database + tanabata->shoppyou.size - 1;
|
||||||
current_kazari >= tanabata->shoppyou.database; current_kazari++) {
|
current_kazari >= tanabata->shoppyou.database; current_kazari--) {
|
||||||
if (current_kazari->tanzaku_id == current_tanzaku->id) {
|
if (current_kazari->tanzaku_id == current_tanzaku->id) {
|
||||||
current_kazari->tanzaku_id = new_id;
|
current_kazari->tanzaku_id = new_id;
|
||||||
}
|
}
|
||||||
@ -85,18 +88,19 @@ int tanabata_weed(Tanabata *tanabata) {
|
|||||||
hole_cnt++;
|
hole_cnt++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
current_tanzaku++;
|
|
||||||
}
|
}
|
||||||
if (hole_cnt > 0) {
|
if (hole_cnt > 0) {
|
||||||
tanabata->sappyou.size -= tanabata->sappyou.hole_cnt;
|
tanabata->sappyou.size -= tanabata->sappyou.hole_cnt;
|
||||||
tanabata->sappyou.hole_cnt = 0;
|
tanabata->sappyou.hole_cnt = 0;
|
||||||
free(tanabata->sappyou.holes);
|
free(tanabata->sappyou.holes);
|
||||||
tanabata->sappyou.database = realloc(tanabata->sappyou.database, tanabata->sappyou.size * sizeof(Tanzaku));
|
tanabata->sappyou.holes = NULL;
|
||||||
|
tanabata->sappyou.database = reallocarray(tanabata->sappyou.database, tanabata->sappyou.size,
|
||||||
|
sizeof(Tanzaku));
|
||||||
tanabata->sappyou.modified_ts = time(NULL);
|
tanabata->sappyou.modified_ts = time(NULL);
|
||||||
}
|
}
|
||||||
hole_cnt = 0;
|
hole_cnt = 0;
|
||||||
current_kazari = tanabata->shoppyou.database;
|
current_kazari = tanabata->shoppyou.database;
|
||||||
for (uint64_t i = 0; i < tanabata->shoppyou.size; i++) {
|
for (uint64_t i = 0; i < tanabata->shoppyou.size; i++, current_kazari++) {
|
||||||
if (current_kazari->sasa_id != HOLE_ID && current_kazari->tanzaku_id != HOLE_ID &&
|
if (current_kazari->sasa_id != HOLE_ID && current_kazari->tanzaku_id != HOLE_ID &&
|
||||||
current_kazari->sasa_id < tanabata->sasahyou.size &&
|
current_kazari->sasa_id < tanabata->sasahyou.size &&
|
||||||
current_kazari->tanzaku_id < tanabata->sappyou.size) {
|
current_kazari->tanzaku_id < tanabata->sappyou.size) {
|
||||||
@ -106,22 +110,23 @@ int tanabata_weed(Tanabata *tanabata) {
|
|||||||
} else {
|
} else {
|
||||||
hole_cnt++;
|
hole_cnt++;
|
||||||
}
|
}
|
||||||
current_kazari++;
|
|
||||||
}
|
}
|
||||||
if (hole_cnt > 0) {
|
if (hole_cnt > 0) {
|
||||||
tanabata->shoppyou.size -= tanabata->shoppyou.hole_cnt;
|
tanabata->shoppyou.size -= tanabata->shoppyou.hole_cnt;
|
||||||
tanabata->shoppyou.hole_cnt = 0;
|
tanabata->shoppyou.hole_cnt = 0;
|
||||||
free(tanabata->shoppyou.holes);
|
free(tanabata->shoppyou.holes);
|
||||||
tanabata->shoppyou.database = realloc(tanabata->shoppyou.database, tanabata->shoppyou.size * sizeof(Kazari));
|
tanabata->shoppyou.holes = NULL;
|
||||||
|
tanabata->shoppyou.database = reallocarray(tanabata->shoppyou.database, tanabata->shoppyou.size,
|
||||||
|
sizeof(Kazari));
|
||||||
tanabata->shoppyou.modified_ts = time(NULL);
|
tanabata->shoppyou.modified_ts = time(NULL);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tanabata_load(Tanabata *tanabata) {
|
int tanabata_load(Tanabata *tanabata) {
|
||||||
if (sasahyou_load(&tanabata->sasahyou) != 0 ||
|
if (tanabata->sasahyou_mod != tanabata->sasahyou.modified_ts && sasahyou_load(&tanabata->sasahyou) != 0 ||
|
||||||
sappyou_load(&tanabata->sappyou) != 0 ||
|
tanabata->sappyou_mod != tanabata->sappyou.modified_ts && sappyou_load(&tanabata->sappyou) != 0 ||
|
||||||
shoppyou_load(&tanabata->shoppyou) != 0) {
|
tanabata->shoppyou_mod != tanabata->shoppyou.modified_ts && shoppyou_load(&tanabata->shoppyou) != 0) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
tanabata->sasahyou_mod = tanabata->sasahyou.modified_ts;
|
tanabata->sasahyou_mod = tanabata->sasahyou.modified_ts;
|
||||||
@ -150,17 +155,16 @@ int tanabata_open(Tanabata *tanabata, const char *path) {
|
|||||||
if (stat(path, &st) != 0 || !S_ISDIR(st.st_mode)) {
|
if (stat(path, &st) != 0 || !S_ISDIR(st.st_mode)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
char *file_path = malloc(strlen(path) + 10);
|
size_t pathlen = strlen(path);
|
||||||
|
char *file_path = malloc(pathlen + 10);
|
||||||
strcpy(file_path, path);
|
strcpy(file_path, path);
|
||||||
if (sasahyou_open(&tanabata->sasahyou, strcat(file_path, "/sasahyou")) != 0) {
|
if (tanabata->sasahyou_mod != tanabata->sasahyou.modified_ts &&
|
||||||
return 1;
|
sasahyou_open(&tanabata->sasahyou, strcpy(file_path + pathlen, "/sasahyou")) != 0 ||
|
||||||
}
|
tanabata->sappyou_mod != tanabata->sappyou.modified_ts &&
|
||||||
strcpy(file_path, path);
|
sappyou_open(&tanabata->sappyou, strcpy(file_path + pathlen, "/sappyou")) != 0 ||
|
||||||
if (sappyou_open(&tanabata->sappyou, strcat(file_path, "/sappyou")) != 0) {
|
tanabata->shoppyou_mod != tanabata->shoppyou.modified_ts &&
|
||||||
return 1;
|
shoppyou_open(&tanabata->shoppyou, strcpy(file_path + pathlen, "/shoppyou")) != 0) {
|
||||||
}
|
free(file_path);
|
||||||
strcpy(file_path, path);
|
|
||||||
if (shoppyou_open(&tanabata->shoppyou, strcat(file_path, "/shoppyou")) != 0) {
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
free(file_path);
|
free(file_path);
|
||||||
@ -178,28 +182,21 @@ int tanabata_dump(Tanabata *tanabata, const char *path) {
|
|||||||
if (stat(path, &st) != 0 || !S_ISDIR(st.st_mode)) {
|
if (stat(path, &st) != 0 || !S_ISDIR(st.st_mode)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
char *file_path = malloc(strlen(path) + 10);
|
size_t pathlen = strlen(path);
|
||||||
if (tanabata->sasahyou_mod != tanabata->sasahyou.modified_ts) {
|
char *file_path = malloc(pathlen + 10);
|
||||||
strcpy(file_path, path);
|
strcpy(file_path, path);
|
||||||
if (sasahyou_dump(&tanabata->sasahyou, strcat(file_path, "/sasahyou")) != 0) {
|
if (tanabata->sasahyou_mod != tanabata->sasahyou.modified_ts &&
|
||||||
return 1;
|
sasahyou_dump(&tanabata->sasahyou, strcpy(file_path + pathlen, "/sasahyou")) != 0 ||
|
||||||
}
|
tanabata->sappyou_mod != tanabata->sappyou.modified_ts &&
|
||||||
tanabata->sasahyou_mod = tanabata->sasahyou.modified_ts;
|
sappyou_dump(&tanabata->sappyou, strcpy(file_path + pathlen, "/sappyou")) != 0 ||
|
||||||
}
|
tanabata->shoppyou_mod != tanabata->shoppyou.modified_ts &&
|
||||||
if (tanabata->sappyou_mod != tanabata->sappyou.modified_ts) {
|
shoppyou_dump(&tanabata->shoppyou, strcpy(file_path + pathlen, "/shoppyou")) != 0) {
|
||||||
strcpy(file_path, path);
|
free(file_path);
|
||||||
if (sappyou_dump(&tanabata->sappyou, strcat(file_path, "/sappyou")) != 0) {
|
return 1;
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
tanabata->sappyou_mod = tanabata->sappyou.modified_ts;
|
|
||||||
}
|
|
||||||
if (tanabata->shoppyou_mod != tanabata->shoppyou.modified_ts) {
|
|
||||||
strcpy(file_path, path);
|
|
||||||
if (shoppyou_dump(&tanabata->shoppyou, strcat(file_path, "/shoppyou")) != 0) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
tanabata->shoppyou_mod = tanabata->shoppyou.modified_ts;
|
|
||||||
}
|
}
|
||||||
free(file_path);
|
free(file_path);
|
||||||
|
tanabata->sasahyou_mod = tanabata->sasahyou.modified_ts;
|
||||||
|
tanabata->sappyou_mod = tanabata->sappyou.modified_ts;
|
||||||
|
tanabata->shoppyou_mod = tanabata->shoppyou.modified_ts;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,26 +8,17 @@ int tanabata_kazari_add(Tanabata *tanabata, uint64_t sasa_id, uint64_t tanzaku_i
|
|||||||
tanabata->shoppyou.size == -1 && tanabata->shoppyou.hole_cnt == 0) {
|
tanabata->shoppyou.size == -1 && tanabata->shoppyou.hole_cnt == 0) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
Kazari *current_kazari = tanabata->shoppyou.database;
|
Kazari *current_kazari = tanabata->shoppyou.database + tanabata->shoppyou.size - 1;
|
||||||
for (uint64_t i = 0; i < tanabata->shoppyou.size; i++) {
|
for (; current_kazari >= tanabata->shoppyou.database; current_kazari--) {
|
||||||
if (current_kazari->sasa_id == sasa_id && current_kazari->tanzaku_id == tanzaku_id) {
|
if (current_kazari->sasa_id == sasa_id && current_kazari->tanzaku_id == tanzaku_id) {
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
current_kazari++;
|
|
||||||
}
|
}
|
||||||
if (kazari_add(&tanabata->shoppyou, sasa_id, tanzaku_id) == 0) {
|
return kazari_add(&tanabata->shoppyou, sasa_id, tanzaku_id);
|
||||||
tanabata->shoppyou_mod = 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int tanabata_kazari_rem(Tanabata *tanabata, uint64_t sasa_id, uint64_t tanzaku_id) {
|
int tanabata_kazari_rem(Tanabata *tanabata, uint64_t sasa_id, uint64_t tanzaku_id) {
|
||||||
if (kazari_rem(&tanabata->shoppyou, sasa_id, tanzaku_id) == 0) {
|
return kazari_rem(&tanabata->shoppyou, sasa_id, tanzaku_id);
|
||||||
tanabata->shoppyou_mod = 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Tanzaku *tanabata_tanzaku_get_by_sasa(Tanabata *tanabata, uint64_t sasa_id) {
|
Tanzaku *tanabata_tanzaku_get_by_sasa(Tanabata *tanabata, uint64_t sasa_id) {
|
||||||
@ -36,17 +27,18 @@ Tanzaku *tanabata_tanzaku_get_by_sasa(Tanabata *tanabata, uint64_t sasa_id) {
|
|||||||
}
|
}
|
||||||
Tanzaku *tanzaku_list = NULL;
|
Tanzaku *tanzaku_list = NULL;
|
||||||
uint64_t tanzaku_count = 0;
|
uint64_t tanzaku_count = 0;
|
||||||
|
Tanzaku temp;
|
||||||
Kazari *current_kazari = tanabata->shoppyou.database;
|
Kazari *current_kazari = tanabata->shoppyou.database;
|
||||||
for (uint64_t i = 0; i < tanabata->shoppyou.size; i++) {
|
for (uint64_t i = 0; i < tanabata->shoppyou.size; i++, current_kazari++) {
|
||||||
if (current_kazari->sasa_id == sasa_id && current_kazari->tanzaku_id != HOLE_ID) {
|
if (current_kazari->sasa_id == sasa_id &&
|
||||||
|
(temp = tanabata_tanzaku_get(tanabata, current_kazari->tanzaku_id)).id != HOLE_ID) {
|
||||||
tanzaku_count++;
|
tanzaku_count++;
|
||||||
tanzaku_list = realloc(tanzaku_list, tanzaku_count * sizeof(Tanzaku));
|
tanzaku_list = reallocarray(tanzaku_list, tanzaku_count, sizeof(Tanzaku));
|
||||||
tanzaku_list[tanzaku_count - 1] = tanabata_tanzaku_get_by_id(tanabata, current_kazari->tanzaku_id);
|
tanzaku_list[tanzaku_count - 1] = temp;
|
||||||
}
|
}
|
||||||
current_kazari++;
|
|
||||||
}
|
}
|
||||||
if (tanzaku_list != NULL) {
|
if (tanzaku_list != NULL) {
|
||||||
tanzaku_list = realloc(tanzaku_list, (tanzaku_count + 1) * sizeof(Tanzaku));
|
tanzaku_list = reallocarray(tanzaku_list, (tanzaku_count + 1), sizeof(Tanzaku));
|
||||||
tanzaku_list[tanzaku_count] = HOLE_TANZAKU;
|
tanzaku_list[tanzaku_count] = HOLE_TANZAKU;
|
||||||
}
|
}
|
||||||
return tanzaku_list;
|
return tanzaku_list;
|
||||||
@ -58,17 +50,18 @@ Sasa *tanabata_sasa_get_by_tanzaku(Tanabata *tanabata, uint64_t tanzaku_id) {
|
|||||||
}
|
}
|
||||||
Sasa *sasa_list = NULL;
|
Sasa *sasa_list = NULL;
|
||||||
uint64_t sasa_count = 0;
|
uint64_t sasa_count = 0;
|
||||||
|
Sasa temp;
|
||||||
Kazari *current_kazari = tanabata->shoppyou.database;
|
Kazari *current_kazari = tanabata->shoppyou.database;
|
||||||
for (uint64_t i = 0; i < tanabata->shoppyou.size; i++) {
|
for (uint64_t i = 0; i < tanabata->shoppyou.size; i++, current_kazari++) {
|
||||||
if (current_kazari->tanzaku_id == tanzaku_id && current_kazari->sasa_id != HOLE_ID) {
|
if (current_kazari->tanzaku_id == tanzaku_id &&
|
||||||
|
(temp = tanabata_sasa_get(tanabata, current_kazari->sasa_id)).id != HOLE_ID) {
|
||||||
sasa_count++;
|
sasa_count++;
|
||||||
sasa_list = realloc(sasa_list, sasa_count * sizeof(Sasa));
|
sasa_list = reallocarray(sasa_list, sasa_count, sizeof(Sasa));
|
||||||
sasa_list[sasa_count - 1] = tanabata_sasa_get_by_id(tanabata, current_kazari->sasa_id);
|
sasa_list[sasa_count - 1] = temp;
|
||||||
}
|
}
|
||||||
current_kazari++;
|
|
||||||
}
|
}
|
||||||
if (sasa_list != NULL) {
|
if (sasa_list != NULL) {
|
||||||
sasa_list = realloc(sasa_list, (sasa_count + 1) * sizeof(Sasa));
|
sasa_list = reallocarray(sasa_list, (sasa_count + 1), sizeof(Sasa));
|
||||||
sasa_list[sasa_count] = HOLE_SASA;
|
sasa_list[sasa_count] = HOLE_SASA;
|
||||||
}
|
}
|
||||||
return sasa_list;
|
return sasa_list;
|
||||||
|
|||||||
@ -1,27 +1,11 @@
|
|||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "../core/core_func.h"
|
#include "../core/core_func.h"
|
||||||
#include "../../include/tanabata.h"
|
#include "../../include/tanabata.h"
|
||||||
|
|
||||||
int tanabata_sasa_add(Tanabata *tanabata, const char *path) {
|
int tanabata_sasa_add(Tanabata *tanabata, const char *path) {
|
||||||
if (path == NULL || tanabata->sasahyou.size == -1 && tanabata->sasahyou.hole_cnt == 0) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
Sasa *current_sasa = tanabata->sasahyou.database;
|
|
||||||
for (uint64_t i = 0; i < tanabata->sasahyou.size; i++) {
|
|
||||||
if (current_sasa->id != HOLE_ID && strcmp(current_sasa->path, path) == 0) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
current_sasa++;
|
|
||||||
}
|
|
||||||
return sasa_add(&tanabata->sasahyou, path);
|
return sasa_add(&tanabata->sasahyou, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
int tanabata_sasa_rem_by_id(Tanabata *tanabata, uint64_t sasa_id) {
|
int tanabata_sasa_rem(Tanabata *tanabata, uint64_t sasa_id) {
|
||||||
if (sasa_id == HOLE_ID || sasa_id >= tanabata->sasahyou.size) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (sasa_rem(&tanabata->sasahyou, sasa_id) == 0 &&
|
if (sasa_rem(&tanabata->sasahyou, sasa_id) == 0 &&
|
||||||
kazari_rem_by_sasa(&tanabata->shoppyou, sasa_id) == 0) {
|
kazari_rem_by_sasa(&tanabata->shoppyou, sasa_id) == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
@ -33,7 +17,7 @@ int tanabata_sasa_upd(Tanabata *tanabata, uint64_t sasa_id, const char *path) {
|
|||||||
return sasa_upd(&tanabata->sasahyou, sasa_id, path);
|
return sasa_upd(&tanabata->sasahyou, sasa_id, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
Sasa tanabata_sasa_get_by_id(Tanabata *tanabata, uint64_t sasa_id) {
|
Sasa tanabata_sasa_get(Tanabata *tanabata, uint64_t sasa_id) {
|
||||||
if (sasa_id == HOLE_ID || sasa_id >= tanabata->sasahyou.size) {
|
if (sasa_id == HOLE_ID || sasa_id >= tanabata->sasahyou.size) {
|
||||||
return HOLE_SASA;
|
return HOLE_SASA;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,26 +1,11 @@
|
|||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "../core/core_func.h"
|
#include "../core/core_func.h"
|
||||||
#include "../../include/tanabata.h"
|
#include "../../include/tanabata.h"
|
||||||
|
|
||||||
int tanabata_tanzaku_add(Tanabata *tanabata, const char *name, const char *description) {
|
int tanabata_tanzaku_add(Tanabata *tanabata, const char *name, const char *description) {
|
||||||
if (name == NULL || description == NULL || tanabata->sappyou.size == -1 && tanabata->sappyou.hole_cnt == 0) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
Tanzaku *current_tanzaku = tanabata->sappyou.database;
|
|
||||||
for (uint64_t i = 0; i < tanabata->sappyou.size; i++) {
|
|
||||||
if (current_tanzaku->id != HOLE_ID && strcmp(current_tanzaku->name, name) == 0) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
current_tanzaku++;
|
|
||||||
}
|
|
||||||
return tanzaku_add(&tanabata->sappyou, name, description);
|
return tanzaku_add(&tanabata->sappyou, name, description);
|
||||||
}
|
}
|
||||||
|
|
||||||
int tanabata_tanzaku_rem_by_id(Tanabata *tanabata, uint64_t tanzaku_id) {
|
int tanabata_tanzaku_rem(Tanabata *tanabata, uint64_t tanzaku_id) {
|
||||||
if (tanzaku_id == HOLE_ID || tanzaku_id >= tanabata->sappyou.size || tanzaku_id == 0) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (tanzaku_rem(&tanabata->sappyou, tanzaku_id) == 0 &&
|
if (tanzaku_rem(&tanabata->sappyou, tanzaku_id) == 0 &&
|
||||||
kazari_rem_by_tanzaku(&tanabata->shoppyou, tanzaku_id) == 0) {
|
kazari_rem_by_tanzaku(&tanabata->shoppyou, tanzaku_id) == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
@ -32,7 +17,7 @@ int tanabata_tanzaku_upd(Tanabata *tanabata, uint64_t tanzaku_id, const char *na
|
|||||||
return tanzaku_upd(&tanabata->sappyou, tanzaku_id, name, description);
|
return tanzaku_upd(&tanabata->sappyou, tanzaku_id, name, description);
|
||||||
}
|
}
|
||||||
|
|
||||||
Tanzaku tanabata_tanzaku_get_by_id(Tanabata *tanabata, uint64_t tanzaku_id) {
|
Tanzaku tanabata_tanzaku_get(Tanabata *tanabata, uint64_t tanzaku_id) {
|
||||||
if (tanzaku_id == HOLE_ID || tanzaku_id >= tanabata->sappyou.size) {
|
if (tanzaku_id == HOLE_ID || tanzaku_id >= tanabata->sappyou.size) {
|
||||||
return HOLE_TANZAKU;
|
return HOLE_TANZAKU;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user