📄 iotop.c
字号:
_lseek( ch1, (LONG) 0, 2 );
_lwrite( ch1, (LPSTR) Buff, (WORD) lstrlen( Buff ) );
ch1 = _lclose( ch1 );
}
if( ch1 == -1 )
{
GlobalUnlock( hBuff );
GlobalFree( hBuff );
SetCursor(hSaveCursor);
return IDS_ERR_SAVE;
}
kfl[i] = 1;
}
}
GlobalUnlock( hBuff );
GlobalFree( hBuff );
SetCursor(hSaveCursor);
return 0;
}
int BufToTop( char *Buff, char **endoftop )
{
int i,j;
int daux;
unsigned char uaux;
char *paux;
char saux[NAME_L];
/* reset the version number to zero */
ver_no = 0;
/* copy the first line */
paux = strchr( Buff, '\n' );
if( paux == NULL )
return IDS_ERR_BAD_TOPNAM;
/* take care of CR if one existed before LF */
if( *(paux-1)=='\r' ) *(paux-1) = '\0';
*paux = '\0';
if( strlen( Buff ) > 255 ) Buff[255] = '\0';
lstrcpy( topname, (LPSTR) Buff );
Buff = paux+1;
/* is this line a version number ? */
sscanf( topname, "version %f", &ver_no );
if( ver_no != 0 )
{
/* YES! so let's read another line, with the title */
paux = strchr( Buff, '\n' );
if( paux == NULL )
return IDS_ERR_BAD_TOPNAM;
if( *(paux-1)=='\r' ) *(paux-1) = '\0';
*paux = '\0';
if( strlen( Buff ) > 255 ) Buff[255] = '\0';
lstrcpy( topname, (LPSTR) Buff );
Buff = paux+1;
}
/* read nstep from the buffer */
if ( ( sscanf( Buff, " %d", &daux ) < 1) ||
( daux < 1 ) || ( daux > MAX_STEP ) )
return IDS_ERR_BAD_NSTEP;
nsteps = daux;
Buff = strchr( Buff, ' ' );
/* read totmet from the buffer */
if( (Buff == NULL ) || ( sscanf( ++Buff, " %d", &daux ) < 1) ||
( daux < 1 ) || ( daux > MAX_MET ) )
return IDS_ERR_BAD_TOTMET;
totmet = daux;
/* read stoiu from the buffer */
for(i=0;i<totmet;i++)
for(j=0;j<nsteps;j++)
{
if(j==0)
{
Buff = strchr( Buff, '\n' );
if( Buff != NULL )
{
Buff++;
for( ;*Buff == ' '; Buff++);
}
}
else
{
Buff = strchr( Buff, ' ' );
if( Buff != NULL ) for( ;*Buff == ' '; Buff++);
}
if ( (Buff == NULL) || (sscanf( Buff, "%d", &daux ) < 1) )
return IDS_ERR_BAD_STOI;
stoiu[i*MAX_MET + j] = daux;
}
Buff = strchr( Buff, '\n' );
if( Buff == NULL )
return IDS_ERR_BAD_KINTYPE;
Buff++;
/* read kinetu, revers and metname from the buffer */
for( i=0; i<nsteps; i++ )
{
for( ;*Buff == ' '; Buff++);
if ( (Buff == NULL) || (sscanf( Buff, "%d", &daux ) < 1)
|| (daux < -1) )
return IDS_ERR_BAD_KINTYPE;
kinetu[i] = daux;
Buff = strchr( Buff, ' ' );
if( Buff != NULL ) for( ;*Buff == ' '; Buff++);
if ( (Buff == NULL) || (sscanf( Buff, "%d", &uaux ) < 1)
|| (uaux < 0) || (uaux > 1) )
return IDS_ERR_BAD_KINTYPE;
revers[i] = uaux;
Buff = strchr( Buff, ' ' );
if( Buff != NULL ) for( ;*Buff == ' '; Buff++);
paux = strchr( Buff, '\n' );
if( paux == NULL )
return IDS_ERR_BAD_KINTYPE;
/* take care of CR if one existed before LF */
if( *(paux-1)=='\r' ) *(paux-1) = '\0';
*paux = '\0';
if( strlen( Buff ) >= NAME_L ) Buff[NAME_L-1] = '\0';
lstrcpy( (LPSTR) stepname[i], (LPSTR) Buff );
Buff = paux+1;
}
*(--Buff) = '\n';
/* read rstr from the buffer */
for(i=0;i<nsteps;i++)
for(j=0;j<MAX_MOL;j++)
{
if(j==0)
{
Buff = strchr( Buff, '\n' );
if( Buff != NULL )
{
Buff++;
for( ;*Buff == ' '; Buff++);
}
}
else
{
Buff = strchr( Buff, ' ' );
if( Buff != NULL ) for( ;*Buff == ' '; Buff++);
}
if ( (Buff == NULL) || (sscanf( Buff,"%d", &daux ) < 1) )
return IDS_ERR_BAD_LOOP;
(*rstr)[i][j] = (signed char) daux;
}
/* read loop from the buffer */
for(i=0;i<nsteps;i++)
for(j=0;j<totmet;j++)
{
if(j==0)
{
Buff = strchr( Buff, '\n' );
if( Buff != NULL )
{
Buff++;
for( ;*Buff == ' '; Buff++);
}
}
else
{
Buff = strchr( Buff, ' ' );
if( Buff != NULL ) for( ;*Buff == ' '; Buff++);
}
if ( (Buff == NULL) || (sscanf( Buff,"%u", &uaux ) < 1)
|| (uaux < (unsigned) 0) )
return IDS_ERR_BAD_LOOP;
(*loop)[i][j] = uaux;
}
/* read metabolite status and names from the buffer */
for(i=0;i<totmet;i++)
{
Buff = strchr( Buff, '\n' );
if ( (Buff == NULL) || (sscanf( ++Buff, "%d %21s", &daux, &saux ) < 2) )
return IDS_ERR_BAD_INTMET;
intmet[i] = daux;
lstrcpy( metname[i], (LPSTR) saux );
}
/* point endofbuf to the end of the topology section */
if( endoftop != NULL )
*endoftop = Buff;
return 0;
}
/*
add a new function read from a .TOP file
and renumber references to this type in the .TOP
*/
int addtr( int e )
{
int i, j, k, nRc;
j = nudf;
k = kinetu[e];
eqefl = 0;
if( (nRc = new_tree( j )) != 0 ) return nRc;
if( (nRc = new_rateq( j )) != 0 ) return nRc;
for( i=e; i<nsteps; i++ )
if( (kinetu[i]==k) && (kfl[i]) )
{
kinetu[i] = MAX_TYP+j;
kfl[i] = 0;
}
notsaved = 1;
return 0;
}
/*
read topology from file
*/
int ReadTop( LPSTR FName )
{
int i, j, k, fl, ty, nRc;
HANDLE hBuff;
HCURSOR hSaveCursor;
unsigned int bufsize;
char *Buff;
int ch1;
OFSTRUCT OfStruct;
struct stat fst;
/* display the wait cursor */
hSaveCursor = SetCursor(hHourGlass);
/* open the file */
ch1 = OpenFile( FName, &OfStruct, OF_READ );
if( ch1 != -1 )
{
/* get the file statistics */
fstat( ch1, &fst );
/* set the buffer to the size of the file plus one */
bufsize = (unsigned int) fst.st_size;
/* allocate space for the read buffer and lock it */
hBuff = LocalAlloc( GMEM_MOVEABLE | GMEM_ZEROINIT, (WORD) (bufsize+1) );
if( hBuff == NULL )
{
SetCursor(hSaveCursor);
return IDS_ERR_NOEXEC;
}
Buff = (char *) LocalLock( hBuff );
/*read the file and close it */
if( read( ch1, Buff, bufsize ) == -1 )
{
LocalUnlock( hBuff );
LocalFree( hBuff );
SetCursor(hSaveCursor);
return IDS_ERR_LOAD;
}
close( ch1 );
fl = 0;
if( ( nRc = BufToTop( Buff, &Buff ) ) != 0 )
{
/* release the memory allocated for the buffer */
LocalUnlock( hBuff );
LocalFree( hBuff );
SetCursor(hSaveCursor);
return nRc;
}
/* set flags */
for( i=0; i<nsteps; i++ ) kfl[i] = 1;
/* check if model contains user-defined kinetic types */
/* if there are any, check if they have to be read */
for( i=0; i<nsteps; i++ )
if( (kinetu[i] >= MAX_TYP) )
{
/* look for a form-feed */
Buff = strchr( Buff, '\f' );
Buff = BufToTree( ++Buff );
for( j=0, ty=-1; j<nudf; j++ )
if( lstrcmp( (LPSTR) tree[j].descr, (LPSTR) tr.descr ) == 0 )
{
ty = j;
break;
}
if( ty == -1 )
{
if( (nRc=addtr( i )) !=0 ) return nRc;
fl = 1;
}
else
for( j=i,k=kinetu[i]; j<nsteps; j++ )
if( (kinetu[j]==k) && (kfl[j]) )
{
kinetu[j] = MAX_TYP+ty;
kfl[j] = 0;
}
}
SetCursor(hSaveCursor);
#ifdef GWTOP
if( fl )
{
LoadString( hInst, IDS_INF_NEWKIN, szString, sizeof(szString) );
MessageBox( NULL, szString, (LPSTR) "GEPASI - Topology", MB_ICONINFORMATION );
}
#endif
return 0;
}
else
{
SetCursor(hSaveCursor);
return IDS_ERR_LOAD;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -