Files
HDB/src/hdb.c

111 lines
2.8 KiB
C

#define _POSIX_C_SOURCE 200112L /* needed for struct addrinfo */
#include "db.h"
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <errno.h>
int main(int argc, char **argv) {
int ret;
if (argc < 2) {
fprintf(stderr, "Incorrect amount of arguments\n");
return 1;
}
ret = h_db_open("HDB.db");
if (ret != 0) {
return 1;
}
if (strcmp(argv[1], "add") == 0) {
char *db_row = malloc(strlen(argv[2]) * 2);
memset(db_row, 0, strlen(argv[2]));
if (argc == 3) {
ret = h_db_add(db_row, argv[2]);
if (ret != 0) {
h_db_close();
return 1;
}
} else if (argc == 4) {
ret = h_db_add_custom_name(db_row, argv[2], argv[3]);
if (ret != 0) {
h_db_close();
return 1;
}
} else {
h_db_close();
fprintf(stderr, "Incorrect amount of arguments\n");
return 1;
}
printf("Successfully added to DB\n");
ret = h_download(db_row, config);
free(db_row);
if (ret != 0) {
printf("Failed download\n");
h_db_close();
return 1;
}
printf("Succesfully downladed\n");
} else if (strcmp(argv[1], "download_website") == 0) {
if (argc != 3) {
fprintf(stderr, "Incorrect amount of arguments\n");
h_db_close();
return 1;
}
char *file_name = malloc(10000);
sprintf(file_name, "%s/%s_generated.txt", config.tmp_dir, argv[2]);
FILE *fptr = fopen(file_name, "w+");
if (fptr == NULL) {
fprintf(stderr, "Couldn't open file '%s'\n", file_name);
h_db_close();
return 1;
}
ret = h_db_generate_file(fptr, argv[2]);
fclose(fptr);
if (ret != 0) {
h_db_close();
return 1;
}
fptr = fopen(file_name, "r");
if (fptr == NULL) {
fprintf(stderr, "Couldn't open file '%s'\n", file_name);
h_db_close();
return 1;
}
char *line = malloc(10000);
printf("Ready to download\n");
while(fgets(line, 10000, fptr) != NULL) {
ret = h_download(line, config);
if (ret != 0) {
fclose(fptr);
h_db_close();
return 1;
}
}
free(line);
fclose(fptr);
free(file_name);
} else {
fprintf(stderr, "Invalid argument\n");
h_db_close();
return 1;
}
h_db_close();
return 0;
}