C-c handling + 1 todo

This commit is contained in:
x3 2022-01-15 00:20:16 +01:00
parent f315b481ac
commit 073340f0b8
Signed by: x3
GPG Key ID: 7E9961E8AD0E240E
3 changed files with 17 additions and 6 deletions

View File

@ -40,4 +40,5 @@ make
- After some time passes between now and cache moddate and it's not watched, then query and update it
- Update cache entry is modify is used
- Pretty hashing with color and progress bars and the other fancy stuff
- Keep track of files not in AniDB. Maybe with a NULL lid?
- Write -h page, and maybe a man page too

View File

@ -446,7 +446,7 @@ static void api_ratelimit_sent()
clock_gettime(API_CLOCK, &api_last_packet);
}
static void api_ratelimit()
static enum error api_ratelimit()
{
struct timespec ts = {0};
uint64_t msdiff, mswait;
@ -457,7 +457,7 @@ static void api_ratelimit()
if (api_packet_count <= API_FREESEND) {
uio_debug("This packet is for free! Yay :D (%d/%d)",
api_packet_count, API_FREESEND);
return;
return NOERR;
}
clock_gettime(API_CLOCK, &ts);
@ -465,7 +465,7 @@ static void api_ratelimit()
uio_debug("Time since last packet: %ld ms", msdiff);
if (msdiff >= msrate)
return; /* No ratelimiting is needed */
return NOERR; /* No ratelimiting is needed */
/* Need ratelimit, so do it here for now */
mswait = msrate - msdiff;
@ -473,11 +473,15 @@ static void api_ratelimit()
MS_TO_TIMESPEC_L(ts, mswait);
if (nanosleep(&ts, NULL) == -1) {
if (errno == EINTR)
if (errno == EINTR) {
uio_error("Nanosleep got interrupted");
else
return ERR_SHOULD_EXIT;
} else {
uio_error("Nanosleep failed");
}
}
return NOERR;
}
/*
@ -489,7 +493,8 @@ static ssize_t api_send(char *buffer, size_t data_len, size_t buf_size)
ssize_t read_len;
int en;
api_ratelimit();
if (api_ratelimit() == ERR_SHOULD_EXIT)
return -2;
uio_debug("{Api}: Sending: %.*s", (int)data_len, buffer);
if (api_encryption)
data_len = api_encrypt(buffer, data_len);

View File

@ -103,6 +103,11 @@ static enum error cmd_add_apisend(const char *path, const uint8_t *hash,
free(x->other);
return NOERR;
}
if (r.code == APICODE_NO_SUCH_FILE) {
uio_error("This file does not exists in the AniDB databse: %s",
path);
return NOERR;
}
if (r.code != APICODE_MYLIST_ENTRY_ADDED) {
uio_error("Mylistadd failure: %hu", r.code);
return ERR_CMD_FAILED;