#include "link.h" #include #include #include #include #include char* link_strdup(const char* str) { size_t len = strlen(str); char* val = calloc(len + 1, sizeof(char)); strncpy(val, str, len); return val; } FILE* open_output_file(const char* filename) { FILE* fp = fopen(filename, "wb"); if (!fp) { fprintf(stderr, "error: could not open output file '%s' for writing: %s\n", filename, strerror(errno)); return NULL; } return fp; } FILE* open_input_file(const char* filename) { FILE* fp = fopen(filename, "rb"); if (!fp) { fprintf(stderr, "error: could not open input file '%s' for reading: %s\n", filename, strerror(errno)); return NULL; } return fp; } const char* file_iter_next(FileIter* iter) { while (iter->files) { const char* arg = iter->argv[iter->argc]; iter->argc += 1; if (strcmp(arg, "-o") == 0) { iter->argc += 1; continue; } else if (strcmp(arg, "-p") == 0) { iter->argc += 1; continue; } iter->files -= 1; return arg; } return NULL; }