1
/* metaflac - Command-line FLAC metadata editor
2
* Copyright (C) 2001,2002,2003 Josh Coalson
4
* This program is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU General Public License
6
* as published by the Free Software Foundation; either version 2
7
* of the License, or (at your option) any later version.
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
#ifndef metaflac__options_h
20
#define metaflac__options_h
22
#include "FLAC/format.h"
25
/*[JEC] was:#if HAVE_GETOPT_LONG*/
26
/*[JEC] see flac/include/share/getopt.h as to why the change */
29
# include "share/getopt.h"
32
extern struct share__option long_options_[];
36
OP__SHOW_MIN_BLOCKSIZE,
37
OP__SHOW_MAX_BLOCKSIZE,
38
OP__SHOW_MIN_FRAMESIZE,
39
OP__SHOW_MAX_FRAMESIZE,
43
OP__SHOW_TOTAL_SAMPLES,
45
OP__SET_MIN_BLOCKSIZE,
46
OP__SET_MAX_BLOCKSIZE,
47
OP__SET_MIN_FRAMESIZE,
48
OP__SET_MAX_FRAMESIZE,
52
OP__SET_TOTAL_SAMPLES,
57
OP__REMOVE_VC_FIRSTFIELD,
61
OP__IMPORT_CUESHEET_FROM,
62
OP__EXPORT_CUESHEET_TO,
77
ARG__EXCEPT_BLOCK_TYPE,
84
} Argument_StreaminfoMD5;
88
} Argument_StreaminfoUInt32;
92
} Argument_StreaminfoUInt64;
96
} Argument_VcFieldName;
99
char *field; /* the whole field as passed on the command line, i.e. "NAME=VALUE" */
101
/* according to the vorbis spec, field values can contain \0 so simple C strings are not enough here */
102
unsigned field_value_length;
111
unsigned num_entries;
113
} Argument_BlockNumber;
116
FLAC__MetadataType type;
117
char application_id[4]; /* only relevant if type == FLAC__STREAM_METADATA_TYPE_APPLICATION */
118
FLAC__bool filter_application_by_id;
119
} Argument_BlockTypeEntry;
122
unsigned num_entries;
123
Argument_BlockTypeEntry *entries;
124
} Argument_BlockType;
127
FLAC__bool is_binary;
128
} Argument_DataFormat;
136
} Argument_AddSeekpoint;
140
Argument_AddSeekpoint *add_seekpoint_link;
141
} Argument_ImportCuesheetFrom;
145
} Argument_AddPadding;
150
Argument_StreaminfoMD5 streaminfo_md5;
151
Argument_StreaminfoUInt32 streaminfo_uint32;
152
Argument_StreaminfoUInt64 streaminfo_uint64;
153
Argument_VcFieldName vc_field_name;
154
Argument_VcField vc_field;
155
Argument_Filename filename;
156
Argument_ImportCuesheetFrom import_cuesheet_from;
157
Argument_AddSeekpoint add_seekpoint;
158
Argument_AddPadding add_padding;
165
Argument_BlockNumber block_number;
166
Argument_BlockType block_type;
167
Argument_DataFormat data_format;
168
Argument_FromFile from_file;
173
FLAC__bool preserve_modtime;
174
FLAC__bool prefix_with_filename;
175
FLAC__bool utf8_convert;
176
FLAC__bool use_padding;
177
FLAC__bool cued_seekpoints;
178
FLAC__bool show_long_help;
179
FLAC__bool show_version;
180
FLAC__bool application_data_format_is_hexdump;
182
Operation *operations;
183
unsigned num_operations;
188
unsigned num_shorthand_ops;
189
unsigned num_major_ops;
190
FLAC__bool has_block_type;
191
FLAC__bool has_except_block_type;
194
unsigned num_arguments;
199
} CommandLineOptions;
201
void init_options(CommandLineOptions *options);
202
FLAC__bool parse_options(int argc, char *argv[], CommandLineOptions *options);
203
void free_options(CommandLineOptions *options);