diff --git a/src/file_.cpp b/src/file_.cpp index 4071886..6bfa648 100644 --- a/src/file_.cpp +++ b/src/file_.cpp @@ -347,10 +347,10 @@ int i; if (i>0) sleep ( 1 ); #endif if (TextMode) { - if (ReadOnly) hFile = fopen ( FName,"r" ); + if (ReadOnly) hFile = fopen ( FName,"rt" ); else hFile = fopen ( FName,"r+t" ); } else { - if (ReadOnly) hFile = fopen ( FName,"r" ); + if (ReadOnly) hFile = fopen ( FName,"rb" ); else hFile = fopen ( FName,"r+b" ); } #ifndef _MVS diff --git a/src/machine_.h b/src/machine_.h index 2e81264..7b18675 100644 --- a/src/machine_.h +++ b/src/machine_.h @@ -127,8 +127,12 @@ # define CALL_LIKE_VMS 1 // MVS stands for Microsoft Visual Studio -#elif defined(_MVS) +#elif defined(_MSC_VER) +# if (_MSC_VER) >= 800 +# define CALL_LIKE_MVS 2 +# else # define CALL_LIKE_MVS 1 +# endif #elif defined(F2C) || defined(G77) # define CALL_LIKE_SUN 8 @@ -400,6 +404,36 @@ typedef double apireal; // FORTRAN real*8 #elif defined(CALL_LIKE_MVS) +# if ( CALL_LIKE_MVS == 2 ) + + typedef pstr fpstr; + +# define FTN_STR(s) s +# define FTN_LEN(s) s##_len + +# define char_struct(s) \ + pstr s; \ + int s##_len; +# define fill_char_struct(s,str) \ + s = str; \ + s##_len = strlen(str); + +# ifdef __cplusplus +# define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \ + extern "C" void NAME p_sun +# else +# define FORTRAN_SUBR(NAME,name,p_sun,p_stardent,p_mvs) \ + void NAME p_sun +# endif + +# define FORTRAN_EXTERN(NAME,name,p_sun,p_stardent,p_mvs) \ + extern "C" void NAME p_sun + +# define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \ + NAME p_sun + +# else + typedef pstr fpstr; # define FTN_STR(s) s @@ -425,7 +459,7 @@ typedef double apireal; // FORTRAN real*8 # define FORTRAN_CALL(NAME,name,p_sun,p_stardent,p_mvs) \ NAME p_mvs - +# endif #else # error Unknown machine!!! diff --git a/src/mmdb_atom.h b/src/mmdb_atom.h index 45049c8..5d0af2a 100644 --- a/src/mmdb_atom.h +++ b/src/mmdb_atom.h @@ -290,7 +290,7 @@ class CAtom : public CUDData { void CalcAtomStatistics ( RSAtomStat AS ); realtype GetDist2 ( PCAtom a ); realtype GetDist2 ( PCAtom a, mat44 & tm ); // tm applies to A - realtype GetDist2 ( PCAtom a, mat33 & r, vect3 & t );// tm applies to A + realtype GetDist2 ( PCAtom a, mat33 & r, vect3 & t ); // tm applies to A realtype GetDist2 ( realtype ax, realtype ay, realtype az ); // GetCosine(a1,a2) calculates cosine of angle a1-this-a2, diff --git a/src/mmdb_chain.cpp b/src/mmdb_chain.cpp index a6f66c2..24baa37 100644 --- a/src/mmdb_chain.cpp +++ b/src/mmdb_chain.cpp @@ -672,7 +672,8 @@ int i,k,sN; i = 0; sN = 1; while (i0) { +#if defined(_MSC_VER) || defined (WIN32) + if (dirpath[i-1]!='\\') strcat ( dirpath,"\\" ); +#else if (dirpath[i-1]!='/') strcat ( dirpath,"/" ); +#endif } } diff --git a/src/mmdb_selmngr.cpp b/src/mmdb_selmngr.cpp index b923529..4395dde 100644 --- a/src/mmdb_selmngr.cpp +++ b/src/mmdb_selmngr.cpp @@ -1158,7 +1158,7 @@ void CMMDBSelManager::Select ( int selKey // selection key ) { int i,j,k,n,m1,m2,c, sk,nsel; -Boolean noRes,modelSel,chainSel,resSel,selAND; +Boolean noRes,modelSel(False),chainSel,resSel,selAND; PCModel model; PCChain chain; PCResidue res; diff --git a/src/mmdb_title.cpp b/src/mmdb_title.cpp index b0b2ae5..627173f 100644 --- a/src/mmdb_title.cpp +++ b/src/mmdb_title.cpp @@ -1381,6 +1381,10 @@ MakeStreamFunctions(CRemark) #define R350_CHAINS 2 #define R350_BIOMT 3 +#ifdef _WIN32 +#define strcasestr(s, t) strstr(strupr(s), t) +#endif + void getRemarkKey ( RPCRemark rem, int & lkey ) { if (rem) { if (rem->remarkNum!=350) lkey = R350_END; @@ -1458,7 +1462,7 @@ int l,lkey,nAdd,j; while ((iRemark,"CHAINS:" ); + p = strcasestr( rem->Remark,"CHAINS:" ); if (p) p += 7; else { p = rem->Remark; @@ -1513,7 +1517,7 @@ pstr p1,p2; int l,j,lkey; sprintf ( PN,"BIOMT%1i",biomtNo ); - p1 = strcasestr ( rem->Remark,PN ); + p1 = strcasestr( rem->Remark,PN ); if (!p1) return R350_ERRBIOMT; p1 += 6; @@ -1972,7 +1976,7 @@ int i,l; if (rem) { if (rem->remarkNum==2) { if (rem->Remark) { - p = strcasestr ( rem->Remark,"RESOLUTION" ); + p = strcasestr( rem->Remark,"RESOLUTION" ); if (p) { while ((*p) && (*p!=' ')) p++; if (*p) {