#include <stdio.h>
#include <string.h>

#define KOPIPE_FOLDER "/home/cairnarvon/.kopipe/"

int main (int argc, char** argv) {
    if (argc > 2 && strcmp(argv[1], "-n") == 0) {
        /* Read kopipe from stdin and append to specified file. */
        FILE *fp;

        char folder[80];
        strcpy(folder, KOPIPE_FOLDER);

        fp = fopen(strncat(folder, argv[2], 50), "a");

        char c;
        c = getchar();

        while (c != EOF) {
            fputc(c, fp);
            c = getchar();
        }

        fclose(fp);
        return 0;

    } else if (argc > 2 && strcmp(argv[1], "-d") == 0) {
        /* Delete specified file */
        char cmd[83];
        strcpy(cmd, "rm ");
        strcat(cmd, KOPIPE_FOLDER);

        system(strncat(cmd, argv[2], 50));
        printf("Deleted kopipe %s.\n", argv[2]);

        return 0;

    } else if (argc > 1) {
        /* Try to read specified file, and print it to stdout */
        FILE *fp;

        char folder[80];
        strcpy(folder, KOPIPE_FOLDER);

        fp = fopen(strncat(folder, argv[1], 50), "r");

        if (fp != NULL) {
            char c;
            c = fgetc(fp);

            while (c != EOF) {
                printf("%c", c);
                c = fgetc(fp);
            }

            fclose(fp);
            
            return 0;
        }
    }

    printf("%s%s%s%s%s%s%s%s%s",
           "USAGE:\n",
           argv[0],
           " [name]\n\tDisplay kopipe\n",
           "echo \"[kopipe]\" | ",
           argv[0],
           " -n [name]\n\tCreate new kopipe\n",
           argv[0],
           " -d [name]\n\tDelete existing kopipe\n\n",
           "Current kopipe:\n");

    char lst[100];
    strcpy(lst, "ls ");
    strcat(lst, KOPIPE_FOLDER);
    strcat(lst, " 2>/dev/null || mkdir ");
    strcat(lst, KOPIPE_FOLDER);
    
    system(lst);
    
    return 1;
}