From db4b84bc5c72025021eb4139148919ac55df3687 Mon Sep 17 00:00:00 2001 From: James Turner Date: Sun, 24 Oct 2010 07:09:05 +0100 Subject: [PATCH] Convert nasal directory() helper to use simgear::Dir --- src/Scripting/NasalSys.cxx | 39 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/src/Scripting/NasalSys.cxx b/src/Scripting/NasalSys.cxx index 17fdb67d5..72c964c04 100644 --- a/src/Scripting/NasalSys.cxx +++ b/src/Scripting/NasalSys.cxx @@ -14,12 +14,11 @@ #include #include -#include - #include #include #include #include +#include #include #include #include @@ -364,15 +363,17 @@ static naRef f_directory(naContext c, naRef me, int argc, naRef* args) { if(argc != 1 || !naIsString(args[0])) naRuntimeError(c, "bad arguments to directory()"); - naRef ldir = args[0]; - ulDir* dir = ulOpenDir(naStr_data(args[0])); - if(!dir) return naNil(); + + simgear::Dir d(SGPath(naStr_data(args[0]))); + if(!d.exists()) return naNil(); naRef result = naNewVector(c); - ulDirEnt* dent; - while((dent = ulReadDir(dir))) - naVec_append(result, naStr_fromdata(naNewString(c), dent->d_name, - strlen(dent->d_name))); - ulCloseDir(dir); + + simgear::PathList paths = d.children(simgear::Dir::TYPE_FILE | simgear::Dir::TYPE_DIR); + for (unsigned int i=0; iget_fg_root()); - p.append("Nasal"); - ulDirEnt* dent; - ulDir* dir = ulOpenDir(p.c_str()); - while(dir && (dent = ulReadDir(dir)) != 0) { - SGPath fullpath(p); - fullpath.append(dent->d_name); - SGPath file(dent->d_name); - if(file.extension() != "nas") continue; - loadModule(fullpath, file.base().c_str()); + simgear::Dir nasalDir(SGPath(globals->get_fg_root(), "Nasal")); + simgear::PathList scripts = nasalDir.children(simgear::Dir::TYPE_FILE, ".nas"); + + for (unsigned int i=0; i