1
0
mirror of https://gitlab.xiph.org/xiph/ezstream.git synced 2024-09-15 04:08:07 -04:00

Support reading playlists from standard input.

git-svn-id: https://svn.xiph.org/trunk/ezstream@16536 0101bb08-14d6-0310-b084-bc0e0c8e3800
This commit is contained in:
moritz 2009-08-30 21:46:15 +00:00
parent 85406d9399
commit c59c0c9847
2 changed files with 21 additions and 7 deletions

View File

@ -49,6 +49,10 @@
# include <unistd.h>
#endif
#ifndef STDIN_FILENO
# define STDIN_FILENO 0
#endif /* !STDIN_FILENO */
#ifndef _PATH_DEVNULL
# ifdef WIN32
# define _PATH_DEVNULL "nul"

View File

@ -131,6 +131,7 @@ playlist_read(const char *filename)
FILE *filep;
char buf[PATH_MAX];
if (filename != NULL) {
pl = playlist_create(filename);
if ((filep = fopen(filename, "r")) == NULL) {
@ -138,6 +139,15 @@ playlist_read(const char *filename)
playlist_free(&pl);
return (NULL);
}
} else {
pl = playlist_create("stdin");
if ((filep = fdopen(STDIN_FILENO, "r")) == NULL) {
printf("%s: stdin: %s\n", __progname, strerror(errno));
playlist_free(&pl);
return (NULL);
}
}
line = 0;
while (fgets(buf, (int)sizeof(buf), filep) != NULL) {
@ -147,7 +157,7 @@ playlist_read(const char *filename)
char skip_buf[2];
printf("%s[%lu]: File or path name too long\n",
filename, line);
pl->filename, line);
/* Discard any excess chars in that line. */
while (fgets(skip_buf, (int)sizeof(skip_buf), filep) != NULL) {
if (skip_buf[0] == '\n')
@ -181,7 +191,7 @@ playlist_read(const char *filename)
}
if (ferror(filep)) {
printf("%s: playlist_read(): Error while reading %s: %s\n",
__progname, filename, strerror(errno));
__progname, pl->filename, strerror(errno));
fclose(filep);
playlist_free(&pl);
return (NULL);