11 #if !defined(WIN32) || defined(__CYGWIN__)    29 #define access(PATH,MODE) _access(PATH,00)    38 int write(
int fd, 
const void* buf, 
int count) 
    40   return write(fd,(
void*)buf,(
size_t)count);
    43 int stat(
const char* fn, 
struct stat* buf)
    45   return stat((
char*)fn, buf);
    56 void NAMD_version(
int *major, 
int *minor, 
int *patchLevel, 
int *releaseType)
    60   int NAMD_patchLevel = 0;
    69   int n = sscanf(vstr, 
"%d%3[^0-9]%d%7[^0-9]%d%c",
    70       &NAMD_major, dot, &NAMD_minor, release, &NAMD_patchLevel, extra);
    72     NAMD_bug(
"Unable to parse NAMD_VERSION from Makefile");
    75     if (strcmp(release, 
"a") == 0 || strcmp(release, 
"alpha") == 0) {
    78     else if (strcmp(release, 
"b") == 0 || strcmp(release, 
"beta") == 0) {
    81     else if (strcmp(release, 
".") == 0 ||
    82              strcmp(release, 
"final") == 0 ||
    83              strcmp(release, 
"release") == 0 ||
    84              strcmp(release, 
"patch") == 0) {
    88       NAMD_bug(
"Unable to parse NAMD_VERSION from Makefile");
    95   if (major != NULL) *major = NAMD_major;
    96   if (minor != NULL) *minor = NAMD_minor;
    97   if (patchLevel != NULL) *patchLevel = NAMD_patchLevel;
    98   if (releaseType != NULL) *releaseType = NAMD_releaseType;
   104    if(a == 0 || b == 0) 
return 0;
   105    else if(a == b) 
return a;
   106    else if(a > b) 
return NAMD_gcd(a-b,b);
   117   rs = 
new char[strlen(s) + 1];
   127   if ( ! err_msg ) err_msg = 
"(unknown error)";
   128   CkPrintf(
"EXITING: %s\n", err_msg);
   130   char repstr[24] = 
"";
   131   if (CmiNumPartitions() > 1
   132       || 
Node::Object()->simParameters->CUDASOAintegrateMode) {
   133     sprintf(repstr,
"REPLICA %d ", CmiMyPartition());
   135     CkAbort(
"%sEXITING: %s\n", repstr, err_msg);
   137   CkError(
"%sEXITING: %s\n", repstr, err_msg);
   138 #if CHARM_VERSION < 61000   149   if ( ! err_msg ) err_msg = 
"(unknown error)";
   150   CkPrintf(
"FATAL ERROR: %s\n", err_msg);
   152   char repstr[24] = 
"";
   153   if (CmiNumPartitions() > 1 || 
   156     sprintf(repstr,
"REPLICA %d ", CmiMyPartition());
   158     CkAbort(
"%sFATAL ERROR: %s\n", repstr, err_msg);
   160   CkError(
"%sFATAL ERROR: %s\n", repstr, err_msg);
   161 #if CHARM_VERSION < 61000   172   if ( ! err_msg ) err_msg = 
"(unknown error)";
   173   const char *sys_err_msg = strerror(errno);
   174   if ( ! sys_err_msg ) sys_err_msg = 
"(unknown error)";
   175   CkPrintf(
"FATAL ERROR: %s: %s\n", err_msg, sys_err_msg);
   177   char repstr[24] = 
"";
   178   if (CmiNumPartitions() > 1 ||
   181     sprintf(repstr,
"REPLICA %d ", CmiMyPartition());
   183     CkAbort(
"%sFATAL ERROR: %s: %s\n", repstr, err_msg, sys_err_msg);
   185   CkError(
"%sFATAL ERROR: %s: %s\n", repstr, err_msg, sys_err_msg);
   186 #if CHARM_VERSION < 61000   197   if ( ! err_msg ) err_msg = 
"(unknown error)";
   198   const char *bug_msg = 
   199     "FATAL ERROR: See http://www.ks.uiuc.edu/Research/namd/bugreport.html";
   200   CkPrintf(
"FATAL ERROR: %s\n%s\n",err_msg, bug_msg);
   202   char repstr[24] = 
"";
   203   if (CmiNumPartitions() > 1 ||
   206     sprintf(repstr,
"REPLICA %d ", CmiMyPartition());
   208     CkAbort(
"%sFATAL ERROR: %s\n%s\n", repstr, err_msg, bug_msg);
   210   CkError(
"%sFATAL ERROR: %s\n%s\n", repstr, err_msg, bug_msg);
   211 #if CHARM_VERSION < 61000   222     rval = access(filename, F_OK);
   223   } 
while ( rval != 0 && errno == EINTR );
   224   if ( rval != 0 && errno != ENOENT ) {
   225     const char *sys_err_msg = strerror(errno);
   226     if ( ! sys_err_msg ) sys_err_msg = 
"(unknown error)";
   228       << filename << 
": " << sys_err_msg << 
"\n" << 
endi;
   238     if ( ! extension ) extension = 
".BAK";
   239     char *backup = 
new char[strlen(filename)+strlen(extension)+1];
   240     strcpy(backup, filename);
   241     strcat(backup, extension);
   242 #if defined(WIN32) && !defined(__CYGWIN__)   243     if ( 
remove(backup) ) 
if ( errno != ENOENT ) {
   244       char *sys_err_msg = strerror(errno);
   245       if ( ! sys_err_msg ) sys_err_msg = 
"(unknown error)";
   247         << backup << 
": " << sys_err_msg << 
"\n" << 
endi;
   251     while ( rename(filename,backup) )
   253       if ( errno == EINTR ) 
continue;
   254       const char *sys_err_msg = strerror(errno);
   255       if ( ! sys_err_msg ) sys_err_msg = 
"(unknown error)";
   256       iout << 
iERROR << 
"Error on renaming file " << filename
   257         << 
" to " << backup << 
": " << sys_err_msg << 
"\n" << 
endi;
   259       if ( errno == EXDEV ) 
continue;
   275   while ( (fd = _open(fname, O_WRONLY|(append?O_APPEND:O_EXCL)|O_CREAT|O_TEXT,_S_IREAD|_S_IWRITE)) < 0) {
   277 #ifdef NAMD_NO_O_EXCL   278   while ( (fd = open(fname, O_WRONLY|(append?O_APPEND:O_TRUNC)|O_CREAT,
   280   while ( (fd = open(fname, O_WRONLY|(append?O_APPEND:O_EXCL)|O_CREAT,
   282                            S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)) < 0) {
   284     if ( errno != EINTR ) {
   286       sprintf(errmsg, 
"Unable to open text file %s", fname);
   295 void NAMD_write(
int fd, 
const char *buf, 
size_t count, 
const char *fname) {
   297 #if defined(WIN32) && !defined(__CYGWIN__)   298     long retval = _write(fd,buf,count);
   300     ssize_t retval = write(fd,buf,count);
   302     if ( retval < 0 && errno == EINTR ) retval = 0;
   305       sprintf(errmsg, 
"Error on writing to file %s", fname);
   308     if ( retval > count ) 
NAMD_bug(
"extra bytes written in NAMD_write()");
   317   while ( _close(fd) ) {
   319   while ( close(fd) ) {
   321     if ( errno != EINTR ) {
   323       sprintf(errmsg, 
"Error on closing file %s", fname);
   341 FILE *
Fopen     (
const char *filename, 
const char *mode)
   346 #if defined(NOCOMPRESSED)   347   if (!stat(filename,&buf))
   350       while ( ! (rval = fopen(filename,mode)) ) {
   351         if ( errno != EINTR ) 
break;
   356   if (!stat(filename,&buf))
   358       if (!S_ISDIR(buf.st_mode)) {
   360         while ( ! (rval = fopen(filename,mode)) ) {
   361           if ( errno != EINTR ) 
break;
   370   command = (
char *)malloc(strlen(filename)+25);
   372   sprintf(command,
"zcat %s.Z",filename);
   373   realfilename = command+5;
   374   iout << 
"Command = " << command << 
"\n" << 
endi;
   375   iout << 
"Filename.Z = " << realfilename << 
"\n" << 
endi;
   376   if (!stat(realfilename,&buf))
   378         if (!S_ISDIR(buf.st_mode))
   380                 fout = popen(command,mode);
   388                   if (isalnum(C) || isspace(C))
   399   sprintf(command,
"gzip -d -c %s.gz",filename);
   400   realfilename = command+11;
   401   iout << 
"Command = " << command << 
"\n" << 
endi;
   402   iout << 
"Filename.gz = " << realfilename << 
"\n" << 
endi;
   403   if (!stat(realfilename,&buf))
   405         if (!S_ISDIR(buf.st_mode))
   407                 fout = popen(command,mode);
   415                   if (isalnum(C) || isspace(C))
   438 #if !defined(NOCOMPRESSED) 
void NAMD_err(const char *err_msg)
 
int NAMD_open_text(const char *fname, int append)
 
void NAMD_quit(const char *err_msg)
 
void NAMD_write(int fd, const char *buf, size_t count, const char *fname)
 
std::ostream & endi(std::ostream &s)
 
const char * NAMD_version_string()
 
int NAMD_file_exists(const char *filename)
 
int NAMD_gcd(int a, int b)
 
char * NAMD_stringdup(const char *s)
 
void NAMD_bug(const char *err_msg)
 
void NAMD_close(int fd, const char *fname)
 
FILE * Fopen(const char *filename, const char *mode)
 
void NAMD_die(const char *err_msg)
 
void NAMD_backup_file(const char *filename, const char *extension)
 
std::ostream & iERROR(std::ostream &s)
 
void NAMD_version(int *major, int *minor, int *patchLevel, int *releaseType)