         # https://github.com/sagemathinc/cocalc/issues/2400
         path = decodeURIComponent(req.path.slice(base.length).trim())
         hidden = req.query.hidden
+        ###  # this is the far slower fork and use python version:
         exports.get_listing1 path, hidden, (err, listing) ->
             if err
                 res.json({error:err})
             else
                 res.json(listing)
         ###
-        exports.get_listing path, hidden, (err, info) ->
+
+        # Fast -- do directly in this process.
+        exports.get_listing0 path, hidden, (err, info) ->
             if err
                 res.json({error:err})
             else
                 res.json({files:info})
-        ###
 
     return router
 

        if not hidden
            files = (file for file in files when file[0] != '.')

        get_metadata = (file, cb) ->
            obj = {name:file}
            # use lstat instead of stat so it works on symlinks too
            fs.lstat dir + '/' + file, (err, stats) ->
                if err
                    obj.error = err
                else
                    if stats.isDirectory()
                        obj.isdir = true


misc_node = require('smc-util-node/misc_node')

# This exposes the old cc-ls python script. This is basically 100x slower, probably
# due mainly to starting python, but works in all cases: symlinks, bad timestamps, etc.
exports.get_listing1 = (path, hidden, cb) ->
    dir = HOME + '/' + path
    if hidden
