~drizzle-trunk/drizzle/development

1548.4.99 by Zimin
fix copyright style problem
1
/*
2
  Copyright (C) 2010 Zimin
3
4
  This program is free software; you can redistribute it and/or
5
  modify it under the terms of the GNU General Public License
6
  as published by the Free Software Foundation; either version 2
7
  of the License, or (at your option) any later version.
8
9
  This program is distributed in the hope that it will be useful,
10
  but WITHOUT ANY WARRANTY; without even the implied warranty of
11
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
  GNU General Public License for more details.
13
14
  You should have received a copy of the GNU General Public License
15
  along with this program; if not, write to the Free Software
16
  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17
*/
1548.4.91 by Zimin
extract write and close code into another file
18
1548.4.120 by Zimin
modify macros to be in line with the change of the filesystem directory name
19
#ifndef PLUGIN_FILESYSTEM_ENGINE_UTILITY_H
20
#define PLUGIN_FILESYSTEM_ENGINE_UTILITY_H
1548.4.91 by Zimin
extract write and close code into another file
21
1548.4.111 by Zimin
remove xread and xclose, but change xwrite to write_in_all.
22
static inline ssize_t write_in_all(int fd, const void *buf, size_t count)
1548.4.91 by Zimin
extract write and close code into another file
23
{
24
  const char *p= (const char*)buf;
25
  ssize_t total= 0;
26
  while (count > 0)
27
  {
28
    ssize_t len;
29
    while ((len= ::write(fd, p, count)) < 0 &&
30
           (errno == EINTR || errno == EAGAIN))
31
      ;
32
    if (len < 0)
33
      return -1;
34
    if (len == 0)
35
    {
36
      errno= ENOSPC;
37
      return -1;
38
    }
39
    p+= len;
40
    total+= len;
41
    count-= len;
42
  }
43
  return total;
44
}
45
1548.4.120 by Zimin
modify macros to be in line with the change of the filesystem directory name
46
#endif /* PLUGIN_FILESYSTEM_ENGINE_UTILITY_H */