コード例 #1
0
ファイル: list.cpp プロジェクト: dyfet/cape-minishell
static void add(const char *fpath, const char *prefix = ".")
{
    string_t fn = str(prefix) + "/" + str(fpath);
    char buf[512];
    fsys::fileinfo_t inode;
    int err;
    static unsigned long uniq = 0;

    if(fsys::is_hidden(*fn) && !is(all))
        return;

    err = fsys::info(*fn, &inode);
    if(err) {
        report(fpath, err);
        memset(&inode, 0, sizeof(inode));
    }

    size_t size = strlen(fpath);
    caddr_t mp = (caddr_t)mpager.zalloc(sizeof(entry));
    char *path = mpager.dup(fpath);
    char *id = path;

    const char *fname = strrchr(fpath, '/');
    if(!fname)
        fname = strrchr(fpath, '\\');

    if(fname)
        ++fname;
    else
        fname = path;

    if(is(timesort)) {
        struct tm *dt = localtime(&inode.st_mtime);
        snprintf(buf, sizeof(buf), "%04d%02d%02d %02d%02d%02d%s %08ld",
            dt->tm_year, dt->tm_mon, dt->tm_mday, dt->tm_hour, dt->tm_min, dt->tm_sec, fname, ++uniq);
        id = mpager.dup(buf);
    }

    entry *fp = new(mp) entry(&files, id);
    fp->name = path;
    fp->inode = inode;
    if(fsys::is_dir(&inode))
        ++size;
    if(size > widest)
        widest = size;
}
コード例 #2
0
ファイル: digests.cpp プロジェクト: kwirk/sipwitch
key::key(const char *keyid, const char *keyhash) :
LinkedObject(&private_paths[NamedObject::keyindex(keyid, INDEX_KEYSIZE)])
{
    id = private_cache.dup(keyid);
    hash = private_cache.dup(keyhash);
}