aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/pool/main.cpp
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2003-12-17 03:37:55 +0000
committerThomas Grill <xovo@users.sourceforge.net>2003-12-17 03:37:55 +0000
commit09caaa0fed198a2b62fc154f04c66dd7c7369ce8 (patch)
treec087517bbd436098eb309c3938d1674c84f56a01 /externals/grill/pool/main.cpp
parent572eda470c0209a625904ac7658a0c93cc4fff65 (diff)
""
svn path=/trunk/; revision=1225
Diffstat (limited to 'externals/grill/pool/main.cpp')
-rw-r--r--externals/grill/pool/main.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/externals/grill/pool/main.cpp b/externals/grill/pool/main.cpp
index f9b6993c..5f75f07d 100644
--- a/externals/grill/pool/main.cpp
+++ b/externals/grill/pool/main.cpp
@@ -43,12 +43,14 @@ protected:
// handle directories
V m_getdir();
- V m_mkdir(I argc,const A *argv,BL abs = true); // make and change to dir
+ V m_mkdir(I argc,const A *argv,BL abs = true,BL chg = false); // make (and change) to dir
+ V m_mkchdir(I argc,const A *argv) { m_mkdir(argc,argv,true,true); } // make and change to dir
V m_chdir(I argc,const A *argv,BL abs = true); // change to dir
V m_rmdir(I argc,const A *argv,BL abs = true); // remove dir
V m_updir(I argc,const A *argv); // one or more levels up
V m_mksub(I argc,const A *argv) { m_mkdir(argc,argv,false); }
+ V m_mkchsub(I argc,const A *argv) { m_mkdir(argc,argv,false,true); }
V m_chsub(I argc,const A *argv) { m_chdir(argc,argv,false); }
V m_rmsub(I argc,const A *argv) { m_rmdir(argc,argv,false); }
@@ -162,10 +164,12 @@ private:
FLEXT_CALLBACK(m_getdir)
FLEXT_CALLBACK_V(m_mkdir)
FLEXT_CALLBACK_V(m_chdir)
+ FLEXT_CALLBACK_V(m_mkchdir)
FLEXT_CALLBACK_V(m_updir)
FLEXT_CALLBACK_V(m_rmdir)
FLEXT_CALLBACK_V(m_mksub)
FLEXT_CALLBACK_V(m_chsub)
+ FLEXT_CALLBACK_V(m_mkchsub)
FLEXT_CALLBACK_V(m_rmsub)
FLEXT_CALLBACK_V(m_set)
@@ -240,10 +244,12 @@ V pool::setup(t_classid c)
FLEXT_CADDMETHOD_(c,0,"getdir",m_getdir);
FLEXT_CADDMETHOD_(c,0,"mkdir",m_mkdir);
FLEXT_CADDMETHOD_(c,0,"chdir",m_chdir);
+ FLEXT_CADDMETHOD_(c,0,"mkchdir",m_mkchdir);
FLEXT_CADDMETHOD_(c,0,"rmdir",m_rmdir);
FLEXT_CADDMETHOD_(c,0,"updir",m_updir);
FLEXT_CADDMETHOD_(c,0,"mksub",m_mksub);
FLEXT_CADDMETHOD_(c,0,"chsub",m_chsub);
+ FLEXT_CADDMETHOD_(c,0,"mkchsub",m_mkchsub);
FLEXT_CADDMETHOD_(c,0,"rmsub",m_rmsub);
FLEXT_CADDMETHOD_(c,0,"set",m_set);
@@ -380,17 +386,21 @@ V pool::getdir(const S *tag)
V pool::m_getdir() { getdir(MakeSymbol("getdir")); }
-V pool::m_mkdir(I argc,const A *argv,BL abs)
+V pool::m_mkdir(I argc,const A *argv,BL abs,BL chg)
{
+ const char *nm = chg?"mkchdir":"mkdir";
if(!ValChk(argc,argv))
- post("%s - mkdir: invalid directory name",thisName());
+ post("%s - %s: invalid directory name",thisName(),nm);
else {
AtomList ndir;
if(abs) ndir(argc,argv);
else (ndir = curdir).Append(argc,argv);
if(!pl->MkDir(ndir,vcnt,dcnt)) {
- post("%s - mkdir: directory couldn't be created",thisName());
+ post("%s - %s: directory couldn't be created",thisName(),nm);
}
+ else if(chg)
+ // change to newly created directory
+ curdir = ndir;
}
echodir();