2004-02-24 00:41:20 +01:00
|
|
|
/* the Music Player Daemon (MPD)
|
2007-04-05 05:22:33 +02:00
|
|
|
* Copyright (C) 2003-2007 by Warren Dukes (warren.dukes@gmail.com)
|
2004-02-24 00:41:20 +01:00
|
|
|
* This project's homepage is: http://www.musicpd.org
|
|
|
|
*
|
|
|
|
* 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 of the License, 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef PATH_H
|
|
|
|
#define PATH_H
|
|
|
|
|
2004-03-18 04:29:25 +01:00
|
|
|
#include "../config.h"
|
2008-01-03 08:29:49 +01:00
|
|
|
#include "os_compat.h"
|
2007-12-28 03:56:25 +01:00
|
|
|
|
|
|
|
#if !defined(MPD_PATH_MAX)
|
|
|
|
# if defined(MAXPATHLEN)
|
|
|
|
# define MPD_PATH_MAX MAXPATHLEN
|
|
|
|
# elif defined(PATH_MAX)
|
|
|
|
# define MPD_PATH_MAX PATH_MAX
|
|
|
|
# else
|
|
|
|
# define MPD_PATH_MAX 256
|
|
|
|
# endif
|
|
|
|
#endif
|
2004-02-24 00:41:20 +01:00
|
|
|
|
2006-07-30 12:31:41 +02:00
|
|
|
extern const char *musicDir;
|
2004-02-24 00:41:20 +01:00
|
|
|
|
2006-08-20 02:50:44 +02:00
|
|
|
void initPaths(void);
|
2004-02-24 00:41:20 +01:00
|
|
|
|
2006-08-20 02:50:44 +02:00
|
|
|
void finishPaths(void);
|
2004-02-24 00:41:20 +01:00
|
|
|
|
2007-12-28 03:56:25 +01:00
|
|
|
char *fs_charset_to_utf8(char *dst, char *str);
|
|
|
|
|
|
|
|
char *utf8_to_fs_charset(char *dst, char *str);
|
2004-02-24 00:41:20 +01:00
|
|
|
|
2006-07-20 18:02:40 +02:00
|
|
|
void setFsCharset(char *charset);
|
2004-02-24 00:41:20 +01:00
|
|
|
|
2006-08-20 02:50:44 +02:00
|
|
|
char *getFsCharset(void);
|
2004-02-24 00:41:20 +01:00
|
|
|
|
2007-12-28 03:56:25 +01:00
|
|
|
/*
|
|
|
|
* pfx_dir - sets dst="$pfx/$path" and returns a pointer to path inside * dst
|
|
|
|
* this will unconditionally put a '/' between pfx and path unlike
|
|
|
|
* the static pfx_path() function in path.c
|
|
|
|
* dst is assumed to be MAXPATHLEN in size
|
|
|
|
* dst can point to the same location as path, but not pfx, which makes
|
|
|
|
* this better than sprintf(3) in some cases
|
|
|
|
*/
|
|
|
|
char *pfx_dir(char *dst,
|
|
|
|
const char *path, const size_t path_len,
|
|
|
|
const char *pfx, const size_t pfx_len);
|
|
|
|
|
2008-01-03 08:22:18 +01:00
|
|
|
/* relative music path to absolute music path */
|
2007-12-28 03:56:25 +01:00
|
|
|
char *rmp2amp_r(char *dst, const char *rel_path);
|
2004-02-24 00:41:20 +01:00
|
|
|
|
2008-01-03 08:22:18 +01:00
|
|
|
/* relative playlist path to absolute playlist path */
|
2007-12-28 03:56:25 +01:00
|
|
|
char *rpp2app_r(char *dst, const char *rel_path);
|
2004-02-24 00:41:20 +01:00
|
|
|
|
2008-01-03 08:22:18 +01:00
|
|
|
/*
|
|
|
|
* parent_path - saner version of dirname(3) with slightly different semantics
|
|
|
|
* - we will return "" instead of "." or "/" if we have no parent
|
|
|
|
* this is because we only deal with internal paths
|
|
|
|
* - we always skip over redundant slashes in the middle, if there are any
|
|
|
|
* - we will never get meaningful paths with trailing slashes in our callers
|
|
|
|
* (set handle_trailing_slashes to true if we do)
|
|
|
|
*/
|
2007-12-28 03:56:25 +01:00
|
|
|
char *parent_path(char *path_max_tmp, const char *path);
|
2004-02-24 00:41:20 +01:00
|
|
|
|
2004-04-14 07:26:32 +02:00
|
|
|
/* strips extra "///" and leading "/" and trailing "/" */
|
2006-07-20 18:02:40 +02:00
|
|
|
char *sanitizePathDup(char *path);
|
2004-04-14 07:26:32 +02:00
|
|
|
|
2006-07-30 12:31:41 +02:00
|
|
|
/* this is actually like strlcpy (OpenBSD), but we don't actually want to
|
|
|
|
* blindly use it everywhere, only for paths that are OK to truncate (for
|
|
|
|
* error reporting and such.
|
2008-01-01 11:07:34 +01:00
|
|
|
* dest must be MPD_PATH_MAX bytes large (which is standard in mpd) */
|
2006-07-30 12:31:41 +02:00
|
|
|
void pathcpy_trunc(char *dest, const char *src);
|
|
|
|
|
2008-01-01 11:07:34 +01:00
|
|
|
/*
|
|
|
|
* converts a path passed from a client into an absolute FS path.
|
|
|
|
* paths passed by clients do NOT have file suffixes in them
|
|
|
|
*/
|
|
|
|
void utf8_to_fs_playlist_path(char *path_max_tmp, const char *utf8path);
|
|
|
|
|
2004-02-24 00:41:20 +01:00
|
|
|
#endif
|