annotate src/ljpath.h @ 0:c84446dfb3f5

initial add
author paulo@localhost
date Fri, 13 Mar 2009 00:39:12 -0700
parents
children
rev   line source
paulo@0 1 /*
paulo@0 2 ljpath - functions to support an application that can be
paulo@0 3 installed to either a read-write folder ("portable" config)
paulo@0 4 or to a read-only folder ("installed" config)
paulo@0 5
paulo@0 6 Copyright 2008 Damian Yerrick
paulo@0 7
paulo@0 8 Insert zlib license here.
paulo@0 9
paulo@0 10 */
paulo@0 11
paulo@0 12 #ifndef LJPATH_H
paulo@0 13 #define LJPATH_H
paulo@0 14
paulo@0 15 #ifdef __cplusplus
paulo@0 16 #include <cstdio>
paulo@0 17 using std::FILE;
paulo@0 18 extern "C"
paulo@0 19 {
paulo@0 20 #define DISTINCT
paulo@0 21 #else
paulo@0 22 #include <stdio.h>
paulo@0 23 #define DISTINCT restrict
paulo@0 24 #endif
paulo@0 25
paulo@0 26 /**
paulo@0 27 * Sets up the paths used by ljfopen().
paulo@0 28 * Determines whether the program is marked as "installed", by
paulo@0 29 * the presence of a file called installed.ini in the folder
paulo@0 30 * containing the executable file. If so, uses a folder in the
paulo@0 31 * user's home directory instead of the current directory for
paulo@0 32 * writable files.
paulo@0 33 * @param argv0 the executable file's path
paulo@0 34 * @return nonzero for installed; zero for portable
paulo@0 35 */
paulo@0 36 int ljpathInit(const char *argv0);
paulo@0 37
paulo@0 38 /**
paulo@0 39 * Sets the skin folder to the folder containing a file. For instance,
paulo@0 40 * in a skinnable falling block game, this would be the folder holding
paulo@0 41 * the .skin file that describes the path to each graphic used for the
paulo@0 42 * game display.
paulo@0 43 * @param filename the name of the file
paulo@0 44 */
paulo@0 45 void ljpathSetSkinFolder(const char *filename);
paulo@0 46
paulo@0 47 /**
paulo@0 48 * Searches for a file in read-write, skin, and read-only folders
paulo@0 49 * @param dst pointer to a PATH_MAX-byte buffer to hold the path
paulo@0 50 * @param filename the name of the file that will be searched for
paulo@0 51 * @return nonzero if the file was found; 0 if not found
paulo@0 52 */
paulo@0 53 int ljpathFind_r(char *DISTINCT dst, const char *DISTINCT filename);
paulo@0 54
paulo@0 55 int ljpathFind_w(char *DISTINCT dst, const char *DISTINCT filename);
paulo@0 56
paulo@0 57 /**
paulo@0 58 * Searches for a file and opens it. After it is opened, the
paulo@0 59 * caller may use stdio.h operations on it and must close it.
paulo@0 60 * Files being read are searched for using ljpathFind_r; others are
paulo@0 61 * searched for using ljpathFind_r
paulo@0 62 * @param filename the name of the file that will be searched for
paulo@0 63 * @param mode the stdio mode (r, w, a, rb, wb, ab)
paulo@0 64 * @return a magic cookie suitable for passing to stdio.h if the file
paulo@0 65 * was opened; 0 if not opened
paulo@0 66 */
paulo@0 67 FILE *ljfopen(const char *DISTINCT filename, const char *DISTINCT mode);
paulo@0 68
paulo@0 69
paulo@0 70 #ifdef __cplusplus
paulo@0 71 }
paulo@0 72 #endif
paulo@0 73
paulo@0 74 #endif