misc/physfs/extras/hwpacksmounter.c
author unc0rr
Tue, 20 Nov 2012 00:10:12 +0400
changeset 8070 66bc20d089fc
parent 8052 845b5ae03841
child 8074 768427321cab
permissions -rw-r--r--
Okay, remove previous request only if it has same parent as this one. Fixes the last note of previous commit (which was nearly impossible to hit, but whatever, just cleaning implementation)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8052
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
     1
#include <string.h>
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
     2
#include <stdio.h>
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
     3
#include <stdlib.h>
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
     4
#include <physfs.h>
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
     5
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
     6
#include "hwpacksmounter.h"
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
     7
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
     8
void hedgewarsMountPackages()
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
     9
{
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    10
    char ** filesList = PHYSFS_enumerateFiles("/");
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    11
    char **i;
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    12
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    13
    for (i = filesList; *i != NULL; i++)
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    14
    {
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    15
        char * fileName = *i;
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    16
        int fileNameLength = strlen(fileName);
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    17
        if (fileNameLength > 4)
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    18
            if (strcmp(fileName + fileNameLength - 4, ".hwp") == 0)
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    19
            {
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    20
                const char * dir = PHYSFS_getRealDir(fileName);
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    21
                if(dir)
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    22
                {
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    23
                    char * fullPath = (char *)malloc(strlen(dir) + fileNameLength + 2);
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    24
                    strcpy(fullPath, dir);
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    25
                    strcat(fullPath, "/");
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    26
                    strcat(fullPath, fileName);
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    27
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    28
                    PHYSFS_mount(fullPath, NULL, 1);
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    29
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    30
                    free(fullPath);
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    31
                }
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    32
            }
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    33
    }
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    34
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    35
    PHYSFS_freeList(filesList);
845b5ae03841 Mount .hwt files found in Data folder
unc0rr
parents:
diff changeset
    36
}