From 740819ef7b3b96451e16b2fa3891d46cfc73ec64 Mon Sep 17 00:00:00 2001 From: Martin Pool Date: Tue, 27 Nov 2001 06:43:17 +0000 Subject: [PATCH] Split code to generate "rwx-----" strings into lib/permstring.c so it can be reused in tls. --- flist.c | 17 ++++------------- lib/permstring.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ lib/permstring.h | 3 +++ rsync.h | 2 +- 4 files changed, 56 insertions(+), 14 deletions(-) create mode 100644 lib/permstring.c create mode 100644 lib/permstring.h diff --git a/flist.c b/flist.c index 5bc02888..d9b0da7a 100644 --- a/flist.c +++ b/flist.c @@ -1,6 +1,7 @@ /* Copyright (C) Andrew Tridgell 1996 Copyright (C) Paul Mackerras 1996 + Copyright (C) 2001 by Martin Pool This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -111,24 +112,14 @@ static char *string_area_strdup(struct string_area **ap, const char *src) static void list_file_entry(struct file_struct *f) { - char perms[11] = "----------"; - char *perm_map = "rwxrwxrwx"; - int i; + char perms[11]; if (!f->basename) /* this can happen if duplicate names were removed */ return; - for (i=0;i<9;i++) { - if (f->mode & (1<mode)) perms[0] = 'l'; - if (S_ISDIR(f->mode)) perms[0] = 'd'; - if (S_ISBLK(f->mode)) perms[0] = 'b'; - if (S_ISCHR(f->mode)) perms[0] = 'c'; - if (S_ISSOCK(f->mode)) perms[0] = 's'; - if (S_ISFIFO(f->mode)) perms[0] = 'p'; - + permstring(perms, f->mode); + if (preserve_links && S_ISLNK(f->mode)) { rprintf(FINFO,"%s %11.0f %s %s -> %s\n", perms, diff --git a/lib/permstring.c b/lib/permstring.c new file mode 100644 index 00000000..4275dfea --- /dev/null +++ b/lib/permstring.c @@ -0,0 +1,48 @@ +/* + Copyright (C) Andrew Tridgell 1996 + Copyright (C) Paul Mackerras 1996 + Copyright (C) 2001 by Martin Pool + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include + +/** + * Produce a string representation of Unix mode bits like that used by + * ls(1). + * + * @param buf buffer of at least 11 characters + **/ +void permstring(char *perms, + int mode) +{ + static const char *perm_map = "rwxrwxrwx"; + int i; + + strcpy(perms, "----------"); + + for (i=0;i<9;i++) { + if (mode & (1<