int main(int argc, char *argv[]){

	
	if(argc == 1)
	{	
		mkdir(BACKUP_DIRECTORY, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
		BackUpFiles();
	}
	else if (strcmp(argv[1],"-r") == 0 || strcmp(argv[1],"--restore") == 0 )
		RestoreFiles();
	else 
	{
		printf("Error, invalid arguments.\n");
		return EXIT_FAILURE;
	}

	return EXIT_SUCCESS;
}
示例#2
0
文件: slproj.c 项目: doniexun/OrangeC
void RestoreProject(PROJECTITEM *project, BOOL loadWA)
{
    int projectVersion;
    struct xmlNode *root;
    struct xmlNode *children;
    struct xmlAttr *attribs;
    FILE *in;
    char name[MAX_PATH];
    sprintf(name, "%s.cpj", project->realName);
    in = fopen(name, "r");
    if (!in)
    {
        ExtendedMessageBox("Load Error", MB_SETFOREGROUND | MB_SYSTEMMODAL, 
            "Project File %s Not Found",project->displayName);
        strcat(project->displayName, " (unable to load)");
        return;
    }
    root = xmlReadFile(in);
    fclose(in);
    if (!root || !IsNode(root, "CC386PROJECT"))
    {
        LoadErr(root, project->displayName);
        strcat(project->displayName, " (unable to load)");
        return;
    }
    if (loadWA)
    {
        children = root->children;
        while (children)
        {
            if (IsNode(children, "WORKAREA"))
            {
                attribs = children->attribs;
                while (attribs)
                {
                    if (IsAttrib(attribs, "NAME"))
                    {
                        LoadWorkArea(attribs->value, TRUE);
                        return;
                    }
                    attribs = attribs->next;
                }
            }
            children = children->next;
        }
    }
    children = root->children;
    while (children)
    {
        if (IsNode(children, "VERSION"))
        {
            attribs = children->attribs;
            while (attribs)
            {
                if (IsAttrib(attribs, "ID"))
                    projectVersion = atoi(attribs->value);
                attribs = attribs->next;
            }
        }
        else if (IsNode(children, "TARGET"))
        {
            struct xmlNode *settings = children->children;
            attribs = children->attribs;
            while (attribs)
            {
                if (IsAttrib(attribs, "TITLE"))
                {
                    strcpy(project->displayName, attribs->value);
                }
                attribs = attribs->next;
            }
            while (settings)
            {
                if (IsNode(settings, "FILES"))
                {
                    RestoreFiles(settings->children, project, project);
                }
                if (IsNode(settings, "PROPERTIES"))
                {
                    RestoreProps(settings->children, project, project);
                }
                settings = settings->next;
            }
        }
        children = children->next;
    }
    xmlFree(root);
    CalculateProjectDepends(project);
    project->loaded = TRUE;
}
示例#3
0
文件: slproj.c 项目: doniexun/OrangeC
static void RestoreFiles(struct xmlNode *input, PROJECTITEM *root, PROJECTITEM *parent)
{
    while (input)
    {
        if (IsNode(input, "FOLDER"))
        {
            struct xmlAttr *attribs = input->attribs;
            PROJECTITEM *folder = calloc(1, sizeof(PROJECTITEM));
            if (folder)
            {
                PROJECTITEM **ins = &parent->children;
                while (attribs)
                {
                    if (IsAttrib(attribs, "TITLE"))
                    {
                        strcpy(folder->displayName, attribs->value);
                    }
                    attribs = attribs->next;
                }
                while (*ins && (*ins)->type == PJ_FOLDER && stricmp((*ins)->displayName, folder->displayName) < 0)
                    ins = &(*ins)->next;
                folder->parent = parent;
                folder->type = PJ_FOLDER;
                folder->next = *ins;
                *ins = folder;
                RestoreFiles(input->children, root, folder);
            }
        }
        else if (IsNode(input, "FILE"))
        {
            struct xmlAttr *attribs = input->attribs;
            PROJECTITEM *file = calloc(1, sizeof(PROJECTITEM));
            if (file)
            {
                PROJECTITEM **ins = &parent->children;
                while (attribs)
                {
                    if (IsAttrib(attribs, "TITLE"))
                    {
                        strcpy(file->displayName, attribs->value);
                    }
                    else if (IsAttrib(attribs, "NAME"))
                    {
                        strcpy(file->realName, attribs->value);
                        abspath(file->realName, root->realName);
                    }
                    else if (IsAttrib(attribs, "CLEAN"))
                    {
                        file->clean = atoi(attribs->value);
                    }
                    attribs = attribs->next;
                }
                while (*ins && (*ins)->type == PJ_FOLDER)
                    ins = &(*ins)->next;
                while (*ins && stricmp((*ins)->displayName, file->displayName) < 0)
                    ins = &(*ins)->next;
                file->parent = parent;
                file->type = PJ_FILE;
                file->next = *ins;
                *ins = file;
                RestorePropsNested(input->children, root, file);
            }
        }
        input = input->next;
    }
}