feat(lib): zero tanzaku ID is reserved for the special immutable FAVORITE tag

This commit is contained in:
Masahiko AMANO 2022-12-29 15:22:13 +03:00
parent 3cea0b5fdb
commit 32e73acd73
2 changed files with 10 additions and 3 deletions

View File

@ -11,6 +11,13 @@ int tanabata_init(Tanabata *tanabata) {
shoppyou_init(&tanabata->shoppyou) != 0) { shoppyou_init(&tanabata->shoppyou) != 0) {
return 1; return 1;
} }
tanabata->sappyou.size = 1;
tanabata->sappyou.database = malloc(sizeof(Tanzaku));
tanabata->sappyou.database->id = 0;
tanabata->sappyou.database->created_ts = tanabata->sappyou.created_ts;
tanabata->sappyou.database->modified_ts = tanabata->sappyou.created_ts;
tanabata->sappyou.database->name = "FAVORITE";
tanabata->sappyou.database->description = "Special tanzaku for favorites";
tanabata->sasahyou_mod = 0; tanabata->sasahyou_mod = 0;
tanabata->sappyou_mod = 0; tanabata->sappyou_mod = 0;
tanabata->shoppyou_mod = 0; tanabata->shoppyou_mod = 0;

View File

@ -17,7 +17,7 @@ int tanabata_tanzaku_add(Tanabata *tanabata, const char *name, const char *descr
} }
int tanabata_tanzaku_rem_by_id(Tanabata *tanabata, uint64_t tanzaku_id) { int tanabata_tanzaku_rem_by_id(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 || tanzaku_id == 0) {
return 1; return 1;
} }
if (tanzaku_rem(&tanabata->sappyou, tanzaku_id) == 0 && if (tanzaku_rem(&tanabata->sappyou, tanzaku_id) == 0 &&
@ -28,8 +28,8 @@ int tanabata_tanzaku_rem_by_id(Tanabata *tanabata, uint64_t tanzaku_id) {
} }
int tanabata_tanzaku_rem_by_name(Tanabata *tanabata, const char *name) { int tanabata_tanzaku_rem_by_name(Tanabata *tanabata, const char *name) {
Tanzaku *current_tanzaku = tanabata->sappyou.database; Tanzaku *current_tanzaku = tanabata->sappyou.database + 1;
for (uint64_t i = 0; i < tanabata->sappyou.size; i++) { for (uint64_t i = 1; i < tanabata->sappyou.size; i++) {
if (current_tanzaku->id != HOLE_ID && strcmp(current_tanzaku->name, name) == 0) { if (current_tanzaku->id != HOLE_ID && strcmp(current_tanzaku->name, name) == 0) {
if (tanzaku_rem(&tanabata->sappyou, current_tanzaku->id) == 0 && if (tanzaku_rem(&tanabata->sappyou, current_tanzaku->id) == 0 &&
kazari_rem_by_tanzaku(&tanabata->shoppyou, current_tanzaku->id) == 0) { kazari_rem_by_tanzaku(&tanabata->shoppyou, current_tanzaku->id) == 0) {