47 lines
1.3 KiB
C
47 lines
1.3 KiB
C
#include "channel.h"
|
|
#include <stdio.h>
|
|
#include <stdbool.h>
|
|
|
|
int channel_main(int argc, char* argv[])
|
|
{
|
|
bool running = true;
|
|
FILE *input_file = fopen(argv[2], "rb");
|
|
if (input_file == NULL) {
|
|
fprintf(stderr, "Error opening input file: %s\n", argv[2]);
|
|
return 1;
|
|
}
|
|
FILE *output_file = fopen(argv[3], "wb");
|
|
if (output_file == NULL) {
|
|
fprintf(stderr, "Error opening output file: %s\n", argv[3]);
|
|
fclose(input_file);
|
|
return 1;
|
|
}
|
|
|
|
while (running){
|
|
// Read data
|
|
unsigned char buffer[1024];
|
|
size_t bytes_read = fread(buffer, 1, sizeof(buffer), input_file);
|
|
|
|
if (bytes_read == 0) {
|
|
if (feof(input_file)) {
|
|
running = false; // eof reached
|
|
} else {
|
|
fprintf(stderr, "Error reading from input file\n");
|
|
fclose(input_file);
|
|
fclose(output_file);
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
// Channel data
|
|
unsigned char processed_data[1024];
|
|
size_t processed_size = process_channel(buffer, bytes_read, processed_data);
|
|
|
|
// Write data
|
|
fwrite(processed_data, 1, processed_size, output_file);
|
|
}
|
|
fclose(input_file);
|
|
fclose(output_file);
|
|
return 0;
|
|
}
|