Built SDL2_image and _mixer static
This commit is contained in:
88
libsdl2_mixer/external/mpg123-1.25.6/src/sysutil.c
vendored
Normal file
88
libsdl2_mixer/external/mpg123-1.25.6/src/sysutil.c
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
sysutil: generic utilities to interact with the OS (signals, paths)
|
||||
|
||||
copyright ?-2014 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Michael Hipp (dissected/renamed by Thomas Orgis)
|
||||
*/
|
||||
|
||||
#include "mpg123app.h"
|
||||
#include <sys/stat.h>
|
||||
#include "sysutil.h"
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
#if 0
|
||||
/* removed the strndup for better portability */
|
||||
/*
|
||||
* Allocate space for a new string containing the first
|
||||
* "num" characters of "src". The resulting string is
|
||||
* always zero-terminated. Returns NULL if malloc fails.
|
||||
*/
|
||||
char *strndup (const char *src, int num)
|
||||
{
|
||||
char *dst;
|
||||
|
||||
if (!(dst = (char *) malloc(num+1)))
|
||||
return (NULL);
|
||||
dst[num] = '\0';
|
||||
return (strncpy(dst, src, num));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
size_t dir_length(const char *path)
|
||||
{
|
||||
char * slashpos = strrchr(path, '/');
|
||||
return (slashpos ? slashpos-path : 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Split "path" into directory and filename components.
|
||||
*
|
||||
* Return value is 0 if no directory was specified (i.e.
|
||||
* "path" does not contain a '/'), OR if the directory
|
||||
* is the same as on the previous call to this function.
|
||||
*
|
||||
* Return value is 1 if a directory was specified AND it
|
||||
* is different from the previous one (if any).
|
||||
*/
|
||||
|
||||
int split_dir_file (const char *path, char **dname, char **fname)
|
||||
{
|
||||
static char *lastdir = NULL;
|
||||
char *slashpos;
|
||||
|
||||
if ((slashpos = strrchr(path, '/'))) {
|
||||
*fname = slashpos + 1;
|
||||
*dname = compat_strdup(path); /* , 1 + slashpos - path); */
|
||||
if(!(*dname)) {
|
||||
perror("failed to allocate memory for dir name");
|
||||
return 0;
|
||||
}
|
||||
(*dname)[1 + slashpos - path] = 0;
|
||||
if (lastdir && !strcmp(lastdir, *dname)) {
|
||||
/*** same as previous directory ***/
|
||||
free (*dname);
|
||||
*dname = lastdir;
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
/*** different directory ***/
|
||||
if (lastdir)
|
||||
free (lastdir);
|
||||
lastdir = *dname;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
/*** no directory specified ***/
|
||||
if (lastdir) {
|
||||
free (lastdir);
|
||||
lastdir = NULL;
|
||||
};
|
||||
*dname = NULL;
|
||||
*fname = (char *)path;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user