X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=server-src%2Ftaperscan.h;h=b57ec9a5eccb03a1eb4e540e57e9aa70527e652c;hb=2627875b7d18858bc1f9f7652811e4d8c15a23eb;hp=fc0f7ca1124dc991f8d0b59032c19ae8bfea448a;hpb=12179dea039515c06168c0037d048566a3f623de;p=debian%2Famanda diff --git a/server-src/taperscan.h b/server-src/taperscan.h index fc0f7ca..b57ec9a 100644 --- a/server-src/taperscan.h +++ b/server-src/taperscan.h @@ -1,10 +1,9 @@ /* - * Copyright (c) 2005 Zmanda Inc. All Rights Reserved. + * Copyright (c) 2005-2008 Zmanda Inc. All Rights Reserved. * * 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. + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY @@ -15,8 +14,8 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * Contact information: Zmanda Inc, 505 N Mathlida Ave, Suite 120 - * Sunnyvale, CA 94085, USA, or: http://www.zmanda.com + * Contact information: Zmanda Inc, 465 S Mathlida Ave, Suite 300 + * Sunnyvale, CA 94086, USA, or: http://www.zmanda.com */ /* @@ -30,6 +29,9 @@ #ifndef TAPERSCAN_H #define TAPERSCAN_H +#include + +typedef struct taper_scan_tracker_s taper_scan_tracker_t; /* taper_scan(): Scans the changer to find a tape to use. Reads the tape * label, or invents a new one if label_new_tapes is in use. @@ -37,6 +39,10 @@ * re-read, because there may not actually exist a label * on-tape (for WORM or newly-labeled media). * + * This function may be run multiple times consecutively with + * the same tracker; each run will return a different elegible + * tape. The + * * Inputs: wantlabel * Outputs: Returns: -1 if an error occured or no tape was found. * 1 if the most desirable tape was found. @@ -47,15 +53,30 @@ * timestamp: What the timestamp string on-tape was. May be "X". * error_message: Debugging output. * tapedev: What device to use from now on. + * tracker: Pointer to an allocated taper_scan_tracker_t, used for + * persistance between runs. * * All returned strings are newly-allocated. */ +typedef void (*TaperscanOutputFunctor)(void * data, char * msg); +typedef gboolean (*TaperscanProlongFunctor)(void *data); + int taper_scan (char* wantlabel, - char** gotlabel, char** timestamp, - char **tapedev, - void taperscan_output_callback(void *data, char *msg), - void *data); + char** gotlabel, char** timestamp, + char **tapedev, + taper_scan_tracker_t* tracker, + TaperscanOutputFunctor output_functor, + void *output_data, + TaperscanProlongFunctor prolong_functor, + void *prolong_data + ); void FILE_taperscan_output_callback(void *data, char *msg); void CHAR_taperscan_output_callback(void *data, char *msg); +/* Returns a newly allocated tracker object. */ +taper_scan_tracker_t* taper_scan_tracker_new(void); + +/* Frees a tracker object. */ +void taper_scan_tracker_free(taper_scan_tracker_t*); + #endif /* !TAPERSCAN_H */