common.c
上传用户:myichia
上传日期:2019-01-05
资源大小:217k
文件大小:2k
源码类别:

TAPI编程

开发平台:

C/C++

  1. // $Id: common.c,v 1.2 2006/02/09 19:14:24 Daniel.May Exp $
  2. //
  3. // FIX Adapted for STreaming (sm) (FAST Protocol (sm)) 
  4. //
  5. // Copyright (c) 2005-2006, Pantor Engineering AB (http://www.pantor.com)
  6. // Copyright (c) 2005-2006, SpryWare LLC (http://www.spryware.com)
  7. // Copyright (c) 2005-2006, FIX Protocol Ltd (http://www.fixprotocol.org)
  8. // All Rights Reserved.
  9. //
  10. // This work is distributed under the W3C® Software License [1] in the
  11. // hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
  12. // implied warranty of MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS 
  13. // FOR A PARTICULAR PURPOSE.
  14. //
  15. // [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
  16. // [FPL's Intellectual Property details] http://www.fixprotocol.org/ip
  17. // [FAST Protocol details] http://www.fixprotocol.org/fast
  18. // [FAST Protocol credits] http://fixprotocol.org/fastcredits
  19. #include "common.h"
  20. void init_platform_io (void)
  21. {
  22. #ifdef WIN32
  23.    _setmode (_fileno(stdin),O_BINARY);
  24.    _setmode (_fileno(stdout),O_BINARY);
  25. #endif
  26. }
  27. #ifdef WIN32
  28. size_t strnlen (const char *str, size_t len)
  29. {
  30.    size_t p1;
  31.    for (p1 = 0 ; p1 < len ; p1 ++)
  32.       if (str [p1] == '')
  33.          break;
  34.    return p1;
  35. }
  36. #endif // defined (WIN32)
  37. //////////////////////////////////////////////////////////////////////
  38. int read_n (int fd, void* data, int size)
  39. {
  40.    char* curr = data;
  41.    int left = size;
  42.    while (left > 0)
  43.    {
  44.       int temp = read (fd, curr, left);
  45.       if (temp <= 0)
  46.          return -1;
  47.       curr += temp;
  48.       left -= temp;
  49.    }
  50.    return 0;
  51. }
  52. int write_n (int fd, const void* data, int size)
  53. {
  54.    const char* curr = data;
  55.    int left = size;
  56.    while (left > 0)
  57.    {
  58.       int temp = write (fd, curr, left);
  59.       if (temp < 0)
  60.       {
  61.          perror ("write_n");
  62.          exit (1);
  63.       }
  64.       curr += temp;
  65.       left -= temp;
  66.    }
  67.    return size;
  68. }