mirror of
https://gitlab.xiph.org/xiph/ezstream.git
synced 2024-12-04 14:46:31 -05:00
Teach ezstream a different mode of operation, as a one-shot line shuffling tool.
git-svn-id: https://svn.xiph.org/trunk/ezstream@16537 0101bb08-14d6-0310-b084-bc0e0c8e3800
This commit is contained in:
parent
c59c0c9847
commit
000320afa5
2
NEWS
2
NEWS
@ -12,6 +12,8 @@ Changes in 0.5.6, released on 2009-08-31:
|
|||||||
and operation will continue until 100 subsequent errors. Based on
|
and operation will continue until 100 subsequent errors. Based on
|
||||||
an idea from dhorton.
|
an idea from dhorton.
|
||||||
(Ticket #1585)
|
(Ticket #1585)
|
||||||
|
- [NEW] New command line option -s: Make ezstream function as a line-
|
||||||
|
based shuffling utility.
|
||||||
* src/playlist.c:
|
* src/playlist.c:
|
||||||
- [MISC] Consider no output from a playlist program to be equivalent to an
|
- [MISC] Consider no output from a playlist program to be equivalent to an
|
||||||
empty line, indicating that the end of the playlist is reached.
|
empty line, indicating that the end of the playlist is reached.
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
.Op Fl hnqVv
|
.Op Fl hnqVv
|
||||||
.Fl c Ar configfile
|
.Fl c Ar configfile
|
||||||
.Ek
|
.Ek
|
||||||
|
.Nm
|
||||||
|
.Bk -words
|
||||||
|
.Fl s
|
||||||
|
.Op Ar playlist
|
||||||
|
.Ek
|
||||||
.Sh DESCRIPTION
|
.Sh DESCRIPTION
|
||||||
The
|
The
|
||||||
.Nm
|
.Nm
|
||||||
@ -44,7 +49,6 @@ reading from standard input, and can be used from the command line.
|
|||||||
.It Fl c Ar configfile
|
.It Fl c Ar configfile
|
||||||
Use the XML configuration in
|
Use the XML configuration in
|
||||||
.Ar configfile .
|
.Ar configfile .
|
||||||
.Pq Mandatory.
|
|
||||||
.It Fl h
|
.It Fl h
|
||||||
Print a summary of available command line parameters with short descriptions
|
Print a summary of available command line parameters with short descriptions
|
||||||
and exit.
|
and exit.
|
||||||
@ -53,6 +57,18 @@ Normalize metadata strings by removing excess whitespaces.
|
|||||||
.It Fl q
|
.It Fl q
|
||||||
Be more quiet.
|
Be more quiet.
|
||||||
Suppress the output that external programs send to standard error.
|
Suppress the output that external programs send to standard error.
|
||||||
|
.It Fl s Op Ar playlist
|
||||||
|
Run
|
||||||
|
.Nm
|
||||||
|
as a line-based shuffling utility.
|
||||||
|
If no
|
||||||
|
.Ar playlist
|
||||||
|
argument is given, a list of media file names is read from standard input
|
||||||
|
instead of an input file.
|
||||||
|
After successfully reading the entire list, it is shuffled and printed to
|
||||||
|
standard output, and
|
||||||
|
.Nm
|
||||||
|
will exit.
|
||||||
.It Fl V
|
.It Fl V
|
||||||
Print the
|
Print the
|
||||||
.Nm
|
.Nm
|
||||||
|
@ -51,6 +51,7 @@ char *__progname;
|
|||||||
|
|
||||||
int nFlag;
|
int nFlag;
|
||||||
int qFlag;
|
int qFlag;
|
||||||
|
int sFlag;
|
||||||
int vFlag;
|
int vFlag;
|
||||||
int metadataFromProgram;
|
int metadataFromProgram;
|
||||||
|
|
||||||
@ -1073,6 +1074,7 @@ void
|
|||||||
usage(void)
|
usage(void)
|
||||||
{
|
{
|
||||||
printf("usage: %s [-hnqVv] -c configfile\n", __progname);
|
printf("usage: %s [-hnqVv] -c configfile\n", __progname);
|
||||||
|
printf(" %s -s [playlist]\n", __progname);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1083,6 +1085,8 @@ usageHelp(void)
|
|||||||
printf(" -h display this additional help and exit\n");
|
printf(" -h display this additional help and exit\n");
|
||||||
printf(" -n normalize metadata strings\n");
|
printf(" -n normalize metadata strings\n");
|
||||||
printf(" -q suppress STDERR output from external en-/decoders\n");
|
printf(" -q suppress STDERR output from external en-/decoders\n");
|
||||||
|
printf(" -s [playlist] read lines from playlist (or STDIN), shuffle and print them to\n");
|
||||||
|
printf(" STDOUT, then exit\n");
|
||||||
printf(" -V print the version number and exit\n");
|
printf(" -V print the version number and exit\n");
|
||||||
printf(" -v verbose output (use twice for more effect)\n");
|
printf(" -v verbose output (use twice for more effect)\n");
|
||||||
printf("\n");
|
printf("\n");
|
||||||
@ -1120,7 +1124,7 @@ main(int argc, char *argv[])
|
|||||||
qFlag = 0;
|
qFlag = 0;
|
||||||
vFlag = 0;
|
vFlag = 0;
|
||||||
|
|
||||||
while ((c = local_getopt(argc, argv, "c:hnqVv")) != -1) {
|
while ((c = local_getopt(argc, argv, "c:hnqsVv")) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'c':
|
case 'c':
|
||||||
if (configFile != NULL) {
|
if (configFile != NULL) {
|
||||||
@ -1140,6 +1144,9 @@ main(int argc, char *argv[])
|
|||||||
case 'q':
|
case 'q':
|
||||||
qFlag = 1;
|
qFlag = 1;
|
||||||
break;
|
break;
|
||||||
|
case 's':
|
||||||
|
sFlag = 1;
|
||||||
|
break;
|
||||||
case 'V':
|
case 'V':
|
||||||
printf("%s\n", PACKAGE_STRING);
|
printf("%s\n", PACKAGE_STRING);
|
||||||
return (ez_shutdown(0));
|
return (ez_shutdown(0));
|
||||||
@ -1156,6 +1163,35 @@ main(int argc, char *argv[])
|
|||||||
argc -= optind;
|
argc -= optind;
|
||||||
argv += optind;
|
argv += optind;
|
||||||
|
|
||||||
|
if (sFlag) {
|
||||||
|
playlist_t *pl;
|
||||||
|
const char *entry;
|
||||||
|
|
||||||
|
switch (argc) {
|
||||||
|
case 0:
|
||||||
|
pl = playlist_read(NULL);
|
||||||
|
if (pl == NULL)
|
||||||
|
return (ez_shutdown(1));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
pl = playlist_read(argv[0]);
|
||||||
|
if (pl == NULL)
|
||||||
|
return (ez_shutdown(1));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("Error: Too many arguments.\n");
|
||||||
|
return (ez_shutdown(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
playlist_shuffle(pl);
|
||||||
|
while ((entry = playlist_get_next(pl)) != NULL)
|
||||||
|
printf("%s\n", entry);
|
||||||
|
|
||||||
|
playlist_free(&pl);
|
||||||
|
|
||||||
|
return (ez_shutdown(0));
|
||||||
|
}
|
||||||
|
|
||||||
if (configFile == NULL) {
|
if (configFile == NULL) {
|
||||||
printf("You must supply a config file with the -c argument.\n");
|
printf("You must supply a config file with the -c argument.\n");
|
||||||
usage();
|
usage();
|
||||||
|
Loading…
Reference in New Issue
Block a user