home *** CD-ROM | disk | FTP | other *** search
- /***
- *rmtmp.c - remove temporary files created by tmpfile.
- *
- * Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
- *
- *Purpose:
- *
- *******************************************************************************/
-
- #include <cruntime.h>
- #include <stdio.h>
- #include <file2.h>
- #include <internal.h>
- #include <mtdll.h>
-
-
- #ifdef _MSC_VER
-
- #pragma data_seg(".CRT$XPX")
-
- #ifdef _WIN32
-
- static _PVFV pterm = _rmtmp;
-
- #else /* _WIN32 */
- #if defined (_M_MPPC) || defined (_M_M68K)
-
- static _PVFV __prmtmp = _rmtmp;
-
- #endif /* defined (_M_MPPC) || defined (_M_M68K) */
- #endif /* _WIN32 */
-
- #pragma data_seg()
-
- #endif /* _MSC_VER */
-
- #ifdef _WIN32
-
- /*
- * Definitions for _tmpoff, _tempoff and _old_pfxlen. These will cause this
- * module to be linked in whenever the termination code needs it.
- */
- #ifndef CRTDLL
- unsigned _tmpoff = 1;
- #endif /* CRTDLL */
-
- unsigned _tempoff = 1;
- unsigned _old_pfxlen = 0;
-
-
- #else /* _WIN32 */
- #if defined (_M_MPPC) || defined (_M_M68K)
-
- /*
- * Definitions for _tmpoff, _tempoff and _old_pfxlen. These will cause this
- * module to be linked in whenever the termination code needs it.
- */
- unsigned int _tmpoff = 1;
- unsigned int _tempoff = 1;
- unsigned int _old_pfxlen = 0;
-
- /*
- * Define _prmtmp, the function pointer used in the termination code.
- */
- void (__cdecl * _prmtmp)(void) = _rmtmp;
-
- #endif /* defined (_M_MPPC) || defined (_M_M68K) */
- #endif /* _WIN32 */
-
-
- /***
- *int _rmtmp() - closes and removes temp files created by tmpfile
- *
- *Purpose:
- * closes and deletes all open files that were created by tmpfile.
- *
- *Entry:
- * None.
- *
- *Exit:
- * returns number of streams closed
- *
- *Exceptions:
- *
- *******************************************************************************/
-
- int __cdecl _rmtmp (
- void
- )
- {
- REG2 int count = 0;
-
- #ifdef _WIN32
-
- REG1 int i;
-
- _mlock(_IOB_SCAN_LOCK);
-
- for ( i = 0 ; i < _nstream ; i++)
-
- if ( __piob[i] != NULL ) {
-
- _lock_str2(i, __piob[i]);
-
- if ( inuse( (FILE *)__piob[i] ) &&
- (((FILE *)__piob[i])->_tmpfname != NULL) )
- {
- _fclose_lk( __piob[i] );
- count++;
- }
-
- _unlock_str2(i, __piob[i]);
- }
-
- _munlock(_IOB_SCAN_LOCK);
-
- #else /* _WIN32 */
- #if defined (_M_MPPC) || defined (_M_M68K)
-
- REG1 FILE *stream = _iob;
-
- for (; stream <= _lastiob; stream++) {
-
- if (inuse(stream) && (stream->_tmpfname != NULL) ) {
- fclose(stream);
- count++;
- }
- }
-
- #endif /* defined (_M_MPPC) || defined (_M_M68K) */
- #endif /* _WIN32 */
-
- return(count);
- }
-