Kern's ToDo List
- 05 August 2004
+ 06 August 2004
Major development:
Project Developer
non-existent directories will not be restored properly.
Wish list:
+- Allow the user to select JobType for manual pruning/purging.
- Look at adding Client run command that will use the
port opened by the client.
- bscan does not put first of two volumes back with all info in
for (k=0; k<fo->base.size(); k++) {
sendit(sock, " B %s\n", fo->base.get(k));
}
+ if (fo->reader) {
+ sendit(sock, " D %s\n", fo->reader);
+ }
+ if (fo->writer) {
+ sendit(sock, " T %s\n", fo->writer);
+ }
sendit(sock, " N\n");
}
for (j=0; j<incexe->name_list.size(); j++) {
fopt->regex.destroy();
fopt->wild.destroy();
fopt->base.destroy();
+ if (fopt->reader) {
+ free(fopt->reader);
+ }
+ if (fopt->writer) {
+ free(fopt->writer);
+ }
free(fopt);
}
if (incexe->opts_list) {
alist regex; /* regex string(s) */
alist wild; /* wild card strings */
alist base; /* list of base names */
+ char *reader; /* reader program */
+ char *writer; /* writer program */
};
for (k=0; k<fo->base.size(); k++) {
bnet_fsend(fd, "B %s\n", fo->base.get(k));
}
+ if (fo->reader) {
+ bnet_fsend(fd, "D %s\n", fo->reader);
+ }
+ if (fo->writer) {
+ bnet_fsend(fd, "T %s\n", fo->writer);
+ }
bnet_fsend(fd, "N\n");
}
static void store_fname(LEX *lc, RES_ITEM *item, int index, int pass);
static void options_res(LEX *lc, RES_ITEM *item, int index, int pass);
static void store_base(LEX *lc, RES_ITEM *item, int index, int pass);
+static void store_reader(LEX *lc, RES_ITEM *item, int index, int pass);
+static void store_writer(LEX *lc, RES_ITEM *item, int index, int pass);
static void setup_current_opts(void);
{"wild", store_wild, NULL, 0, 0, 0},
{"exclude", store_opts, NULL, 0, 0, 0},
{"aclsupport", store_opts, NULL, 0, 0, 0},
+ {"reader", store_reader, NULL, 0, 0, 0},
+ {"writer", store_writer, NULL, 0, 0, 0},
{NULL, NULL, NULL, 0, 0, 0}
};
scan_to_eol(lc);
}
+/* Store reader info */
+static void store_reader(LEX *lc, RES_ITEM *item, int index, int pass)
+{
+ int token;
+
+ if (pass == 1) {
+ /*
+ * Pickup reader command
+ */
+ token = lex_get_token(lc, T_NAME);
+ res_incexe.current_opts->reader = bstrdup(lc->str);
+ } else { /* pass 2 */
+ lex_get_token(lc, T_ALL);
+ }
+ scan_to_eol(lc);
+}
+
+/* Store writer innfo */
+static void store_writer(LEX *lc, RES_ITEM *item, int index, int pass)
+{
+ int token;
+
+ if (pass == 1) {
+ /*
+ * Pickup writer command
+ */
+ token = lex_get_token(lc, T_NAME);
+ res_incexe.current_opts->writer = bstrdup(lc->str);
+ } else { /* pass 2 */
+ lex_get_token(lc, T_ALL);
+ }
+ scan_to_eol(lc);
+}
+
+
/* Store Wild-card info */
static void store_wild(LEX *lc, RES_ITEM *item, int index, int pass)
* (i.e. no files, ...) for deletion.
*/
const char *select_backup_del =
- "SELECT DelCandidates.JobId "
+ "SELECT DISTINCT DelCandidates.JobId "
"FROM Job,DelCandidates "
- "WHERE (JobTDate<%s AND ((DelCandidates.JobFiles=0) OR "
+ "WHERE (Job.JobTDate<%s AND ((DelCandidates.JobFiles=0) OR "
"(DelCandidates.JobStatus!='T'))) OR "
"(Job.JobTDate>%s "
"AND Job.ClientId=%u "
"AND Job.Type='B' "
"AND Job.Level='F' "
"AND Job.JobStatus='T' "
- "AND Job.FileSetId=DelCandidates.FileSetId) "
- "GROUP BY DelCandidates.JobId";
+ "AND Job.FileSetId=DelCandidates.FileSetId)";
/* Select Jobs from the DelCandidates table that have a
* more recent InitCatalog -- i.e. are not the only InitCatalog
* This is the list of Jobs to delete for a Verify Job.
*/
const char *select_verify_del =
- "SELECT DelCandidates.JobId "
+ "SELECT DISTINCT DelCandidates.JobId "
"FROM Job,DelCandidates "
- "WHERE Job.JobTDate>%s "
+ "WHERE (Job.JobTdate<%s AND DelCandidates.JobStatus!='T') OR "
+ "(Job.JobTDate>%s "
"AND Job.ClientId=%u "
"AND Job.Type='V' "
"AND Job.Level='V' "
"AND Job.JobStatus='T' "
- "AND Job.FileSetId=DelCandidates.FileSetId "
- "GROUP BY DelCandidates.JobId";
+ "AND Job.FileSetId=DelCandidates.FileSetId)";
/* Select Jobs from the DelCandidates table.
* This is the list of Jobs to delete for a Restore Job.
*/
const char *select_restore_del =
- "SELECT DelCandidates.JobId "
+ "SELECT DISTINCT DelCandidates.JobId "
"FROM Job,DelCandidates "
- "WHERE Job.JobTDate>%s "
+ "WHERE (Job.JobTdate<%s AND delCandidates.JobStatus!='T') OR "
+ "(Job.JobTDate>%s "
"AND Job.ClientId=%u "
- "AND Job.Type='R' "
- "GROUP BY DelCandidates.JobId";
+ "AND Job.Type='R')";
+/* Select Jobs from the DelCandidates table.
+ * This is the list of Jobs to delete for an Admin Job.
+ */
+const char *select_admin_del =
+ "SELECT DISTINCT DelCandidates.JobId "
+ "FROM Job,DelCandidates "
+ "WHERE (Job.JobTdate<%s AND delCandidates.JobStatus!='T') OR "
+ "(Job.JobTDate>%s "
+ "AND Job.ClientId=%u "
+ "AND Job.Type='D')";
/* ======= ua_restore.c */
extern char *select_backup_del;
extern char *select_verify_del;
extern char *select_restore_del;
+extern char *select_admin_del;
extern char *cnt_File;
extern char *del_File;
extern char *upd_Purged;
del.PurgedFiles = (char *)malloc(del.max_ids);
switch (JobType) {
- case JT_ADMIN:
case JT_BACKUP:
Mmsg(&query, select_backup_del, ed1, ed1, cr.ClientId);
break;
case JT_RESTORE:
- Mmsg(&query, select_restore_del, ed1, cr.ClientId);
+ Mmsg(&query, select_restore_del, ed1, ed1, cr.ClientId);
break;
case JT_VERIFY:
- Mmsg(&query, select_verify_del, ed1, cr.ClientId);
+ Mmsg(&query, select_verify_del, ed1, ed1, cr.ClientId);
+ break;
+ case JT_ADMIN:
+ Mmsg(&query, select_admin_del, ed1, ed1, cr.ClientId);
break;
}
if (!db_sql_query(ua->db, query, job_delete_handler, (void *)&del)) {
for ( ; !done; ) {
char *fname;
int len;
+ bool gui_save;
start_prompt(ua, _("To select the JobIds, you have the following choices:\n"));
for (int i=0; list[i]; i++) {
case -1: /* error */
return 0;
case 0: /* list last 20 Jobs run */
+ gui_save = ua->jcr->gui;
+ ua->jcr->gui = true;
db_list_sql_query(ua->jcr, ua->db, uar_list_jobs, prtit, ua, 1, HORZ_LIST);
+ ua->jcr->gui = gui_save;
done = false;
break;
case 1: /* list where a file is saved */
db_escape_string(fname, ua->cmd, len);
Mmsg(&rx->query, uar_file, fname);
free(fname);
+ gui_save = ua->jcr->gui;
+ ua->jcr->gui = true;
db_list_sql_query(ua->jcr, ua->db, rx->query, prtit, ua, 1, HORZ_LIST);
+ ua->jcr->gui = gui_save;
done = false;
break;
case 2: /* enter a list of JobIds */
if (!get_cmd(ua, _("Enter SQL list command: "))) {
return 0;
}
+ gui_save = ua->jcr->gui;
+ ua->jcr->gui = true;
db_list_sql_query(ua->jcr, ua->db, ua->cmd, prtit, ua, 1, HORZ_LIST);
+ ua->jcr->gui = gui_save;
done = false;
break;
case 4: /* Select the most recent backups */
if (ff_pkt->flags & FO_PORTABLE) {
set_portable_backup(&ff_pkt->bfd); /* disable Win32 BackupRead() */
}
+ if (ff_pkt->reader) {
+ set_prog(&ff_pkt->bfd, ff_pkt->reader, jcr);
+ }
/*
* Open any file with data that we intend to save.
if (inetd_request) {
/* Socket is on fd 0 */
struct sockaddr client_addr;
- int port = -1;
- size_t client_addr_len = sizeof(client_addr);
- if (getsockname(0, &client_addr, &client_addr_len) == 0) {
- if (client_addr.sa_family == AF_INET) {
- port = ((struct sockaddr_in*)&client_addr)->sin_port;
- }
+ int port = -1;
+ socklen_t client_addr_len = sizeof(client_addr);
+ if (getsockname(0, &client_addr, &client_addr_len) == 0) {
+ if (client_addr.sa_family == AF_INET) {
+ port = ((struct sockaddr_in*)&client_addr)->sin_port;
+ }
#ifdef HAVE_IPV6
- else if (client_addr.sa_family == AF_INET6) {
- port = ((struct sockaddr_in6*)&client_addr)->sin6_port;
- }
+ else if (client_addr.sa_family == AF_INET6) {
+ port = ((struct sockaddr_in6*)&client_addr)->sin6_port;
+ }
#endif
- }
+ }
BSOCK *bs = init_bsock(NULL, 0, "client", "unknown client", port, &client_addr);
handle_client_request((void *)bs);
} else {
/* Become server, and handle requests */
IPADDR *p;
foreach_dlist(p, me->FDaddrs) {
- Dmsg1(10, "filed: listening on port %d\n", ntohs(p->get_port()));
+ Dmsg1(10, "filed: listening on port %d\n", ntohs(p->get_port()));
}
bnet_thread_server(me->FDaddrs, me->MaxConcurrentJobs, &dir_workq, handle_client_request);
}
fo->regex.destroy();
fo->wild.destroy();
fo->base.destroy();
+ if (fo->reader) {
+ free(fo->reader);
+ }
+ if (fo->writer) {
+ free(fo->writer);
+ }
}
incexe->opts_list.destroy();
incexe->name_list.destroy();
set_options(current_opts, item);
state = state_options;
break;
+ case 'D':
+ current_opts = start_options(ff);
+ current_opts->reader = bstrdup(item);
+ state = state_options;
+ break;
+ case 'T':
+ current_opts = start_options(ff);
+ current_opts->writer = bstrdup(item);
+ state = state_options;
+ break;
default:
Jmsg(jcr, M_FATAL, 0, "Invalid FileSet command: %s\n", item);
state = state_error;
for (k=0; k<fo->base.size(); k++) {
Dmsg1(400, "B %s\n", (char *)fo->base.get(k));
}
+ if (fo->reader) {
+ Dmsg1(400, "D %s\n", fo->reader);
+ }
+ if (fo->writer) {
+ Dmsg1(400, "T %s\n", fo->writer);
+ }
}
for (j=0; j<incexe->name_list.size(); j++) {
Dmsg1(400, "F %s\n", (char *)incexe->name_list.get(j));
bfd->fid = -1;
bfd->mode = BF_CLOSED;
bfd->use_backup_api = have_win32_api();
- bfd->errmsg = NULL;
- bfd->lpContext = NULL;
- bfd->lerror = 0;
- bfd->berrno = 0;
}
/*
return 1;
}
+void set_prog(BFILE *bfd, char *prog, JCR *jcr)
+{
+ bfd->prog = prog;
+ bfd->jcr = jcr;
+}
+
/*
* Return 1 if we are NOT using Win32 BackupWrite()
* return 0 if are
return 1; /* portable by definition */
}
+void set_prog(BFILE *bfd, char *prog, JCR *jcr)
+{
+ bfd->prog = prog;
+ bfd->jcr = jcr;
+}
+
+
int is_stream_supported(int stream)
{
/* No Win32 backup on this machine */
int bopen(BFILE *bfd, const char *fname, int flags, mode_t mode)
{
+ /* Open reader/writer program */
+ if (bfd->prog) {
+ POOLMEM *ecmd = get_pool_memory(PM_FNAME);
+ ecmd = edit_job_codes(bfd->jcr, ecmd, bfd->prog, fname);
+ char *pmode;
+ if (flags & O_RDONLY) {
+ pmode = "r";
+ } else {
+ pmode = "w";
+ }
+ bfd->bpipe = open_bpipe(ecmd, 0, pmode);
+ if (bfd->bpipe == NULL) {
+ bfd->berrno = errno;
+ bfd->fid = -1;
+ free_pool_memory(ecmd);
+ return -1;
+ }
+ free_pool_memory(ecmd);
+ if (flags & O_RDONLY) {
+ bfd->fid = fileno(bfd->bpipe->rfd);
+ } else {
+ bfd->fid = fileno(bfd->bpipe->wfd);
+ }
+ errno = 0;
+ return bfd->fid;
+ }
+
+ /* Normal file open */
bfd->fid = open(fname, flags, mode);
bfd->berrno = errno;
Dmsg1(400, "Open file %d\n", bfd->fid);
if (bfd->fid == -1) {
return 0;
}
+ /* Close reader/writer program */
+ if (bfd->prog && bfd->bpipe) {
+ stat = close_bpipe(bfd->bpipe);
+ bfd->berrno = errno;
+ bfd->fid = -1;
+ bfd->bpipe = NULL;
+ return stat;
+ }
+
+ /* Close normal file */
stat = close(bfd->fid);
bfd->berrno = errno;
bfd->fid = -1;
-
return stat;
}
DWORD rw_bytes; /* Bytes read or written */
DWORD lerror; /* Last error code */
int berrno; /* errno */
+ char *prog; /* reader/writer program if any */
+ BPIPE *bpipe; /* pipe for reader */
+ JCR *jcr; /* jcr for editing job codes */
};
HANDLE bget_handle(BFILE *bfd);
struct BFILE {
int fid; /* file id on Unix */
int berrno;
+ char *prog; /* reader/writer program if any */
+ BPIPE *bpipe; /* pipe for reader */
+ JCR *jcr; /* jcr for editing job codes */
};
#endif
int is_bopen(BFILE *bfd);
int set_win32_backup(BFILE *bfd);
int set_portable_backup(BFILE *bfd);
+void set_prog(BFILE *bfd, char *prog, JCR *jcr);
int have_win32_api();
int is_portable_backup(BFILE *bfd);
int is_stream_supported(int stream);
for (j=0; j<incexe->opts_list.size(); j++) {
findFOPTS *fo = (findFOPTS *)incexe->opts_list.get(j);
+ ff->flags = fo->flags;
+ ff->GZIP_level = fo->GZIP_level;
+ ff->reader = fo->reader;
+ ff->writer = fo->writer;
for (k=0; k<fo->wild.size(); k++) {
if (fnmatch((char *)fo->wild.get(k), ff->fname, 0) == 0) {
- ff->flags = fo->flags;
- ff->GZIP_level = fo->GZIP_level;
if (ff->flags & FO_EXCLUDE) {
return false; /* reject file */
}
const int nmatch = 30;
regmatch_t pmatch[nmatch];
if (regexec((regex_t *)fo->regex.get(k), ff->fname, nmatch, pmatch, 0) == 0) {
- ff->flags = fo->flags;
- ff->GZIP_level = fo->GZIP_level;
if (ff->flags & FO_EXCLUDE) {
return false; /* reject file */
}
* Status codes returned by create_file()
*/
enum {
- CF_SKIP = 1, /* skip file (not newer or something) */
- CF_ERROR, /* error creating file */
- CF_EXTRACT, /* file created, data to extract */
- CF_CREATED /* file created, no data to extract */
+ CF_SKIP = 1, /* skip file (not newer or something) */
+ CF_ERROR, /* error creating file */
+ CF_EXTRACT, /* file created, data to extract */
+ CF_CREATED /* file created, no data to extract */
};
/* Options saved int "options" of the include/exclude lists.
* They are directly jammed ito "flag" of ff packet
*/
-#define FO_MD5 (1<<1) /* Do MD5 checksum */
-#define FO_GZIP (1<<2) /* Do Zlib compression */
-#define FO_NO_RECURSION (1<<3) /* no recursion in directories */
-#define FO_MULTIFS (1<<4) /* multiple file systems */
-#define FO_SPARSE (1<<5) /* do sparse file checking */
-#define FO_IF_NEWER (1<<6) /* replace if newer */
-#define FO_NOREPLACE (1<<7) /* never replace */
-#define FO_READFIFO (1<<8) /* read data from fifo */
-#define FO_SHA1 (1<<9) /* Do SHA1 checksum */
-#define FO_PORTABLE (1<<10) /* Use portable data format -- no BackupWrite */
-#define FO_MTIMEONLY (1<<11) /* Use mtime rather than mtime & ctime */
-#define FO_KEEPATIME (1<<12) /* Reset access time */
-#define FO_EXCLUDE (1<<13) /* Exclude file */
-#define FO_ACL (1<<14) /* Backup ACLs */
+#define FO_MD5 (1<<1) /* Do MD5 checksum */
+#define FO_GZIP (1<<2) /* Do Zlib compression */
+#define FO_NO_RECURSION (1<<3) /* no recursion in directories */
+#define FO_MULTIFS (1<<4) /* multiple file systems */
+#define FO_SPARSE (1<<5) /* do sparse file checking */
+#define FO_IF_NEWER (1<<6) /* replace if newer */
+#define FO_NOREPLACE (1<<7) /* never replace */
+#define FO_READFIFO (1<<8) /* read data from fifo */
+#define FO_SHA1 (1<<9) /* Do SHA1 checksum */
+#define FO_PORTABLE (1<<10) /* Use portable data format -- no BackupWrite */
+#define FO_MTIMEONLY (1<<11) /* Use mtime rather than mtime & ctime */
+#define FO_KEEPATIME (1<<12) /* Reset access time */
+#define FO_EXCLUDE (1<<13) /* Exclude file */
+#define FO_ACL (1<<14) /* Backup ACLs */
struct s_included_file {
struct s_included_file *next;
- uint32_t options; /* backup options */
- int level; /* compression level */
- int len; /* length of fname */
- int pattern; /* set if wild card pattern */
- char VerifyOpts[20]; /* Options for verify */
+ uint32_t options; /* backup options */
+ int level; /* compression level */
+ int len; /* length of fname */
+ int pattern; /* set if wild card pattern */
+ char VerifyOpts[20]; /* Options for verify */
char fname[1];
};
* of the structure are passed by the Director to the
* File daemon and recompiled back into this structure
*/
-#undef MAX_FOPTS
+#undef MAX_FOPTS
#define MAX_FOPTS 30
enum {
/* File options structure */
struct findFOPTS {
- uint32_t flags; /* options in bits */
- int GZIP_level; /* GZIP level */
- char VerifyOpts[MAX_FOPTS]; /* verify options */
- alist regex; /* regex string(s) */
- alist wild; /* wild card strings */
- alist base; /* list of base names */
+ uint32_t flags; /* options in bits */
+ int GZIP_level; /* GZIP level */
+ char VerifyOpts[MAX_FOPTS]; /* verify options */
+ alist regex; /* regex string(s) */
+ alist wild; /* wild card strings */
+ alist base; /* list of base names */
+ char *reader; /* reader program */
+ char *writer; /* writer program */
};
/* This is either an include item or an exclude item */
struct findINCEXE {
- findFOPTS *current_opts; /* points to current options structure */
- alist opts_list; /* options list */
- alist name_list; /* filename list -- holds char * */
+ findFOPTS *current_opts; /* points to current options structure */
+ alist opts_list; /* options list */
+ alist name_list; /* filename list -- holds char * */
};
/*
*/
struct findFILESET {
int state;
- findINCEXE *incexe; /* current item */
+ findINCEXE *incexe; /* current item */
alist include_list;
alist exclude_list;
};
* first argument to the find_files callback subroutine.
*/
struct FF_PKT {
- char *fname; /* filename */
- char *link; /* link if file linked */
- POOLMEM *sys_fname; /* system filename */
- struct stat statp; /* stat packet */
- int32_t FileIndex; /* FileIndex of this file */
- int32_t LinkFI; /* FileIndex of main hard linked file */
- struct f_link *linked; /* Set if this file is hard linked */
- int type; /* FT_ type from above */
- uint32_t flags; /* backup options */
- int ff_errno; /* errno */
- BFILE bfd; /* Bacula file descriptor */
- time_t save_time; /* start of incremental time */
- bool dereference; /* follow links (not implemented) */
- bool null_output_device; /* using null output device */
- bool incremental; /* incremental save */
- int GZIP_level; /* compression level */
+ char *fname; /* filename */
+ char *link; /* link if file linked */
+ POOLMEM *sys_fname; /* system filename */
+ struct stat statp; /* stat packet */
+ int32_t FileIndex; /* FileIndex of this file */
+ int32_t LinkFI; /* FileIndex of main hard linked file */
+ struct f_link *linked; /* Set if this file is hard linked */
+ int type; /* FT_ type from above */
+ int ff_errno; /* errno */
+ BFILE bfd; /* Bacula file descriptor */
+ time_t save_time; /* start of incremental time */
+ bool dereference; /* follow links (not implemented) */
+ bool null_output_device; /* using null output device */
+ bool incremental; /* incremental save */
char VerifyOpts[20];
struct s_included_file *included_files_list;
struct s_excluded_file *excluded_files_list;
findFILESET *fileset;
int (*callback)(FF_PKT *, void *); /* User's callback */
+ /* Values set by accept_file while processing Options */
+ uint32_t flags; /* backup options */
+ int GZIP_level; /* compression level */
+ char *reader; /* reader program */
+ char *writer; /* writer program */
+
/* List of all hard linked files found */
- struct f_link *linklist; /* hard linked files */
+ struct f_link *linklist; /* hard linked files */
};
foreach_dlist(ipaddr, addr_list) {
ipaddr->set_port(htons(port));
- char allbuf[256 * addr_list->size()];
+ char allbuf[256 * 10];
char curbuf[256];
Dmsg2(100, "Current %sAll %s\n",
ipaddr->build_address_str(curbuf, sizeof(curbuf)),
char buf[128];
dlist sockfds;
- char allbuf[256 * addrs->size()];
+ char allbuf[256 * 10];
Dmsg1(100, "Addresses %s\n", build_addresses_str(addrs, allbuf, sizeof(allbuf)));
foreach_dlist(p, addrs) {
*/
/*
- Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
+ Copyright (C) 2002-2004 Kern Sibbald and John Walker
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
CLEAN :
+ -@erase "$(INTDIR)\address_conf.obj"
-@erase "$(INTDIR)\alist.obj"
-@erase "$(INTDIR)\alloc.obj"
-@erase "$(INTDIR)\attr.obj"
LINK32=link.exe
LINK32_FLAGS=user32.lib advapi32.lib gdi32.lib wsock32.lib shell32.lib pthreadVCE.lib zlib.lib /nologo /subsystem:windows /pdb:none /machine:I386 /nodefaultlib:"MSVCRT.lib" /out:"$(OUTDIR)\bacula-fd.exe" /libpath:"../../../../depkgs-win32/pthreads" /libpath:"../../../../depkgs-win32/zlib"
LINK32_OBJS= \
+ "$(INTDIR)\address_conf.obj" \
"$(INTDIR)\alist.obj" \
"$(INTDIR)\alloc.obj" \
"$(INTDIR)\attr.obj" \
CLEAN :
+ -@erase "$(INTDIR)\address_conf.obj"
+ -@erase "$(INTDIR)\address_conf.sbr"
-@erase "$(INTDIR)\alist.obj"
-@erase "$(INTDIR)\alist.sbr"
-@erase "$(INTDIR)\alloc.obj"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\baculafd.bsc"
BSC32_SBRS= \
+ "$(INTDIR)\address_conf.sbr" \
"$(INTDIR)\alist.sbr" \
"$(INTDIR)\alloc.sbr" \
"$(INTDIR)\attr.sbr" \
LINK32=link.exe
LINK32_FLAGS=user32.lib advapi32.lib gdi32.lib shell32.lib wsock32.lib pthreadVCE.lib zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /pdb:none /debug /machine:I386 /nodefaultlib:"MSVCRT.lib" /out:"$(OUTDIR)\bacula-fd.exe" /libpath:"../../../../depkgs-win32/pthreads" /libpath:"../../../../depkgs-win32/zlib"
LINK32_OBJS= \
+ "$(INTDIR)\address_conf.obj" \
"$(INTDIR)\alist.obj" \
"$(INTDIR)\alloc.obj" \
"$(INTDIR)\attr.obj" \
!IF "$(CFG)" == "baculafd - Win32 Release" || "$(CFG)" == "baculafd - Win32 Debug"
+
+SOURCE=..\lib\address_conf.cpp
+
+!IF "$(CFG)" == "baculafd - Win32 Release"
+
+
+"$(INTDIR)\address_conf.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "baculafd - Win32 Debug"
+
+
+"$(INTDIR)\address_conf.obj" "$(INTDIR)\address_conf.sbr" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
SOURCE=..\lib\alist.cpp
!IF "$(CFG)" == "baculafd - Win32 Release"
!ENDIF
+
SOURCE=..\lib\alloc.cpp
!IF "$(CFG)" == "baculafd - Win32 Release"
CLEAN :
+ -@erase "$(INTDIR)\address_conf.obj"
-@erase "$(INTDIR)\alist.obj"
-@erase "$(INTDIR)\authenticate.obj"
-@erase "$(INTDIR)\base64.obj"
LINK32=link.exe
LINK32_FLAGS=wsock32.lib pthreadVCE.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"$(OUTDIR)\bconsole.exe" /libpath:"../../../../depkgs-win32/pthreads"
LINK32_OBJS= \
+ "$(INTDIR)\address_conf.obj" \
"$(INTDIR)\alist.obj" \
"$(INTDIR)\authenticate.obj" \
"$(INTDIR)\base64.obj" \
CLEAN :
+ -@erase "$(INTDIR)\address_conf.obj"
-@erase "$(INTDIR)\alist.obj"
-@erase "$(INTDIR)\authenticate.obj"
-@erase "$(INTDIR)\base64.obj"
LINK32=link.exe
LINK32_FLAGS=wsock32.lib pthreadVCE.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /out:"$(OUTDIR)\bconsole.exe" /libpath:"../../../../depkgs-win32/pthreads"
LINK32_OBJS= \
+ "$(INTDIR)\address_conf.obj" \
"$(INTDIR)\alist.obj" \
"$(INTDIR)\authenticate.obj" \
"$(INTDIR)\base64.obj" \
!IF "$(CFG)" == "console - Win32 Release" || "$(CFG)" == "console - Win32 Debug"
+
+SOURCE=..\lib\address_conf.cpp
+
+"$(INTDIR)\address_conf.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
SOURCE=..\lib\alist.cpp
"$(INTDIR)\alist.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
+
SOURCE=.\authenticate.cpp
"$(INTDIR)\authenticate.obj" : $(SOURCE) "$(INTDIR)"
--- /dev/null
+#include "../../lib/address_conf.c"
+..\lib\address_conf
..\lib\alist
..\lib\alloc
..\lib\attr
CLEAN :
+ -@erase "$(INTDIR)\address_conf.obj"
-@erase "$(INTDIR)\alist.obj"
-@erase "$(INTDIR)\alloc.obj"
-@erase "$(INTDIR)\attr.obj"
wldap32.lib pthreadVCE.lib zlib.lib /nodefaultlib:libcmt.lib \
/nologo /subsystem:windows /machine:I386 /out:"$(OUTDIR)\wx-console.exe" /libpath:"../../../../depkgs-win32/wx/lib" /libpath:"../../../../depkgs-win32/pthreads" /libpath:"../../../../depkgs-win32/zlib"
LINK32_OBJS= \
+ "$(INTDIR)\address_conf.obj" \
"$(INTDIR)\alist.obj" \
"$(INTDIR)\alloc.obj" \
"$(INTDIR)\attr.obj" \
ALL : "$(OUTDIR)\wx-console.exe" "$(OUTDIR)\wx-console.bsc"
CLEAN :
+ -@erase "$(INTDIR)\address_conf.obj
+ -@erase "$(INTDIR)\address_conf.sbr"
-@erase "$(INTDIR)\alist.obj
-@erase "$(INTDIR)\alist.sbr"
-@erase "$(INTDIR)\alloc.obj
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\wx-console.bsc"
BSC32_SBRS= \
+ "$(INTDIR)\address_conf.sbr" \
"$(INTDIR)\alist.sbr" \
"$(INTDIR)\alloc.sbr" \
"$(INTDIR)\attr.sbr" \
wldap32.lib pthreadVCE.lib zlib.lib /nodefaultlib:libcmtd.lib \
/nologo /subsystem:windows /pdb:none /debug /machine:I386 /out:"$(OUTDIR)\wx-console.exe" /libpath:"../../../../depkgs-win32/wx/lib" /libpath:"../../../../depkgs-win32/pthreads" /libpath:"../../../../depkgs-win32/zlib"
LINK32_OBJS= \
+ "$(INTDIR)\address_conf.obj" \
"$(INTDIR)\alist.obj" \
"$(INTDIR)\alloc.obj" \
"$(INTDIR)\attr.obj" \
"$(INTDIR)\wx-console_private.res" : $(SOURCE) "$(INTDIR)"
$(RSC) /l 0x409 /fo"$(INTDIR)\wx-console_private.res" /d "NDEBUG" $(SOURCE)
+FILENAME=address_conf
+SOURCE=..\lib\address_conf.cpp
+!IF "$(CFG)" == "wx-console - Win32 Release"
+
+
+"$(INTDIR)\$(FILENAME).obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "wx-console - Win32 Debug"
+
+
+"$(INTDIR)\$(FILENAME).obj" "$(INTDIR)\$(FILENAME).sbr" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+
FILENAME=alist
SOURCE=..\lib\alist.cpp
!IF "$(CFG)" == "wx-console - Win32 Release"