1 /* 2 * Amanda, The Advanced Maryland Automatic Network Disk Archiver 3 * Copyright (c) 1991-1998 University of Maryland at College Park 4 * Copyright (c) 2007-2013 Zmanda, Inc. All Rights Reserved. 5 * All Rights Reserved. 6 * 7 * Permission to use, copy, modify, distribute, and sell this software and its 8 * documentation for any purpose is hereby granted without fee, provided that 9 * the above copyright notice appear in all copies and that both that 10 * copyright notice and this permission notice appear in supporting 11 * documentation, and that the name of U.M. not be used in advertising or 12 * publicity pertaining to distribution of the software without specific, 13 * written prior permission. U.M. makes no representations about the 14 * suitability of this software for any purpose. It is provided "as is" 15 * without express or implied warranty. 16 * 17 * U.M. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL U.M. 19 * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 21 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 22 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 * 24 * Authors: the Amanda Development Team. Its members are listed in a 25 * file named AUTHORS, in the root directory of this distribution. 26 */ 27 /* 28 * $Id: tapelist.h,v 1.2 2006/05/25 01:47:12 johnfranks Exp $ 29 * 30 */ 31 32 #ifndef TAPELIST_H 33 #define TAPELIST_H 34 35 #include "amanda.h" 36 37 /* XXX This looks like a lot of other things, apart from the string 38 * marshalling and unmarshalling. Things like the EXTRACT_LIST in amrecover's 39 * innards are functionally similar, so there's probably a lot of opportunity 40 * to pare down extraneous code here by mushing things like that in. Rainy 41 * day project, perhaps. 42 */ 43 44 typedef struct tapelist_s { 45 struct tapelist_s *next; 46 char *label; 47 int isafile; /* set to 1 and make *label the path to the file */ 48 off_t *files; 49 int *partnum; 50 int numfiles; 51 } tapelist_t; 52 53 int num_entries(tapelist_t *tapelist); 54 tapelist_t *append_to_tapelist(tapelist_t *tapelist, char *label, 55 off_t file, int partnum, int isafile); 56 char *marshal_tapelist(tapelist_t *tapelist, int escape); 57 tapelist_t *unmarshal_tapelist_str(char *tapelist_str); 58 char *escape_label(char *label); 59 char *unescape_label(char *label); 60 void free_tapelist(tapelist_t *tapelist); 61 void dump_tapelist(tapelist_t *); 62 63 #endif /* !TAPELIST_H */ 64