Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
2.7 KiB

4 years ago
  1. #define INCL_DOSFILEMGS
  2. #include <os2.h>
  3. typedef +++D/WORD+++ INT FD; /* file handle */
  4. typedef LONG LFO; /* file offset */
  5. typedef +++D/WORD+++ INT WORD;
  6. typedef CHAR FAR *LPSTR;
  7. typedef +++D/WORD+++ CHAR BYTE;
  8. FD APIENTRY FdCreate (LPSTR) ;
  9. FD APIENTRY FdOpen (LPSTR, BYTE) ;
  10. WORD APIENTRY CbWriteFdLpb (FD, LPSTR, WORD);
  11. WORD APIENTRY CbReadFdLpb (FD, LPSTR, WORD);
  12. LFO APIENTRY LSeekFd (FD, LFO, BYTE);
  13. INT APIENTRY EnCloseFd (FD);
  14. INT APIENTRY EnUnLinkSz (LPSTR);
  15. INT APIENTRY EnRenameSzSz (LPSTR, LPSTR);
  16. FD APIENTRY FdOpen(lpFileName, bMode)
  17. LPSTR lpFileName;
  18. BYTE bMode;
  19. {
  20. HFILE hf;
  21. USHORT usAction;
  22. if (DosOpen(lpFileName,
  23. &hf,
  24. &usAction,
  25. 0L,
  26. FILE_NORMAL,
  27. FILE_OPEN,
  28. OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE,
  29. 0l)) {
  30. return(-1);
  31. } else {
  32. return(hf);
  33. }
  34. }
  35. FD APIENTRY FdCreate(lpFileName)
  36. LPSTR lpFileName;
  37. {
  38. HFILE hf;
  39. USHORT usAction;
  40. if (DosOpen(lpFileName,
  41. &hf,
  42. &usAction,
  43. 0L,
  44. FILE_NORMAL,
  45. FILE_CREATE | FILE_OPEN,
  46. OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE,
  47. 0L)) {
  48. return(-1);
  49. } else {
  50. return(hf);
  51. }
  52. }
  53. INT APIENTRY EnCloseFd(hf)
  54. HFILE hf;
  55. {
  56. if (DosClose(hf)) {
  57. return(-1);
  58. } else {
  59. return(0);
  60. }
  61. }
  62. WORD APIENTRY CbReadFdLpb (hf,lpBuffer,cbBuffer)
  63. HFILE hf;
  64. LPSTR lpBuffer;
  65. WORD cbBuffer;
  66. {
  67. USHORT cbBytesRead;
  68. INT errCode;
  69. errCode = DosRead(hf,lpBuffer,cbBuffer,&cbBytesRead);
  70. if (errCode) {
  71. return(-1);
  72. } else {
  73. return(cbBytesRead);
  74. }
  75. }
  76. WORD APIENTRY CbWriteFdLpb (hf,lpBuffer,cbBuffer)
  77. HFILE hf;
  78. LPSTR lpBuffer;
  79. WORD cbBuffer;
  80. {
  81. USHORT cbBytesRead;
  82. INT errCode;
  83. errCode = DosWrite(hf,lpBuffer,cbBuffer,&cbBytesRead);
  84. if (errCode) {
  85. return(-1);
  86. } else {
  87. return(cbBytesRead);
  88. }
  89. }
  90. LFO APIENTRY LSeekFd (hf, lDistance, fMethod)
  91. HFILE hf;
  92. ULONG lDistance;
  93. USHORT fMethod;
  94. {
  95. ULONG lNewLocation;
  96. INT errCode;
  97. errCode = DosChgFilePtr(hf,lDistance,FILE_BEGIN,&lNewLocation);
  98. if (errCode) {
  99. return(-1);
  100. } else {
  101. return(lNewLocation);
  102. }
  103. }
  104. INT APIENTRY EnUnLinkSz(lpFileName)
  105. LPSTR lpFileName;
  106. {
  107. if (DosDelete(lpFileName,0L)) {
  108. return(-1);
  109. } else {
  110. return(0);
  111. }
  112. }
  113. INT APIENTRY EnRenameSzSz (lpOldName,lpNewName)
  114. LPSTR lpOldName;
  115. LPSTR lpNewName;
  116. {
  117. if (DosMove(lpOldName, lpNewName, 0L)) {
  118. return(-1);
  119. } else {
  120. return(0);
  121. }
  122. }