Logo Search packages:      
Sourcecode: dcap version File versions  Download package

str2errno.c

/*
 *   DCAP - dCache Access Protocol client interface
 *
 *   Copyright (C) 2000,2004 DESY Hamburg DMG-Division.
 *
 *   AUTHOR: Tigran Mkrtchayn (tigran.mkrtchyan@desy.de)
 *
 *   This program can be distributed under the terms of the GNU LGPL.
 *   See the file COPYING.LIB
 *
 */
 
 
/*
 * $Id: str2errno.c,v 1.2 2005-04-25 07:56:37 tigran Exp $
 */

#include <stdio.h>
#include <errno.h>
#include <string.h>
 
typedef struct {
      const char *errStr;
      int errNo;
} errnoMap;


static errnoMap eMap[] = {    

      { "EOK",    0 },  /* Ok */
      { "EPERM",  1 },  /* Operation not permitted */
      { "ENOENT", 2 },  /* No such file or directory */
      { "ESRCH",  3 },  /* No such process */
      { "EINTR",  4 },  /* Interrupted system call */
      { "EIO",    5 },  /* I/O error */
      { "ENXIO",  6 },  /* No such device or address */
      { "E2BIG",  7 },  /* Argument list too long */
      { "ENOEXEC",8 },  /* Exec format error */
      { "EBADF",  9 },  /* Bad file number */
      { "ECHILD", 10 }, /* No child processes */
      { "EAGAIN", 11 }, /* Try again */
      { "ENOMEM", 12 }, /* Out of memory */
      { "EACCES", 13 }, /* Permission denied */
      { "EFAULT", 14 }, /* Bad address */
      { "ENOTBLK",15 }, /* Block device required */
      { "EBUSY",  16 }, /* Device or resource busy */
      { "EEXIST", 17 }, /* File exists */
      { "EXDEV",  18 }, /* Cross-device link */
      { "ENODEV", 19 }, /* No such device */
      { "ENOTDIR",20 }, /* Not a directory */
      { "EISDIR", 21 }, /* Is a directory */
      { "EINVAL", 22 }, /* Invalid argument */
      { "ENFILE", 23 }, /* File table overflow */
      { "EMFILE", 24 }, /* Too many open files */
      { "ENOTTY", 25 }, /* Not a typewriter */
      { "ETXTBSY",26 }, /* Text file busy */
      { "EFBIG",  27 }, /* File too large */
      { "ENOSPC", 28 }, /* No space left on device */
      { "ESPIPE", 29 }, /* Illegal seek */
      { "EROFS",  30 }, /* Read-only file system */
      { "EMLINK", 31 }, /* Too many links */
      { "EPIPE",  32 }, /* Broken pipe */
      { "EDOM",   33 }, /* Math argument out of domain of func */
      { "ERANGE", 34 }, /* Math result not representable */

      { NULL, -1 } 
};


int str2errno( const char *errStr)
{
      
      
      int i;
      int err = EIO; /* default error: I/O error */
      
      for( i = 0; eMap[i].errStr != NULL; i++ ) {
            if( strcmp(errStr, eMap[i].errStr) == 0 ) {
                  err = eMap[i].errNo;
            }
      }
      
      
      return err;
}






#ifdef _MAIN_

int main( int argc, char *argv[] )
{     
      
      if( argc != 2 ) {
            errno = EAGAIN;
      }else{
            errno = str2errno(argv[1]);
      }
      
      perror("str2errno ");
}

#endif /* _MAIN */

Generated by  Doxygen 1.6.0   Back to index