return basepath;
}
-static char *getProgramMainDataPath(char *command_filename, char *base_path)
-{
- /* check if the program's main data base directory is configured */
- if (!strEqual(base_path, "."))
- return base_path;
-
- /* if the program is configured to start from current directory (default),
- determine program package directory from program binary (some versions
- of KDE/Konqueror and Mac OS X (especially "Mavericks") apparently do not
- set the current working directory to the program package directory) */
- char *main_data_path = getBasePath(command_filename);
-
-#if defined(PLATFORM_MACOSX)
- if (strSuffix(main_data_path, MAC_APP_BINARY_SUBDIR))
- {
- char *main_data_path_old = main_data_path;
-
- // cut relative path to Mac OS X application binary directory from path
- main_data_path[strlen(main_data_path) -
- strlen(MAC_APP_BINARY_SUBDIR)] = '\0';
-
- // cut trailing path separator from path (but not if path is root directory)
- if (strSuffix(main_data_path, "/") && !strEqual(main_data_path, "/"))
- main_data_path[strlen(main_data_path) - 1] = '\0';
-
- // replace empty path with current directory
- if (strEqual(main_data_path, ""))
- main_data_path = ".";
-
- // add relative path to Mac OS X application resources directory to path
- main_data_path = getPath2(main_data_path, MAC_APP_FILES_SUBDIR);
-
- free(main_data_path_old);
- }
-#endif
-
- return main_data_path;
-}
-
/* ------------------------------------------------------------------------- */
/* various string functions */
int getFileVersion(File *file)
{
+ int version_super = getByteFromFile(file);
int version_major = getByteFromFile(file);
int version_minor = getByteFromFile(file);
int version_patch = getByteFromFile(file);
- int version_build = getByteFromFile(file);
- return VERSION_IDENT(version_major, version_minor, version_patch,
- version_build);
+ return VERSION_IDENT(version_super, version_major, version_minor,
+ version_patch);
}
int putFileVersion(FILE *file, int version)
{
if (file != NULL)
{
+ int version_super = VERSION_SUPER(version);
int version_major = VERSION_MAJOR(version);
int version_minor = VERSION_MINOR(version);
int version_patch = VERSION_PATCH(version);
- int version_build = VERSION_BUILD(version);
+ fputc(version_super, file);
fputc(version_major, file);
fputc(version_minor, file);
fputc(version_patch, file);
- fputc(version_build, file);
}
return 4;
/* functions for file handling */
/* ------------------------------------------------------------------------- */
+#define MAX_BUFFER_SIZE 4096
+
File *openFile(char *filename, char *mode)
{
File *file = checked_calloc(sizeof(File));
return fread(buffer, item_size, num_items, file->file);
}
+size_t writeFile(File *file, void *buffer, size_t item_size, size_t num_items)
+{
+ return fwrite(buffer, item_size, num_items, file->file);
+}
+
int seekFile(File *file, long offset, int whence)
{
#if defined(PLATFORM_ANDROID)
return fgets(line, size, file->file);
}
+int copyFile(char *filename_from, char *filename_to)
+{
+ File *file_from, *file_to;
+
+ if ((file_from = openFile(filename_from, MODE_READ)) == NULL)
+ {
+ return -1;
+ }
+
+ if ((file_to = openFile(filename_to, MODE_WRITE)) == NULL)
+ {
+ closeFile(file_from);
+
+ return -1;
+ }
+
+ while (!checkEndOfFile(file_from))
+ {
+ byte buffer[MAX_BUFFER_SIZE];
+ size_t bytes_read = readFile(file_from, buffer, 1, MAX_BUFFER_SIZE);
+
+ writeFile(file_to, buffer, 1, bytes_read);
+ }
+
+ closeFile(file_from);
+ closeFile(file_to);
+
+ return 0;
+}
+
/* ------------------------------------------------------------------------- */
/* functions for directory handling */
return result;
}
+int get_anim_action_parameter_value(char *token)
+{
+ int result = getImageIDFromToken(token);
+
+ if (result == -1)
+ {
+ char *gfx_token = getStringCat2("gfx.", token);
+
+ result = getImageIDFromToken(gfx_token);
+
+ checked_free(gfx_token);
+ }
+
+ if (result == -1)
+ result = ANIM_EVENT_ACTION_NONE;
+
+ return result;
+}
+
int get_parameter_value(char *value_raw, char *suffix, int type)
{
char *value = getStringToLower(value_raw);
// add optional "click:anim_X" or "click:anim_X.part_X" parameter
result |= get_anim_parameter_value(value);
}
+ else if (strEqual(suffix, ".init_event_action") ||
+ strEqual(suffix, ".anim_event_action"))
+ {
+ result = get_anim_action_parameter_value(value);
+ }
else if (strEqual(suffix, ".class"))
{
result = (strEqual(value, ARG_UNDEFINED) ? ARG_UNDEFINED_VALUE :