ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/fileio.c
(Generate patch)

Comparing ircd-hybrid-7.2/src/fileio.c (file contents):
Revision 34 by lusky, Sun Oct 2 21:05:51 2005 UTC vs.
Revision 1001 by michael, Sat Aug 29 22:44:44 2009 UTC

# Line 41 | Line 41 | int
41   file_open(fde_t *F, const char *filename, int mode, int fmode)
42   {
43    int fd;
44 #ifdef _WIN32
45  DWORD dwDesiredAccess = 0;
44  
47  switch (mode & ~(O_CREAT | O_TRUNC | O_APPEND))
48  {
49    case O_RDONLY:
50      dwDesiredAccess = GENERIC_READ;
51      break;
52    case O_WRONLY:
53      dwDesiredAccess = GENERIC_WRITE;
54      break;
55    case O_RDWR:
56      dwDesiredAccess = GENERIC_READ | GENERIC_WRITE;
57  }
58
59  fd = (int) CreateFile(
60    filename,
61    dwDesiredAccess,
62    FILE_SHARE_READ | ((dwDesiredAccess & GENERIC_WRITE) ? 0:FILE_SHARE_WRITE),
63    NULL,
64    ((mode & O_CREAT) == 0) ? OPEN_EXISTING :
65    ((mode & O_TRUNC) ? CREATE_ALWAYS : OPEN_ALWAYS),
66    FILE_ATTRIBUTE_NORMAL,
67    NULL
68  );
69
70  if (fd == (int)INVALID_HANDLE_VALUE)
71  {
72    errno = GetLastError();
73    return -1;
74  }
75
76  if ((mode & O_APPEND))
77    SetFilePointer((HANDLE)fd, 0, NULL, FILE_END);
78 #else
45    if (number_fd == hard_fdlimit)
46    {
47      errno = ENFILE;
# Line 84 | Line 50 | file_open(fde_t *F, const char *filename
50  
51    if ((fd = open(filename, mode, fmode)) < 0)
52      return -1;
87 #endif
53  
54    fd_open(F, fd, 0, filename);
55    return 0;
# Line 141 | Line 106 | fbrewind(FBFILE *fb)
106    fb->flags = 0;
107    fb->pbptr = NULL;
108  
144 #ifdef _WIN32
145  SetFilePointer((HANDLE)fb->F.fd, 0, NULL, FILE_BEGIN);
146 #else
109    lseek(fb->F.fd, 0, SEEK_SET);
148 #endif
110    return 0;
111   }
112  
# Line 166 | Line 127 | fbfill(FBFILE *fb)
127    if (fb->flags)
128      return -1;
129  
169 #ifdef _WIN32
170  if (!ReadFile((HANDLE)fb->F.fd, fb->buf, BUFSIZ, (LPDWORD)&n, NULL))
171    n = -1;
172 #else
130    n = read(fb->F.fd, fb->buf, BUFSIZ);
174 #endif
131  
132    if (n > 0)
133    {
# Line 268 | Line 224 | fbputs(const char *str, FBFILE *fb, size
224    if (0 == fb->flags)
225    {
226      assert(strlen(str) == nbytes);
271 #ifdef _WIN32
272    if (!WriteFile((HANDLE)fb->F.fd, str, nbytes, (LPDWORD)&n, NULL))
273      n = -1;
274 #else
227      n = write(fb->F.fd, str, nbytes);
228 < #endif
228 >
229      if (n == -1)
230        fb->flags |= FB_FAIL;
231    }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines