Annotation of embedaddon/rsync/ifuncs.h, revision 1.1.1.2
1.1 misho 1: /* Inline functions for rsync.
2: *
1.1.1.2 ! misho 3: * Copyright (C) 2007-2013 Wayne Davison
1.1 misho 4: *
5: * This program is free software; you can redistribute it and/or modify
6: * it under the terms of the GNU General Public License as published by
7: * the Free Software Foundation; either version 3 of the License, or
8: * (at your option) any later version.
9: *
10: * This program is distributed in the hope that it will be useful,
11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13: * GNU General Public License for more details.
14: *
15: * You should have received a copy of the GNU General Public License along
16: * with this program; if not, visit the http://fsf.org website.
17: */
18:
19: static inline void
20: alloc_xbuf(xbuf *xb, size_t sz)
21: {
22: if (!(xb->buf = new_array(char, sz)))
23: out_of_memory("alloc_xbuf");
24: xb->size = sz;
25: xb->len = xb->pos = 0;
26: }
27:
28: static inline void
29: realloc_xbuf(xbuf *xb, size_t sz)
30: {
31: char *bf = realloc_array(xb->buf, char, sz);
32: if (!bf)
33: out_of_memory("realloc_xbuf");
34: xb->buf = bf;
35: xb->size = sz;
36: }
37:
1.1.1.2 ! misho 38: static inline void
! 39: free_xbuf(xbuf *xb)
! 40: {
! 41: if (xb->buf)
! 42: free(xb->buf);
! 43: memset(xb, 0, sizeof (xbuf));
! 44: }
! 45:
1.1 misho 46: static inline int
47: to_wire_mode(mode_t mode)
48: {
49: #ifdef SUPPORT_LINKS
50: #if _S_IFLNK != 0120000
51: if (S_ISLNK(mode))
52: return (mode & ~(_S_IFMT)) | 0120000;
53: #endif
54: #endif
55: return mode;
56: }
57:
58: static inline mode_t
59: from_wire_mode(int mode)
60: {
61: #if _S_IFLNK != 0120000
62: if ((mode & (_S_IFMT)) == 0120000)
63: return (mode & ~(_S_IFMT)) | _S_IFLNK;
64: #endif
65: return mode;
66: }
67:
68: static inline char *
69: d_name(struct dirent *di)
70: {
71: #ifdef HAVE_BROKEN_READDIR
72: return (di->d_name - 2);
73: #else
74: return di->d_name;
75: #endif
76: }
77:
1.1.1.2 ! misho 78: static inline void
! 79: init_stat_x(stat_x *sx_p)
1.1 misho 80: {
1.1.1.2 ! misho 81: #ifdef SUPPORT_ACLS
! 82: sx_p->acc_acl = sx_p->def_acl = NULL;
! 83: #endif
! 84: #ifdef SUPPORT_XATTRS
! 85: sx_p->xattr = NULL;
! 86: #endif
1.1 misho 87: }
88:
1.1.1.2 ! misho 89: static inline void
! 90: free_stat_x(stat_x *sx_p)
1.1 misho 91: {
1.1.1.2 ! misho 92: #ifdef SUPPORT_ACLS
! 93: {
! 94: extern int preserve_acls;
! 95: if (preserve_acls)
! 96: free_acl(sx_p);
! 97: }
! 98: #endif
! 99: #ifdef SUPPORT_XATTRS
! 100: {
! 101: extern int preserve_xattrs;
! 102: if (preserve_xattrs)
! 103: free_xattr(sx_p);
! 104: }
! 105: #endif
1.1 misho 106: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>