Rockbox.org home
release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Rockbox mail archive

Subject: Re: need a function to delete an (empty) directory
From: [IDC]Dragon (idc-dragon_at_gmx.de)
Date: 2004-04-09


> Does somebody have a rmdir function "in the drawer", or have I overlooked
> a possible way?
> I don't feel like messing around in that part of the code, would welcome
> some help.

I had a deeper look, to my best understanding I've written the function
below, from tidbits of the directory and file delete code. (What does
fat_truncate do?) But it doesn't seem to have an effect at all, the directory stays. The
file and FAT code is very sparsely commented, hence the cc to the authors.
;)

Sorry for bothering,
Jörg

int rmdir(char* name)
{
    int rc;
    DIR* dir;
    struct dirent* entry;
    
    dir = opendir(name);
    if (!dir)
    {
        errno = ENOENT; /* open error */
        return -1;
    }

    /* check if the directory is empty */
    while ((entry = readdir(dir)))
    {
        if (strcmp(entry->d_name, ".") &&
            strcmp(entry->d_name, ".."))
        {
            DEBUGF("rmdir error: not empty\n");
            errno = ENOTEMPTY;
            closedir(dir);
            return -1;
        }
    }

    rc = fat_truncate(&(dir->fatdir.file));
    if ( rc < 0 ) {
        DEBUGF("Failed truncating dir: %d\n", rc);
        errno = EIO;
        rc = -1;
    }

    rc = fat_remove(&(dir->fatdir.file));
    if ( rc < 0 ) {
        DEBUGF("Failed removing dir: %d\n", rc);
        errno = EIO;
        rc = -1;
    }

    closedir(dir);
    
    return rc;
}

-- 
NEU : GMX Internet.FreeDSL
Ab sofort DSL-Tarif ohne Grundgebühr: http://www.gmx.net/info

_______________________________________________ http://cool.haxx.se/mailman/listinfo/rockbox



Page was last modified "Jan 10 2012" The Rockbox Crew
aaa