From 97dc6c78ce8ac47a61e62bf666824284714a0d8e Mon Sep 17 00:00:00 2001 From: David Phillips Date: Mon, 5 Sep 2016 20:12:50 +1200 Subject: Migrate to single source file --- Makefile | 1 - cue-bin-split.c | 84 +++++++++++++++++++++++++++++++++++++-------------------- cue-bin-split.h | 29 -------------------- misc.c | 82 ------------------------------------------------------- misc.h | 36 ------------------------- 5 files changed, 55 insertions(+), 177 deletions(-) delete mode 100644 cue-bin-split.h delete mode 100644 misc.c delete mode 100644 misc.h diff --git a/Makefile b/Makefile index fe35df0..f1cda51 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,5 @@ OBJECTS = \ cue-bin-split.o \ - misc.o CFLAGS += -Wall -Werror diff --git a/cue-bin-split.c b/cue-bin-split.c index 5bd4f3d..8e648fa 100644 --- a/cue-bin-split.c +++ b/cue-bin-split.c @@ -1,37 +1,63 @@ -/* - * cue-bin-split - Split raw PCM files on time boundaries - * Copyright (c) 2015 David Phillips - * All rights reserved - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - #include #include #include #include -#include "cue-bin-split.h" -#include "misc.h" +#define MIN(a, b) ((a < b)? a : b) +#define SEC_FROM_TS(mm, ss, ff) (mm*60 + ss + ((double)ff)/FRAMES_PER_SEC) +#define FRAMES_PER_SEC 75 +#define BUFFER_SIZE 1024*1024 /* Meh, good enough */ + +/* Grabs a 'mm:ss:ff' stamp from stdin */ +double get_sec() +{ + int mm = 0; + int ss = 0; + int ff = 0; + int items = fscanf(stdin, "%d:%d:%d\n", &mm, &ss, &ff); + + /* EOF means this is the last track; return invalid time */ + if (items == EOF) + return -1; + + if (items != 3) + { + /* FIXME doesn't explicitly close fin from cue-bin-split.c upon exit() */ + fprintf(stderr, "Timestamp malformed\n"); + exit(-1); + } + return SEC_FROM_TS(mm, ss, ff); +} + +/* Constructs an output filename in the specified buffer based on the given format and track number + * Main purpose is to catch buffer overflow with snprintf + */ +int construct_out_name(char *buffer, size_t buffer_size, char* format, unsigned int track) +{ + if (snprintf(buffer, buffer_size, format, track) >= buffer_size - 1) + { + fprintf(stderr, "Filename too large for buffer (max %zd)\n", buffer_size); + return -1; + } + return 0; +} + +/* Displays the help/syntax message and dies + * Does what it says on the tin + */ +void die_help() +{ + fprintf(stderr, + "\n" + "Options: \n" + " -r bitrate_Hz\n" + " -c channel_count\n" + " -i input_file\n" + " -s size of a single channel's sample (bytes)\n" + " -f name_format (%%d and co are replaced with track number)\n" + ); + exit(1); +} void args_collect(int *argc, char ***argv, int *rate, int *channels, int *sample_size, char **in_fname, char **format) { diff --git a/cue-bin-split.h b/cue-bin-split.h deleted file mode 100644 index e689bbf..0000000 --- a/cue-bin-split.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Part of cue-bin-split - Splits raw PCM files on time boundaries - * Copyright (c) 2015 David Phillips - * All rights reserved - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#define FRAMES_PER_SEC 75 -#define BUFFER_SIZE 1024*1024 /* Meh, good enough */ diff --git a/misc.c b/misc.c deleted file mode 100644 index 1515a7d..0000000 --- a/misc.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Part of cue-bin-split - Splits raw PCM files on time boundaries - * Copyright (c) 2015 David Phillips - * All rights reserved - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include - -#include "misc.h" - -/* Grabs a 'mm:ss:ff' stamp from stdin */ -double get_sec() -{ - int mm = 0; - int ss = 0; - int ff = 0; - int items = fscanf(stdin, "%d:%d:%d\n", &mm, &ss, &ff); - - /* EOF means this is the last track; return invalid time */ - if (items == EOF) - return -1; - - if (items != 3) - { - /* FIXME doesn't explicitly close fin from cue-bin-split.c upon exit() */ - fprintf(stderr, "Timestamp malformed\n"); - exit(-1); - } - return SEC_FROM_TS(mm, ss, ff); -} - -/* Constructs an output filename in the specified buffer based on the given format and track number - * Main purpose is to catch buffer overflow with snprintf - */ -int construct_out_name(char *buffer, size_t buffer_size, char* format, unsigned int track) -{ - if (snprintf(buffer, buffer_size, format, track) >= buffer_size - 1) - { - fprintf(stderr, "Filename too large for buffer (max %zd)\n", buffer_size); - return -1; - } - return 0; -} - -/* Displays the help/syntax message and dies - * Does what it says on the tin - */ -void die_help() -{ - fprintf(stderr, - "\n" - "Options: \n" - " -r bitrate_Hz\n" - " -c channel_count\n" - " -i input_file\n" - " -s size of a single channel's sample (bytes)\n" - " -f name_format (%%d and co are replaced with track number)\n" - ); - exit(1); -} diff --git a/misc.h b/misc.h deleted file mode 100644 index fb4a093..0000000 --- a/misc.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Part of cue-bin-split - Splits raw PCM files on time boundaries - * Copyright (c) 2015 David Phillips - * All rights reserved - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include "cue-bin-split.h" - -/* MIN is surely defined in a standard header */ -#define MIN(a, b) ((a < b)? a : b) -#define SEC_FROM_TS(mm, ss, ff) (mm*60 + ss + ((double)ff)/FRAMES_PER_SEC) - -double get_sec(); -int construct_out_name(char *buffer, size_t buffer_size, char* format, unsigned int track); -void die_help(); -- cgit v1.1