vc3/link/common.c
2025-04-17 13:27:20 +02:00

59 lines
1.2 KiB
C

#include "link.h"
#include <errno.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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;
}