Skip to content
Snippets Groups Projects
Select Git revision
  • 6f1a2c221a3b43fbc572f52800ab6a05b047d4d9
  • master default protected
  • 9.0
  • 8.0
  • nt-tools
  • 7.8
  • 7.6
  • 7.4
  • 7.2
  • 7.0
  • 0.6
  • rosuav/latex-markdown-renderer
  • rxnpatch/rxnpatch
  • marcus/gobject-introspection
  • rxnpatch/8.0
  • rosuav/pre-listening-ports
  • rosuav/async-annotations
  • rosuav/pgsql-ssl
  • rxnpatch/rxnpatch-broken/2023-10-06T094250
  • grubba/fdlib
  • grubba/wip/sakura/8.0
  • v8.0.2020
  • v8.0.2018
  • v8.0.2016
  • v8.0.2014
  • v8.0.2012
  • v8.0.2008
  • v8.0.2006
  • v8.0.2004
  • v8.0.2002
  • v8.0.2000
  • v8.0.1998
  • v8.0.1996
  • v8.0.1994
  • v8.0.1992
  • v8.0.1990
  • v8.0.1988
  • v8.0.1986
  • rxnpatch/clusters/8.0/2025-04-29T124414
  • rxnpatch/2025-04-29T124414
  • v8.0.1984
41 results

fdlib.c

Blame
  • fdlib.c 27.23 KiB
    #include "global.h"
    #include "fdlib.h"
    #include "error.h"
    #include <math.h>
    
    RCSID("$Id: fdlib.c,v 1.45 2000/09/01 16:06:18 grubba Exp $");
    
    #ifdef HAVE_WINSOCK_H
    
    #ifdef _REENTRANT
    #include "threads.h"
    
    static MUTEX_T fd_mutex;
    #endif
    
    HANDLE da_handle[MAX_OPEN_FILEDESCRIPTORS];
    int fd_type[MAX_OPEN_FILEDESCRIPTORS];
    int first_free_handle;
    
    #define FD_DEBUG
    
    #ifdef FD_DEBUG
    #define FDDEBUG(X) X
    #else
    #define FDDEBUG(X)
    #endif
    
    PMOD_EXPORT char *debug_fd_info(int fd)
    {
      if(fd<0)
        return "BAD";
    
      if(fd > MAX_OPEN_FILEDESCRIPTORS)
        return "OUT OF RANGE";
    
      switch(fd_type[fd])
      {
        case FD_SOCKET: return "IS SOCKET";
        case FD_CONSOLE: return "IS CONSOLE";
        case FD_FILE: return "IS FILE";
        case FD_PIPE: return "IS PIPE";
        default: return "NOT OPEN";
      }
    }
    
    PMOD_EXPORT int debug_fd_query_properties(int fd, int guess)
    {
      switch(fd_type[fd])
      {
        case FD_SOCKET:
          return fd_BUFFERED | fd_CAN_NONBLOCK | fd_CAN_SHUTDOWN;
        case FD_FILE:
        case FD_CONSOLE:
          return fd_INTERPROCESSABLE;
    
        case FD_PIPE:
          return fd_INTERPROCESSABLE | fd_BUFFERED;
        default: return 0;
      }
    }
    
    void fd_init()
    {
      int e;
      WSADATA wsadata;
      
      mt_init(&fd_mutex);
      mt_lock(&fd_mutex);
      if(WSAStartup(MAKEWORD(1,1), &wsadata) != 0)
      {