mirror of
https://github.com/owntone/owntone-server.git
synced 2025-03-29 08:43:42 -04:00
parent
8afa55222b
commit
6979a7a67e
40
configure.in
40
configure.in
@ -17,6 +17,8 @@ AC_CHECK_HEADERS([sys/wait.h])
|
|||||||
AC_CHECK_HEADERS([sys/param.h])
|
AC_CHECK_HEADERS([sys/param.h])
|
||||||
AC_CHECK_FUNCS(strptime)
|
AC_CHECK_FUNCS(strptime)
|
||||||
AC_CHECK_FUNCS(strtok_r)
|
AC_CHECK_FUNCS(strtok_r)
|
||||||
|
AC_CHECK_FUNCS(timegm)
|
||||||
|
|
||||||
AM_CONDITIONAL(COND_REND_OSX,false)
|
AM_CONDITIONAL(COND_REND_OSX,false)
|
||||||
|
|
||||||
AC_FUNC_SETPGRP
|
AC_FUNC_SETPGRP
|
||||||
@ -173,7 +175,7 @@ AC_ARG_WITH(howl-libs,
|
|||||||
[--with-howl-libs[[=DIR]] use howl lib files in DIR],[
|
[--with-howl-libs[[=DIR]] use howl lib files in DIR],[
|
||||||
if test "$withval" != "no" -a "$withval" != "yes"; then
|
if test "$withval" != "no" -a "$withval" != "yes"; then
|
||||||
Z_DIR=$withval
|
Z_DIR=$withval
|
||||||
LDFLAGS="${LDFLAGS} -L$withval"
|
LDFLAGS="${LDFLAGS} -L$withval -R$withval"
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
@ -189,7 +191,39 @@ AC_ARG_WITH(gdbm-libs,
|
|||||||
[--with-gdbm-libs[[=DIR]] use gdbm lib files in DIR],[
|
[--with-gdbm-libs[[=DIR]] use gdbm lib files in DIR],[
|
||||||
if test "$withval" != "no" -a "$withval" != "yes"; then
|
if test "$withval" != "no" -a "$withval" != "yes"; then
|
||||||
Z_DIR=$withval
|
Z_DIR=$withval
|
||||||
LDFLAGS="${LDFLAGS} -L$withval"
|
LDFLAGS="${LDFLAGS} -L$withval -R$withval"
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_ARG_WITH(sqlite-includes,
|
||||||
|
[--with-sqlite-includes[[=DIR]] use sqlite include files in DIR],[
|
||||||
|
if test "$withval" != "no" -a "$withval" != "yes"; then
|
||||||
|
Z_DIR=$withval
|
||||||
|
CPPFLAGS="${CPPFLAGS} -I$withval -R$withval"
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_ARG_WITH(sqlite-libs,
|
||||||
|
[--with-sqlite-libs[[=DIR]] use sqlite lib files in DIR],[
|
||||||
|
if test "$withval" != "no" -a "$withval" != "yes"; then
|
||||||
|
Z_DIR=$withval
|
||||||
|
LDFLAGS="${LDFLAGS} -L$withval -R$withval"
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_ARG_WITH(sqlite3-includes,
|
||||||
|
[--with-sqlite3-includes[[=DIR]] use sqlite3 include files in DIR],[
|
||||||
|
if test "$withval" != "no" -a "$withval" != "yes"; then
|
||||||
|
Z_DIR=$withval
|
||||||
|
CPPFLAGS="${CPPFLAGS} -I$withval"
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_ARG_WITH(sqlite3-libs,
|
||||||
|
[--with-sqlite3-libs[[=DIR]] use sqlite3 lib files in DIR],[
|
||||||
|
if test "$withval" != "no" -a "$withval" != "yes"; then
|
||||||
|
Z_DIR=$withval
|
||||||
|
LDFLAGS="${LDFLAGS} -L$withval -R$withval"
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
@ -198,7 +232,7 @@ AC_ARG_WITH(id3tag,
|
|||||||
if test "$withval" != "no" -a "$withval" != "yes"; then
|
if test "$withval" != "no" -a "$withval" != "yes"; then
|
||||||
Z_DIR=$withval
|
Z_DIR=$withval
|
||||||
CPPFLAGS="${CPPFLAGS} -I$withval/include"
|
CPPFLAGS="${CPPFLAGS} -I$withval/include"
|
||||||
LDFLAGS="${LDFLAGS} -L$withval/lib"
|
LDFLAGS="${LDFLAGS} -L$withval/lib -R$withval/lib"
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@ -49,21 +49,22 @@ mtd_update_SOURCES = mtd-update.c conf.c conf.h ll.c ll.h \
|
|||||||
db-sql.c db-sql.h db-generic.c db-generic.h smart-parser.c \
|
db-sql.c db-sql.h db-generic.c db-generic.h smart-parser.c \
|
||||||
smart-parser.h err.c err.h os-unix.c os.h xml-rpc.c xml-rpc.h \
|
smart-parser.h err.c err.h os-unix.c os.h xml-rpc.c xml-rpc.h \
|
||||||
restart.c restart.h uici.c uici.h ssc.c ssc.h \
|
restart.c restart.h uici.c uici.h ssc.c ssc.h \
|
||||||
webserver.c webserver.h $(PRENDSRC) $(ORENDSRC) $(HRENDSRC) \
|
webserver.c webserver.h compat.c compat.h \
|
||||||
|
$(PRENDSRC) $(ORENDSRC) $(HRENDSRC) \
|
||||||
$(SQLITEDB) $(SQLITE3DB)
|
$(SQLITEDB) $(SQLITE3DB)
|
||||||
|
|
||||||
wavstreamer_SOURCES = wavstreamer.c
|
wavstreamer_SOURCES = wavstreamer.c
|
||||||
|
|
||||||
mt_daapd_SOURCES = main.c daapd.h rend.h uici.c uici.h webserver.c \
|
mt_daapd_SOURCES = main.c daapd.h rend.h uici.c uici.h webserver.c \
|
||||||
webserver.h configfile.c configfile.h err.c err.h restart.c restart.h \
|
webserver.h configfile.c configfile.h err.c err.h restart.c restart.h \
|
||||||
mp3-scanner.h mp3-scanner.c rend-unix.h strcasestr.c strcasestr.h \
|
mp3-scanner.h mp3-scanner.c rend-unix.h \
|
||||||
strsep.c dynamic-art.c dynamic-art.h ssc.c ssc.h \
|
dynamic-art.c dynamic-art.h ssc.c ssc.h \
|
||||||
db-generic.c db-generic.h dispatch.c dispatch.h \
|
db-generic.c db-generic.h dispatch.c dispatch.h \
|
||||||
rxml.c rxml.h redblack.c redblack.h scan-mp3.c scan-mp4.c \
|
rxml.c rxml.h redblack.c redblack.h scan-mp3.c scan-mp4.c \
|
||||||
scan-xml.c scan-wma.c scan-aac.c scan-aac.h scan-wav.c scan-url.c \
|
scan-xml.c scan-wma.c scan-aac.c scan-aac.h scan-wav.c scan-url.c \
|
||||||
smart-parser.c smart-parser.h xml-rpc.c xml-rpc.h \
|
smart-parser.c smart-parser.h xml-rpc.c xml-rpc.h \
|
||||||
os.h strptime.c strptime.h ll.c ll.h conf.c conf.h \
|
os.h ll.c ll.h conf.c conf.h compat.c compat.h \
|
||||||
strtok_r.c strtok_r.h os-unix.h os-unix.c os.h \
|
os-unix.h os-unix.c os.h \
|
||||||
$(PRENDSRC) $(ORENDSRC) $(HRENDSRC) $(OGGVORBISSRC) $(FLACSRC) \
|
$(PRENDSRC) $(ORENDSRC) $(HRENDSRC) $(OGGVORBISSRC) $(FLACSRC) \
|
||||||
$(MUSEPACKSRC) $(SQLITEDB) $(SQLITE3DB) $(SQLDB) $(GDBM)
|
$(MUSEPACKSRC) $(SQLITEDB) $(SQLITE3DB) $(SQLDB) $(GDBM)
|
||||||
|
|
||||||
|
@ -1,3 +1,36 @@
|
|||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#if !HAVE_STRCASESTR
|
||||||
|
/* case-independent string matching, similar to strstr but
|
||||||
|
* matching */
|
||||||
|
char * strcasestr(char* haystack, char* needle) {
|
||||||
|
int i;
|
||||||
|
int nlength = (int) strlen (needle);
|
||||||
|
int hlength = (int) strlen (haystack);
|
||||||
|
|
||||||
|
if (nlength > hlength) return NULL;
|
||||||
|
if (hlength <= 0) return NULL;
|
||||||
|
if (nlength <= 0) return haystack;
|
||||||
|
/* hlength and nlength > 0, nlength <= hlength */
|
||||||
|
for (i = 0; i <= (hlength - nlength); i++) {
|
||||||
|
if (strncasecmp (haystack + i, needle, nlength) == 0) {
|
||||||
|
return haystack + i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* substring not found */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* !HAVE_STRCASESTR */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1994 Powerdog Industries. All rights reserved.
|
* Copyright (c) 1994 Powerdog Industries. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -29,16 +62,7 @@
|
|||||||
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef HAVE_STRPTIME
|
#ifndef HAVE_STRPTIME
|
||||||
#include <ctype.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#define asizeof(a) (sizeof (a) / sizeof ((a)[0]))
|
#define asizeof(a) (sizeof (a) / sizeof ((a)[0]))
|
||||||
|
|
||||||
@ -371,3 +395,122 @@ char *strptime(char *buf, char *fmt, struct tm *tm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ndef HAVE_STRPTIME */
|
#endif /* ndef HAVE_STRPTIME */
|
||||||
|
|
||||||
|
/* Compliments of Jay Freeman <saurik@saurik.com> */
|
||||||
|
|
||||||
|
#if !HAVE_STRSEP
|
||||||
|
char *strsep(char **stringp, const char *delim) {
|
||||||
|
char *ret = *stringp;
|
||||||
|
if (ret == NULL) return(NULL); /* grrr */
|
||||||
|
if ((*stringp = strpbrk(*stringp, delim)) != NULL) {
|
||||||
|
*((*stringp)++) = '\0';
|
||||||
|
}
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
#endif /* !HAVE_STRSEP */
|
||||||
|
|
||||||
|
/* Reentrant string tokenizer. Generic version.
|
||||||
|
Copyright (C) 1991,1996-1999,2001,2004 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along
|
||||||
|
with this program; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||||
|
|
||||||
|
#ifndef HAVE_STRTOK_R
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
/* Parse S into tokens separated by characters in DELIM.
|
||||||
|
If S is NULL, the saved pointer in SAVE_PTR is used as
|
||||||
|
the next starting point. For example:
|
||||||
|
char s[] = "-abc-=-def";
|
||||||
|
char *sp;
|
||||||
|
x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def"
|
||||||
|
x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL
|
||||||
|
x = strtok_r(NULL, "=", &sp); // x = NULL
|
||||||
|
// s = "abc\0-def\0"
|
||||||
|
*/
|
||||||
|
char *strtok_r(char *s, const char *delim, char **last)
|
||||||
|
{
|
||||||
|
char *spanp;
|
||||||
|
int c, sc;
|
||||||
|
char *tok;
|
||||||
|
|
||||||
|
if (s == NULL && (s = *last) == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Skip (span) leading delimiters (s += strspn(s, delim), sort of).
|
||||||
|
*/
|
||||||
|
cont:
|
||||||
|
c = *s++;
|
||||||
|
for (spanp = (char *)delim; (sc = *spanp++) != 0; ) {
|
||||||
|
if (c == sc) {
|
||||||
|
goto cont;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c == 0) { /* no non-delimiter characters */
|
||||||
|
*last = NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
tok = s - 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Scan token (scan for delimiters: s += strcspn(s, delim), sort of).
|
||||||
|
* Note that delim must have one NUL; we stop if we see that, too.
|
||||||
|
*/
|
||||||
|
for (;;) {
|
||||||
|
c = *s++;
|
||||||
|
spanp = (char *)delim;
|
||||||
|
do {
|
||||||
|
if ((sc = *spanp++) == c) {
|
||||||
|
if (c == 0) {
|
||||||
|
s = NULL;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
char *w = s - 1;
|
||||||
|
*w = '\0';
|
||||||
|
}
|
||||||
|
*last = s;
|
||||||
|
return tok;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (sc != 0);
|
||||||
|
}
|
||||||
|
/* NOTREACHED */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_TIMEGM
|
||||||
|
time_t timegm(struct tm *tm) {
|
||||||
|
time_t ret;
|
||||||
|
char *tz;
|
||||||
|
char buffer[255];
|
||||||
|
|
||||||
|
tz = getenv("TZ");
|
||||||
|
_putenv("TZ=UTC0");
|
||||||
|
_tzset();
|
||||||
|
ret = mktime(tm);
|
||||||
|
|
||||||
|
if(tz)
|
||||||
|
sprintf(buffer,"TZ=%s",tz);
|
||||||
|
else
|
||||||
|
strcpy(buffer,"TZ=");
|
||||||
|
_putenv(buffer);
|
||||||
|
_tzset();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
24
src/compat.h
Normal file
24
src/compat.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#ifndef _COMPAT_H_
|
||||||
|
#define _COMPAT_H_
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_STRCASESTR
|
||||||
|
extern char * strcasestr(char* haystack, char* needle);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_STRPTIME
|
||||||
|
char * strptime( char *buf, char *fmt, struct tm *tm );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_STRTOK_R
|
||||||
|
extern char *strtok_r(char *s, const char *delim, char **last);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_TIMEGM
|
||||||
|
extern time_t timegm(struct tm *tm);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _COMPAT_H_ */
|
@ -32,6 +32,7 @@
|
|||||||
#define _DAAPD_H_
|
#define _DAAPD_H_
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include "compat.h"
|
||||||
#include "webserver.h"
|
#include "webserver.h"
|
||||||
|
|
||||||
/** Simple struct for holding stat info.
|
/** Simple struct for holding stat info.
|
||||||
|
@ -46,7 +46,6 @@
|
|||||||
#include "ssc.h"
|
#include "ssc.h"
|
||||||
#include "dynamic-art.h"
|
#include "dynamic-art.h"
|
||||||
#include "restart.h"
|
#include "restart.h"
|
||||||
#include "strtok_r.h"
|
|
||||||
#include "daapd.h"
|
#include "daapd.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -534,6 +534,9 @@ typedef signed short mDNSs16;
|
|||||||
typedef unsigned short mDNSu16;
|
typedef unsigned short mDNSu16;
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
typedef int32_t mDNSs32;
|
typedef int32_t mDNSs32;
|
||||||
|
#ifndef u_int32_t
|
||||||
|
# define u_int32_t uint32_t
|
||||||
|
#endif
|
||||||
typedef u_int32_t mDNSu32;
|
typedef u_int32_t mDNSu32;
|
||||||
|
|
||||||
// To enforce useful type checking, we make mDNSInterfaceID be a pointer to a dummy struct
|
// To enforce useful type checking, we make mDNSInterfaceID be a pointer to a dummy struct
|
||||||
|
@ -121,6 +121,7 @@ struct ifi_info *get_ifi_info(int family, int doaliases)
|
|||||||
struct ifconf ifc;
|
struct ifconf ifc;
|
||||||
struct ifreq *ifr, ifrcopy;
|
struct ifreq *ifr, ifrcopy;
|
||||||
struct sockaddr_in *sinptr;
|
struct sockaddr_in *sinptr;
|
||||||
|
int index;
|
||||||
|
|
||||||
#if defined(AF_INET6) && defined(HAVE_IPV6)
|
#if defined(AF_INET6) && defined(HAVE_IPV6)
|
||||||
struct sockaddr_in6 *sinptr6;
|
struct sockaddr_in6 *sinptr6;
|
||||||
|
@ -54,10 +54,6 @@
|
|||||||
#include "restart.h"
|
#include "restart.h"
|
||||||
#include "ssc.h"
|
#include "ssc.h"
|
||||||
|
|
||||||
#ifndef HAVE_STRCASESTR
|
|
||||||
# include "strcasestr.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Typedefs
|
* Typedefs
|
||||||
*/
|
*/
|
||||||
|
@ -490,24 +490,6 @@ void _os_socket_shutdown(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* COMPAT FUNCTIONS */
|
/* COMPAT FUNCTIONS */
|
||||||
time_t timegm(struct tm *tm) {
|
|
||||||
time_t ret;
|
|
||||||
char *tz;
|
|
||||||
char buffer[255];
|
|
||||||
|
|
||||||
tz = getenv("TZ");
|
|
||||||
_putenv("TZ=UTC0");
|
|
||||||
_tzset();
|
|
||||||
ret = mktime(tm);
|
|
||||||
|
|
||||||
if(tz)
|
|
||||||
sprintf(buffer,"TZ=%s",tz);
|
|
||||||
else
|
|
||||||
strcpy(buffer,"TZ=");
|
|
||||||
_putenv(buffer);
|
|
||||||
_tzset();
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* opendir/closedir/readdir emulation taken from emacs. Thanks. :) */
|
/* opendir/closedir/readdir emulation taken from emacs. Thanks. :) */
|
||||||
DIR *os_opendir(char *filename) {
|
DIR *os_opendir(char *filename) {
|
||||||
|
@ -61,7 +61,6 @@ extern int os_gettimeofday (struct timeval *tv, struct timezone* tz);
|
|||||||
extern int os_readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
|
extern int os_readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
|
||||||
extern void os_closedir(DIR *dirp);
|
extern void os_closedir(DIR *dirp);
|
||||||
extern DIR *os_opendir(char *filename);
|
extern DIR *os_opendir(char *filename);
|
||||||
extern time_t timegm(struct tm *tm);
|
|
||||||
extern char *os_strerror (int error_no);
|
extern char *os_strerror (int error_no);
|
||||||
|
|
||||||
#endif /* _OS_WIN32_H_ */
|
#endif /* _OS_WIN32_H_ */
|
||||||
|
@ -42,10 +42,6 @@
|
|||||||
#include "err.h"
|
#include "err.h"
|
||||||
#include "mp3-scanner.h"
|
#include "mp3-scanner.h"
|
||||||
|
|
||||||
#ifndef HAVE_STRCASESTR
|
|
||||||
# include "strcasestr.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <FLAC/metadata.h>
|
#include <FLAC/metadata.h>
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,7 +37,6 @@
|
|||||||
#include "mp3-scanner.h"
|
#include "mp3-scanner.h"
|
||||||
#include "rxml.h"
|
#include "rxml.h"
|
||||||
#include "redblack.h"
|
#include "redblack.h"
|
||||||
#include "strptime.h"
|
|
||||||
|
|
||||||
/* Forwards */
|
/* Forwards */
|
||||||
int scan_xml_playlist(char *filename);
|
int scan_xml_playlist(char *filename);
|
||||||
|
@ -19,8 +19,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#include "strptime.h"
|
|
||||||
|
|
||||||
#include "err.h"
|
#include "err.h"
|
||||||
|
|
||||||
#ifdef HAVE_SQL
|
#ifdef HAVE_SQL
|
||||||
|
@ -48,10 +48,6 @@
|
|||||||
#include "mp3-scanner.h"
|
#include "mp3-scanner.h"
|
||||||
#include "ssc.h"
|
#include "ssc.h"
|
||||||
|
|
||||||
#ifndef HAVE_STRCASESTR
|
|
||||||
# include "strcasestr.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the file specified by fname should be converted in
|
* Check if the file specified by fname should be converted in
|
||||||
* server to wav. Currently it does this by file extension, but
|
* server to wav. Currently it does this by file extension, but
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#if !HAVE_STRCASESTR
|
|
||||||
/* case-independent string matching, similar to strstr but
|
|
||||||
* matching */
|
|
||||||
char * strcasestr(char* haystack, char* needle) {
|
|
||||||
int i;
|
|
||||||
int nlength = (int) strlen (needle);
|
|
||||||
int hlength = (int) strlen (haystack);
|
|
||||||
|
|
||||||
if (nlength > hlength) return NULL;
|
|
||||||
if (hlength <= 0) return NULL;
|
|
||||||
if (nlength <= 0) return haystack;
|
|
||||||
/* hlength and nlength > 0, nlength <= hlength */
|
|
||||||
for (i = 0; i <= (hlength - nlength); i++) {
|
|
||||||
if (strncasecmp (haystack + i, needle, nlength) == 0) {
|
|
||||||
return haystack + i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* substring not found */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* !HAVE_STRCASESTR */
|
|
@ -1,8 +0,0 @@
|
|||||||
#ifndef _STRCASESTR_H_
|
|
||||||
#define _STRCASESTR_H_
|
|
||||||
|
|
||||||
#ifndef HAVE_STRCASESTR
|
|
||||||
extern char * strcasestr(char* haystack, char* needle);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,39 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2001 - the shmoo group -
|
|
||||||
**
|
|
||||||
** This program is free software; you can redistribute it and/or
|
|
||||||
** modify it, however, you cannot sell it.
|
|
||||||
**
|
|
||||||
** This program is distributed in the hope that it will be useful,
|
|
||||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
**
|
|
||||||
** You should have received a copy of the license attached to the
|
|
||||||
** use of this software. If not, visit www.shmoo.com/osiris for
|
|
||||||
** details.
|
|
||||||
**
|
|
||||||
******************************************************************************/
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
**
|
|
||||||
** The Shmoo Group (TSG)
|
|
||||||
**
|
|
||||||
** File: strptime.h
|
|
||||||
** Author: Brian Wotring
|
|
||||||
**
|
|
||||||
** Date: June 22, 2001.
|
|
||||||
** Project: osiris
|
|
||||||
**
|
|
||||||
******************************************************************************/
|
|
||||||
|
|
||||||
#ifndef STRPTIME_H
|
|
||||||
#define STRPTIME_H
|
|
||||||
|
|
||||||
#ifndef HAVE_STRPTIME
|
|
||||||
char * strptime( char *buf, char *fmt, struct tm *tm );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
18
src/strsep.c
18
src/strsep.c
@ -1,18 +0,0 @@
|
|||||||
/* Compliments of Jay Freeman <saurik@saurik.com> */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#if !HAVE_STRSEP
|
|
||||||
char *strsep(char **stringp, const char *delim) {
|
|
||||||
char *ret = *stringp;
|
|
||||||
if (ret == NULL) return(NULL); /* grrr */
|
|
||||||
if ((*stringp = strpbrk(*stringp, delim)) != NULL) {
|
|
||||||
*((*stringp)++) = '\0';
|
|
||||||
}
|
|
||||||
return(ret);
|
|
||||||
}
|
|
||||||
#endif /* !HAVE_STRSEP */
|
|
@ -1,88 +0,0 @@
|
|||||||
/* Reentrant string tokenizer. Generic version.
|
|
||||||
Copyright (C) 1991,1996-1999,2001,2004 Free Software Foundation, Inc.
|
|
||||||
This file is part of the GNU C Library.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License along
|
|
||||||
with this program; if not, write to the Free Software Foundation,
|
|
||||||
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef HAVE_STRTOK_R
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
/* Parse S into tokens separated by characters in DELIM.
|
|
||||||
If S is NULL, the saved pointer in SAVE_PTR is used as
|
|
||||||
the next starting point. For example:
|
|
||||||
char s[] = "-abc-=-def";
|
|
||||||
char *sp;
|
|
||||||
x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def"
|
|
||||||
x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL
|
|
||||||
x = strtok_r(NULL, "=", &sp); // x = NULL
|
|
||||||
// s = "abc\0-def\0"
|
|
||||||
*/
|
|
||||||
char *strtok_r(char *s, const char *delim, char **last)
|
|
||||||
{
|
|
||||||
char *spanp;
|
|
||||||
int c, sc;
|
|
||||||
char *tok;
|
|
||||||
|
|
||||||
if (s == NULL && (s = *last) == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Skip (span) leading delimiters (s += strspn(s, delim), sort of).
|
|
||||||
*/
|
|
||||||
cont:
|
|
||||||
c = *s++;
|
|
||||||
for (spanp = (char *)delim; (sc = *spanp++) != 0; ) {
|
|
||||||
if (c == sc) {
|
|
||||||
goto cont;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (c == 0) { /* no non-delimiter characters */
|
|
||||||
*last = NULL;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
tok = s - 1;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Scan token (scan for delimiters: s += strcspn(s, delim), sort of).
|
|
||||||
* Note that delim must have one NUL; we stop if we see that, too.
|
|
||||||
*/
|
|
||||||
for (;;) {
|
|
||||||
c = *s++;
|
|
||||||
spanp = (char *)delim;
|
|
||||||
do {
|
|
||||||
if ((sc = *spanp++) == c) {
|
|
||||||
if (c == 0) {
|
|
||||||
s = NULL;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
char *w = s - 1;
|
|
||||||
*w = '\0';
|
|
||||||
}
|
|
||||||
*last = s;
|
|
||||||
return tok;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while (sc != 0);
|
|
||||||
}
|
|
||||||
/* NOTREACHED */
|
|
||||||
}
|
|
||||||
#endif
|
|
@ -1,49 +0,0 @@
|
|||||||
/* Split string into tokens
|
|
||||||
Copyright (C) 2004-2005 Free Software Foundation, Inc.
|
|
||||||
Written by Simon Josefsson.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License along
|
|
||||||
with this program; if not, write to the Free Software Foundation,
|
|
||||||
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
|
||||||
|
|
||||||
#ifndef _STRTOK_R_H
|
|
||||||
#define _STRTOK_R_H
|
|
||||||
|
|
||||||
/* Parse S into tokens separated by characters in DELIM.
|
|
||||||
If S is NULL, the saved pointer in SAVE_PTR is used as
|
|
||||||
the next starting point. For example:
|
|
||||||
char s[] = "-abc-=-def";
|
|
||||||
char *sp;
|
|
||||||
x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def"
|
|
||||||
x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL
|
|
||||||
x = strtok_r(NULL, "=", &sp); // x = NULL
|
|
||||||
// s = "abc\0-def\0"
|
|
||||||
|
|
||||||
This is a variant of strtok() that is multithread-safe.
|
|
||||||
|
|
||||||
For the POSIX documentation for this function, see:
|
|
||||||
http://www.opengroup.org/susv3xsh/strtok.html
|
|
||||||
|
|
||||||
Caveat: It modifies the original string.
|
|
||||||
Caveat: These functions cannot be used on constant strings.
|
|
||||||
Caveat: The identity of the delimiting character is lost.
|
|
||||||
Caveat: It doesn't work with multibyte strings unless all of the delimiter
|
|
||||||
characters are ASCII characters < 0x30.
|
|
||||||
|
|
||||||
See also strsep().
|
|
||||||
*/
|
|
||||||
#ifndef HAVE_STRTOK_R
|
|
||||||
extern char *strtok_r(char *s, const char *delim, char **last);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* _STRTOK_R_H */
|
|
Loading…
x
Reference in New Issue
Block a user