Metropoli BBS
VIEWER: lock.c MODE: TEXT (ASCII)
#ifndef msg
#include <stdio.h>
#include <share.h>
#include "os2defs.h"
#define msg(x)
#endif

#include <errno.h>

FILE *flockopen(char *name, char *mode)
{
  int shflag = SH_DENYWR, try;
  char *ptr;
  FILE *file;
  char buf[80];

  for ( ptr = mode; *ptr; ptr++ )
    if ( *ptr == 'w' || *ptr == 'a' || *ptr == '+' )
      shflag = SH_DENYRW;

  for ( try = 0; try < 10; try++ )
    if ( (file = _fsopen(name, mode, shflag)) != NULL )
      break;
    else if ( errno == ENOENT )
      break;
    else
    {
      msg(name);
      delay(1000);
    }

  return file;
}

void noinherit(HFILE hFile)
{
  DosSetFHandState(hFile, OPEN_FLAGS_NOINHERIT);
}
[ RETURN TO DIRECTORY ]