// log recursively all files and directories in src as entries in dest
// dest is created if necessary

// e.g., src = logRecursive: documentation/examples
// ...
//             documentation/examples/sockets/forkserver/handler/

void logRecursive(string src, string dest)
{
    list dirs;
    string next;
    int idx;

    chdir(g_cwd);

    if (!exists(src))
    {
        printf("skipping unavailable directory `", src, "'\n");
        return;
    }

    dirs = findAll("d", src, "");     // find all subdirs

    for (idx = listlen(dirs); idx--; ) // visit all subdirs
    {
        next = "/" + dirs[idx];
        logRecursive(src + next, dest + next);
    }

    logInstall(src, "", dest);
}
