Exemplo n.º 1
0
void database_getfile(struct request *r)
{
	struct file_entry *entry = 0;
	char *err = 0;
	unsigned long long id = strtoull(r->filename, &err, 16);
	if ((!id && errno == EINVAL) || (err && *err)){
		errno = 0;
		r->data = 0;
		return;
	}

	struct lnode *n = database_get(id);

	if (n){
		entry = n->data;
		database_read(entry);

		// For some reason we couldn't load the file from disk.
		// Unlink node from list and return.
		if (!entry->data){
			wkb_log(LOG_DB, "File %llx not found on disk, unlinking", entry->id);
			r->data = 0;
			database_pop(n);
			return;
		}

		r->data = entry->data;
		r->len = entry->len;
		r->id = id;
		strcpy(r->ext, entry->ext);
		return;
	}

	r->data = 0;
}
Exemplo n.º 2
0
int database_rm(char *name)
{
	unsigned long long id = strtoull(name, 0, 16);
	struct lnode *node = database_get(id);

	if (!node)
		return 1;

	database_uncache(node->data);
	database_pop(node);

	char buf[512];
	snprintf(buf, 512, DATA_DIR "/database/%llx", id);
	remove(buf);

	wkb_log(LOG_DB, "File %llx removed", id);

	return 0;
}
Exemplo n.º 3
0
int database_rm(char *name)
{
	unsigned long long id = strtoull(name, 0, 16);
	struct lnode *node = database_get(id);

	if (!node)
		return 1;

	database_pop(node);
	cache_rm(id);

	char path[512];
	snprintf(path, 512, DATA_DIR "/database/%llx", id);
	remove(path);

	char strtime[512];
	time_t t = time(0);
	strftime(strtime, 512, TIME_FORMAT, localtime(&t));
	printf("\033[1m%s, (database):\033[m File %llx removed\n", strtime, id);

	return 0;
}