Doxygen
Portable 命名空间参考

函数

int system (const QCString &command, const QCString &args, bool commandHasConsole=true)
 
unsigned int pid ()
 
QCString getenv (const QCString &variable)
 
void setenv (const QCString &variable, const QCString &value)
 
void unsetenv (const QCString &variable)
 
portable_off_t fseek (FILE *f, portable_off_t offset, int whence)
 
portable_off_t ftell (FILE *f)
 
FILE * fopen (const QCString &fileName, const QCString &mode)
 
int fclose (FILE *f)
 
void unlink (const QCString &fileName)
 
QCString pathSeparator ()
 
QCString pathListSeparator ()
 
const char * ghostScriptCommand ()
 
const char * commandExtension ()
 
bool fileSystemIsCaseSensitive ()
 
FILE * popen (const QCString &name, const QCString &type)
 
int pclose (FILE *stream)
 
void sysTimerStart ()
 
void sysTimerStop ()
 
double getSysElapsedTime ()
 
void sleep (int ms)
 
bool isAbsolutePath (const QCString &fileName)
 
void correct_path ()
 Correct a possible wrong PATH variable 更多...
 
void setShortDir ()
 
const char * strnstr (const char *haystack, const char *needle, size_t haystack_len)
 
const char * devNull ()
 
bool checkForExecutable (const QCString &fileName)
 
size_t recodeUtf8StringToW (const QCString &inputStr, uint16_t **buf)
 

函数说明

◆ checkForExecutable()

bool Portable::checkForExecutable ( const QCString fileName)

在文件 portable.cpp396 行定义.

397 {
398 #if defined(_WIN32) && !defined(__CYGWIN__)
399  char *extensions[] = {".bat",".com",".exe"};
400  for (int i = 0; i < sizeof(extensions) / sizeof(*extensions); i++)
401  {
402  if (ExistsOnPath(fileName + extensions[i])) return true;
403  }
404  return false;
405 #else
406  return ExistsOnPath(fileName);
407 #endif
408 }

引用了 ExistsOnPath().

被这些函数引用 FormulaManager::generateImages().

◆ commandExtension()

const char * Portable::commandExtension ( )

在文件 portable.cpp434 行定义.

435 {
436 #if defined(_WIN32) && !defined(__CYGWIN__)
437  return ".exe";
438 #else
439  return "";
440 #endif
441 }

被这些函数引用 runPlantumlContent() , 以及 writeDiaGraphFromFile().

◆ correct_path()

void Portable::correct_path ( )

Correct a possible wrong PATH variable

This routine was inspired by the cause for bug 766059 was that in the Windows path there were forward slashes.

在文件 portable.cpp515 行定义.

516 {
517 #if defined(_WIN32) && !defined(__CYGWIN__)
518  QCString p = Portable::getenv("PATH");
519  if (p.isEmpty()) return; // no path nothing to correct
520  QCString result = substitute(p,"/","\\");
521  if (result!=p) Portable::setenv("PATH",result.data());
522 #endif
523 }

引用了 QCString::data(), getenv(), QCString::isEmpty(), setenv() , 以及 substitute().

被这些函数引用 initDoxygen().

◆ devNull()

const char * Portable::devNull ( )

在文件 portable.cpp595 行定义.

596 {
597 #if defined(_WIN32) && !defined(__CYGWIN__)
598  return "NUL";
599 #else
600  return "/dev/null";
601 #endif
602 }

被这些函数引用 determineInkscapeVersion() , 以及 FormulaManager::generateImages().

◆ fclose()

int Portable::fclose ( FILE *  f)

◆ fileSystemIsCaseSensitive()

bool Portable::fileSystemIsCaseSensitive ( )

在文件 portable.cpp443 行定义.

444 {
445 #if defined(_WIN32) || defined(macintosh) || defined(__MACOSX__) || defined(__APPLE__) || defined(__CYGWIN__)
446  return FALSE;
447 #else
448  return TRUE;
449 #endif
450 }

引用了 FALSE , 以及 TRUE.

被这些函数引用 findFileDef(), getFilterFromList() , 以及 patternMatch().

◆ fopen()

FILE * Portable::fopen ( const QCString fileName,
const QCString mode 
)

在文件 portable.cpp322 行定义.

323 {
324 #if defined(_WIN32) && !defined(__CYGWIN__)
325  uint16_t *fn = 0;
326  size_t fn_len = recodeUtf8StringToW(fileName,&fn);
327  uint16_t *m = 0;
328  size_t m_len = recodeUtf8StringToW(mode,&m);
329  FILE *result = 0;
330  if (fn_len!=(size_t)-1 && m_len!=(size_t)-1)
331  {
332  result = _wfopen((wchar_t*)fn,(wchar_t*)m);
333  }
334  delete[] fn;
335  delete[] m;
336  return result;
337 #else
338  return ::fopen(fileName.data(),mode.data());
339 #endif
340 }

引用了 QCString::data() , 以及 recodeUtf8StringToW().

被这些函数引用 checkPngResult(), FilterCache::getFileContents(), initWarningFormat(), DotRunner::readBoundingBox(), DotRunner::run() , 以及 OutputGenerator::startPlainFile().

◆ fseek()

portable_off_t Portable::fseek ( FILE *  f,
portable_off_t  offset,
int  whence 
)

在文件 portable.cpp300 行定义.

301 {
302 #if defined(__MINGW32__)
303  return fseeko64(f,offset,whence);
304 #elif defined(_WIN32) && !defined(__CYGWIN__)
305  return _fseeki64(f,offset,whence);
306 #else
307  return fseeko(f,offset,whence);
308 #endif
309 }

被这些函数引用 FilterCache::getFileContents().

◆ ftell()

portable_off_t Portable::ftell ( FILE *  f)

在文件 portable.cpp311 行定义.

312 {
313 #if defined(__MINGW32__)
314  return ftello64(f);
315 #elif defined(_WIN32) && !defined(__CYGWIN__)
316  return _ftelli64(f);
317 #else
318  return ftello(f);
319 #endif
320 }

◆ getenv()

QCString Portable::getenv ( const QCString variable)

在文件 portable.cpp279 行定义.

280 {
281 #if defined(_WIN32) && !defined(__CYGWIN__)
282  return ::getenv(variable.data());
283 #else
284  if(!environmentLoaded) // if the environment variables are not loaded already...
285  { // ...call loadEnvironment to store them in class
286  loadEnvironment();
287  }
288 
289  if (proc_env.find(variable.str()) != proc_env.end())
290  {
291  return QCString(proc_env[variable.str()]);
292  }
293  else
294  {
295  return QCString();
296  }
297 #endif
298 }

引用了 QCString::data(), environmentLoaded, loadEnvironment(), proc_env , 以及 QCString::str().

被这些函数引用 correct_path(), ExistsOnPath(), getCurrentDateTime(), initDoxygen(), parseInput() , 以及 setDotFontPath().

◆ getSysElapsedTime()

double Portable::getSysElapsedTime ( )

在文件 portable.cpp482 行定义.

483 {
484  return g_sysElapsedTime;
485 }

引用了 g_sysElapsedTime.

被这些函数引用 generateOutput().

◆ ghostScriptCommand()

const char * Portable::ghostScriptCommand ( )

在文件 portable.cpp410 行定义.

411 {
412 #if defined(_WIN32) && !defined(__CYGWIN__)
413  static char *gsexe = NULL;
414  if (!gsexe)
415  {
416  char *gsExec[] = {"gswin32c.exe","gswin64c.exe"};
417  for (int i = 0; i < sizeof(gsExec) / sizeof(*gsExec); i++)
418  {
419  if (ExistsOnPath(gsExec[i]))
420  {
421  gsexe = gsExec[i];
422  return gsexe;
423  }
424  }
425  gsexe = gsExec[0];
426  return gsexe;
427  }
428  return gsexe;
429 #else
430  return "gs";
431 #endif
432 }

引用了 ExistsOnPath().

被这些函数引用 FormulaManager::generateImages() , 以及 writeMakeBat().

◆ isAbsolutePath()

bool Portable::isAbsolutePath ( const QCString fileName)

在文件 portable.cpp496 行定义.

497 {
498  const char *fn = fileName.data();
499 # ifdef _WIN32
500  if (fileName.length()>1 && isalpha(fileName[0]) && fileName[1]==':') fn+=2;
501 # endif
502  char const fst = fn[0];
503  if (fst == '/') return true;
504 # ifdef _WIN32
505  if (fst == '\\') return true;
506 # endif
507  return false;
508 }

引用了 QCString::data(), reg::isalpha() , 以及 QCString::length().

被这些函数引用 generateOutput(), Markdown::processLink() , 以及 DocParser::readTextFileByName().

◆ pathListSeparator()

QCString Portable::pathListSeparator ( )

在文件 portable.cpp356 行定义.

357 {
358 #if defined(_WIN32) && !defined(__CYGWIN__)
359  return ";";
360 #else
361  return ":";
362 #endif
363 }

被这些函数引用 ExistsOnPath(), parseInput(), runPlantumlContent() , 以及 setDotFontPath().

◆ pathSeparator()

◆ pclose()

int Portable::pclose ( FILE *  stream)

在文件 portable.cpp461 行定义.

462 {
463  #if defined(_MSC_VER) || defined(__BORLANDC__)
464  return ::_pclose(stream);
465  #else
466  return ::pclose(stream);
467  #endif
468 }

被这些函数引用 FileDefImpl::acquireFileVersion(), FilterCache::getFileContents(), readInputFile() , 以及 stackTrace().

◆ pid()

unsigned int Portable::pid ( )

在文件 portable.cpp207 行定义.

208 {
209  unsigned int pid;
210 #if !defined(_WIN32) || defined(__CYGWIN__)
211  pid = (unsigned int)getpid();
212 #else
213  pid = (unsigned int)GetCurrentProcessId();
214 #endif
215  return pid;
216 }

被这些函数引用 parseInput() , 以及 system().

◆ popen()

FILE * Portable::popen ( const QCString name,
const QCString type 
)

在文件 portable.cpp452 行定义.

453 {
454  #if defined(_MSC_VER) || defined(__BORLANDC__)
455  return ::_popen(name.data(),type.data());
456  #else
457  return ::popen(name.data(),type.data());
458  #endif
459 }

引用了 QCString::data().

被这些函数引用 FileDefImpl::acquireFileVersion(), FilterCache::getFileContents(), readInputFile() , 以及 stackTrace().

◆ recodeUtf8StringToW()

size_t Portable::recodeUtf8StringToW ( const QCString inputStr,
uint16_t **  buf 
)

在文件 portable.cpp604 行定义.

605 {
606  if (inputStr.isEmpty() || outBuf==0) return 0; // empty input or invalid output
607  void *handle = portable_iconv_open("UTF-16LE","UTF-8");
608  if (handle==(void *)(-1)) return 0; // invalid encoding
609  size_t len = inputStr.length();
610  uint16_t *buf = new uint16_t[len+1];
611  *outBuf = buf;
612  size_t inRemains = len;
613  size_t outRemains = len*sizeof(uint16_t)+2; // chars + \0
614  const char *p = inputStr.data();
615  portable_iconv(handle,&p,&inRemains,(char**)&buf,&outRemains);
616  *buf=0;
617  portable_iconv_close(handle);
618  return len;
619 }

引用了 QCString::data(), QCString::isEmpty(), QCString::length(), portable_iconv(), portable_iconv_close() , 以及 portable_iconv_open().

被这些函数引用 fopen() , 以及 system().

◆ setenv()

void Portable::setenv ( const QCString variable,
const QCString value 
)

在文件 portable.cpp246 行定义.

247 {
248 #if defined(_WIN32) && !defined(__CYGWIN__)
249  SetEnvironmentVariable(name.data(),!value.isEmpty() ? value.data() : "");
250 #else
251  if(!environmentLoaded) // if the environment variables are not loaded already...
252  { // ...call loadEnvironment to store them in class
253  loadEnvironment();
254  }
255 
256  proc_env[name.str()] = value.str(); // create or replace existing value
257 #endif
258 }

引用了 QCString::data(), environmentLoaded, QCString::isEmpty(), loadEnvironment(), proc_env , 以及 QCString::str().

被这些函数引用 correct_path(), initDoxygen(), parseInput(), setDotFontPath() , 以及 unsetDotFontPath().

◆ setShortDir()

void Portable::setShortDir ( )

在文件 portable.cpp534 行定义.

535 {
536 #if defined(_WIN32) && !defined(__CYGWIN__)
537  long length = 0;
538  TCHAR* buffer = NULL;
539  // First obtain the size needed by passing NULL and 0.
540  length = GetShortPathName(Dir::currentDirPath().c_str(), NULL, 0);
541  // Dynamically allocate the correct size
542  // (terminating null char was included in length)
543  buffer = new TCHAR[length];
544  // Now simply call again using same (long) path.
545  length = GetShortPathName(Dir::currentDirPath().c_str(), buffer, length);
546  // Set the correct directory (short name)
547  Dir::setCurrent(buffer);
548  delete [] buffer;
549 #endif
550 }

引用了 Dir::currentDirPath() , 以及 Dir::setCurrent().

被这些函数引用 generateOutput().

◆ sleep()

void Portable::sleep ( int  ms)

在文件 portable.cpp487 行定义.

488 {
489 #if defined(_WIN32) && !defined(__CYGWIN__)
490  Sleep(ms);
491 #else
492  usleep(1000*ms);
493 #endif
494 }

被这些函数引用 DotManager::run().

◆ strnstr()

const char * Portable::strnstr ( const char *  haystack,
const char *  needle,
size_t  haystack_len 
)

在文件 portable.cpp581 行定义.

582 {
583  size_t needle_len = strnlen(needle, haystack_len);
584  if (needle_len < haystack_len || !needle[needle_len])
585  {
586  const char *x = portable_memmem(haystack, haystack_len, needle, needle_len);
587  if (x && !memchr(haystack, 0, x - haystack))
588  {
589  return x;
590  }
591  }
592  return 0;
593 }

引用了 portable_memmem().

被这些函数引用 Markdown::addStrEscapeUtf8Nbsp().

◆ system()

int Portable::system ( const QCString command,
const QCString args,
bool  commandHasConsole = true 
)

taken from the system() manpage on my Linux box

在文件 portable.cpp42 行定义.

43 {
44 
45  if (command.isEmpty()) return 1;
46 
47 #if defined(_WIN32) && !defined(__CYGWIN__)
48  QCString commandCorrectedPath = substitute(command,'/','\\');
49  QCString fullCmd=commandCorrectedPath;
50 #else
51  QCString fullCmd=command;
52 #endif
53  fullCmd=fullCmd.stripWhiteSpace();
54  if (fullCmd.at(0)!='"' && fullCmd.find(' ')!=-1)
55  {
56  // add quotes around command as it contains spaces and is not quoted already
57  fullCmd="\""+fullCmd+"\"";
58  }
59  fullCmd += " ";
60  fullCmd += args;
61 #ifndef NODEBUG
62  Debug::print(Debug::ExtCmd,0,"Executing external command `%s`\n",qPrint(fullCmd));
63 #endif
64 
65 #if !defined(_WIN32) || defined(__CYGWIN__)
66  (void)commandHasConsole;
67  /*! taken from the system() manpage on my Linux box */
68  int pid,status=0;
69 
70 #ifdef _OS_SOLARIS // for Solaris we use vfork since it is more memory efficient
71 
72  // on Solaris fork() duplicates the memory usage
73  // so we use vfork instead
74 
75  // spawn shell
76  if ((pid=vfork())<0)
77  {
78  status=-1;
79  }
80  else if (pid==0)
81  {
82  execl("/bin/sh","sh","-c",fullCmd.data(),(char*)0);
83  _exit(127);
84  }
85  else
86  {
87  while (waitpid(pid,&status,0 )<0)
88  {
89  if (errno!=EINTR)
90  {
91  status=-1;
92  break;
93  }
94  }
95  }
96  return status;
97 
98 #else // Other Unices just use fork
99 
100  pid = fork();
101  if (pid==-1)
102  {
103  perror("fork error");
104  return -1;
105  }
106  if (pid==0)
107  {
108  const char * argv[4];
109  argv[0] = "sh";
110  argv[1] = "-c";
111  argv[2] = fullCmd.data();
112  argv[3] = 0;
113  execve("/bin/sh",(char * const *)argv,environ);
114  exit(127);
115  }
116  for (;;)
117  {
118  if (waitpid(pid,&status,0)==-1)
119  {
120  if (errno!=EINTR) return -1;
121  }
122  else
123  {
124  if (WIFEXITED(status))
125  {
126  return WEXITSTATUS(status);
127  }
128  else
129  {
130  return status;
131  }
132  }
133  }
134 #endif // !_OS_SOLARIS
135 
136 #else // Win32 specific
137  if (commandHasConsole)
138  {
139  return ::system(fullCmd.data());
140  }
141  else
142  {
143  // Because ShellExecuteEx can delegate execution to Shell extensions
144  // (data sources, context menu handlers, verb implementations) that
145  // are activated using Component Object Model (COM), COM should be
146  // initialized before ShellExecuteEx is called. Some Shell extensions
147  // require the COM single-threaded apartment (STA) type.
148  // For that case COM is initialized as follows
149  CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
150 
151  uint16_t *commandw = NULL;
152  recodeUtf8StringToW( commandCorrectedPath, &commandw );
153  uint16_t *argsw = NULL;
154  recodeUtf8StringToW( args, &argsw );
155 
156  // gswin32 is a GUI api which will pop up a window and run
157  // asynchronously. To prevent both, we use ShellExecuteEx and
158  // WaitForSingleObject (thanks to Robert Golias for the code)
159 
160  SHELLEXECUTEINFOW sInfo = {
161  sizeof(SHELLEXECUTEINFOW), /* structure size */
162  SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI, /* tell us the process
163  * handle so we can wait till it's done |
164  * do not display msg box if error
165  */
166  NULL, /* window handle */
167  NULL, /* action to perform: open */
168  (LPCWSTR)commandw, /* file to execute */
169  (LPCWSTR)argsw, /* argument list */
170  NULL, /* use current working dir */
171  SW_HIDE, /* minimize on start-up */
172  0, /* application instance handle */
173  NULL, /* ignored: id list */
174  NULL, /* ignored: class name */
175  NULL, /* ignored: key class */
176  0, /* ignored: hot key */
177  NULL, /* ignored: icon */
178  NULL /* resulting application handle */
179  };
180 
181  if (!ShellExecuteExW(&sInfo))
182  {
183  delete[] commandw;
184  delete[] argsw;
185  return -1;
186  }
187  else if (sInfo.hProcess) /* executable was launched, wait for it to finish */
188  {
189  WaitForSingleObject(sInfo.hProcess,INFINITE);
190  /* get process exit code */
191  DWORD exitCode;
192  if (!GetExitCodeProcess(sInfo.hProcess,&exitCode))
193  {
194  exitCode = -1;
195  }
196  CloseHandle(sInfo.hProcess);
197  delete[] commandw;
198  delete[] argsw;
199  return exitCode;
200  }
201  }
202 #endif
203  return 1; // we should never get here
204 
205 }

引用了 QCString::at(), QCString::data(), environ, Debug::ExtCmd, QCString::find(), QCString::isEmpty(), pid(), Debug::print(), qPrint(), recodeUtf8StringToW(), QCString::stripWhiteSpace() , 以及 substitute().

被这些函数引用 createSVG(), FlowChart::createSVG(), determineInkscapeVersion(), Htags::execute(), DocParser::findAndCopyImage(), FormulaManager::generateImages(), generateOutput(), CitationManager::generatePage(), DotRunner::run(), runPlantumlContent(), writeDiaGraphFromFile(), ClassDiagram::writeFigure() , 以及 writeMscGraphFromFile().

◆ sysTimerStart()

void Portable::sysTimerStart ( )

◆ sysTimerStop()

void Portable::sysTimerStop ( )

在文件 portable.cpp475 行定义.

476 {
477  std::chrono::steady_clock::time_point endTime = std::chrono::steady_clock::now();
478  g_sysElapsedTime+= std::chrono::duration_cast<
479  std::chrono::microseconds>(endTime - g_startTime).count()/1000000.0;
480 }

引用了 g_startTime , 以及 g_sysElapsedTime.

被这些函数引用 determineInkscapeVersion(), Htags::execute(), DocParser::findAndCopyImage(), FormulaManager::generateImages(), generateOutput(), CitationManager::generatePage(), DotManager::run(), runPlantumlContent(), writeDiaGraphFromFile(), ClassDiagram::writeFigure() , 以及 writeMscGraphFromFile().

◆ unlink()

void Portable::unlink ( const QCString fileName)

在文件 portable.cpp525 行定义.

526 {
527 #if defined(_WIN32) && !defined(__CYGWIN__)
528  _unlink(fileName.data());
529 #else
530  ::unlink(fileName.data());
531 #endif
532 }

引用了 QCString::data().

被这些函数引用 DotRunner::run().

◆ unsetenv()

void Portable::unsetenv ( const QCString variable)

在文件 portable.cpp260 行定义.

261 {
262 #if defined(_WIN32) && !defined(__CYGWIN__)
263  SetEnvironmentVariable(variable.data(),0);
264 #else
265  /* Some systems don't have unsetenv(), so we do it ourselves */
266  if (variable.isEmpty() || variable.find('=')!=-1)
267  {
268  return; // not properly formatted
269  }
270 
271  auto it = proc_env.find(variable.str());
272  if (it != proc_env.end())
273  {
274  proc_env.erase(it);
275  }
276 #endif
277 }

引用了 QCString::data(), QCString::find(), QCString::isEmpty(), proc_env , 以及 QCString::str().

被这些函数引用 setDotFontPath() , 以及 unsetDotFontPath().

Debug::ExtCmd
@ ExtCmd
Definition: debug.h:36
reg::isalpha
static bool isalpha(char c)
Definition: regex.cpp:38
Dir::currentDirPath
static std::string currentDirPath()
Definition: dir.cpp:282
portable_iconv
size_t portable_iconv(void *cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
Portable::popen
FILE * popen(const QCString &name, const QCString &type)
Definition: portable.cpp:452
Portable::fopen
FILE * fopen(const QCString &fileName, const QCString &mode)
Definition: portable.cpp:322
QCString::length
uint length() const
Returns the length of the string, not counting the 0-terminator.
Definition: qcstring.h:147
loadEnvironment
void loadEnvironment()
Definition: portable.cpp:219
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty
Definition: qcstring.h:144
environmentLoaded
static bool environmentLoaded
Definition: portable.cpp:34
ExistsOnPath
static bool ExistsOnPath(const QCString &fileName)
Definition: portable.cpp:365
QCString::str
std::string str() const
Definition: qcstring.h:442
QCString::at
char & at(size_t i)
Returns a reference to the character at index i.
Definition: qcstring.h:477
portable_iconv_open
void * portable_iconv_open(const char *tocode, const char *fromcode)
QCString::find
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:38
Portable::recodeUtf8StringToW
size_t recodeUtf8StringToW(const QCString &inputStr, uint16_t **buf)
Definition: portable.cpp:604
Portable::getenv
QCString getenv(const QCString &variable)
Definition: portable.cpp:279
QCString::stripWhiteSpace
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition: qcstring.h:243
Portable::fclose
int fclose(FILE *f)
Definition: portable.cpp:342
Debug::print
static void print(DebugMask mask, int prio, const char *fmt,...)
Definition: debug.cpp:57
Portable::pclose
int pclose(FILE *stream)
Definition: portable.cpp:461
TRUE
#define TRUE
Definition: qcstring.h:36
Portable::system
int system(const QCString &command, const QCString &args, bool commandHasConsole=true)
Definition: portable.cpp:42
Dir::setCurrent
static bool setCurrent(const std::string &path)
Definition: dir.cpp:290
g_sysElapsedTime
static double g_sysElapsedTime
Definition: portable.cpp:38
portable_memmem
static const char * portable_memmem(const char *haystack, size_t haystack_len, const char *needle, size_t needle_len)
Definition: portable.cpp:553
g_startTime
static std::chrono::steady_clock::time_point g_startTime
Definition: portable.cpp:39
substitute
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
Definition: qcstring.cpp:465
proc_env
static std::map< std::string, std::string > proc_env
Definition: portable.cpp:35
qPrint
const char * qPrint(const char *s)
Definition: qcstring.h:589
Portable::pid
unsigned int pid()
Definition: portable.cpp:207
QCString::data
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string
Definition: qcstring.h:153
Portable::setenv
void setenv(const QCString &variable, const QCString &value)
Definition: portable.cpp:246
portable_iconv_close
int portable_iconv_close(void *cd)
Portable::unlink
void unlink(const QCString &fileName)
Definition: portable.cpp:525
environ
char ** environ
FALSE
#define FALSE
Definition: qcstring.h:33
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:108