2 * Copyright (c) 2000, 2001 Red Hat, Inc.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * A copy of the GNU General Public License can be found at
12 * Written by DJ Delorie <dj@cygnus.com>
16 /* The purpose of this file is to run all the post-install scripts
17 in their various forms. */
20 static const char *cvsid
=
28 #include "FindVisitor.h"
29 #include "FilterVisitor.h"
30 #include "package_db.h"
31 #include "package_meta.h"
33 class RunFindVisitor
: public FindVisitor
37 virtual void visitFile(String
const &basePath
, const WIN32_FIND_DATA
*theFile
)
39 run_script ("/etc/postinstall/", theFile
->cFileName
, TRUE
);
41 virtual ~ RunFindVisitor () {}
43 RunFindVisitor (RunFindVisitor
const &);
44 RunFindVisitor
& operator= (RunFindVisitor
const &);
48 do_postinstall (HINSTANCE h
, HWND owner
)
52 SetCurrentDirectory (get_root_dir ().cstr_oneuse());
54 PackageDBConnectedIterator i
= db
.connectedBegin ();
55 while (i
!= db
.connectedEnd ())
57 packagemeta
& pkg
= **i
;
59 for (std::vector
<Script
>::iterator script
=pkg
.installed
.scripts().begin(); script
!= pkg
.installed
.scripts().end(); ++script
)
60 run_script ("/etc/postinstall/", script
->baseName(), TRUE
);
63 RunFindVisitor myVisitor
;
64 ExcludeNameFilter
notDone("*.done");
65 FilterVisitor
excludeDoneVisitor(&myVisitor
, ¬Done
);
66 String postinst
= cygpath ("/etc/postinstall");
67 Find (postinst
).accept (excludeDoneVisitor
);