source: trunk/gsdl/lib/gsdltools.cpp@ 1310

Last change on this file since 1310 was 1310, checked in by sjboddie, 24 years ago

Removed CVS logging information from source files

  • Property svn:keywords set to Author Date Id Revision
File size: 2.8 KB
RevLine 
[1076]1/**********************************************************************
2 *
3 * gsdltools.cpp --
4 * A component of the Greenstone digital library software
5 * from the New Zealand Digital Library Project at the
6 * University of Waikato, New Zealand.
7 *
8 * Copyright (C) 1999 The New Zealand Digital Library Project
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 *
24 *********************************************************************/
25
26#include "gsdltools.h"
27
28bool littleEndian() {
29 char s[2] = {'\xFE', '\xEF'};
30
31 if (sizeof(unsigned short) == 2)
32 return *(unsigned short*)s == 0xEFFE;
33 else if (sizeof(unsigned int) == 2)
34 return *(unsigned int*)s == 0xEFFE;
35}
36
[1146]37text_t dm_safe (const text_t &instring) {
[1076]38
[1146]39 text_t outstring;
40 text_t::const_iterator here = instring.begin();
41 text_t::const_iterator end = instring.end();
42 while (here != end) {
43 if (*here == '_' || *here == '\\') outstring.push_back('\\');
44 outstring.push_back(*here);
45 here ++;
46 }
47 return outstring;
48}
49
[1176]50// gsdl_system spawns a completely separate program (i.e. the calling
51// program continues and terminates normally). Arguments containing special
52// characters (e.g. '&') should be quoted with ""
53
54// on unix systems youcan get the same effext as this function by doing a
55// system call and putting the spawned process in the background
56// (e.g. system (funcname options &);
57
58#if defined (__WIN32__)
59#include <windows.h>
60void gsdl_system (char *cmd, ostream &logout) {
61
62 STARTUPINFO ps = {sizeof(STARTUPINFO), NULL, NULL, NULL,
63 0, 0, 0, 0, 0, 0,
64 0, 0,
65 0, 0, NULL,
66 NULL, NULL, NULL};
67 PROCESS_INFORMATION pi;
68 BOOL res = CreateProcess(NULL,
69 cmd,
70 NULL,
71 NULL,
72 FALSE,
73 DETACHED_PROCESS,
74 NULL,
75 NULL,
76 &ps,
77 &pi);
78 if (!res) {
79 logout << "Failed to start " << cmd << " process, error code " << GetLastError();
80 }
81
82 CloseHandle(pi.hProcess);
83 CloseHandle(pi.hThread);
84}
85
86#endif
Note: See TracBrowser for help on using the repository browser.