-/*
- * Prototypes for lib directory of Bacula
- *
- * Version $Id$
- */
/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2006 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
This program is Free Software; you can redistribute it and/or
modify it under the terms of version two of the GNU General Public
- License as published by the Free Software Foundation plus additions
- that are listed in the file LICENSE.
+ License as published by the Free Software Foundation and included
+ in the file LICENSE.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
*/
+/*
+ * Prototypes for lib directory of Bacula
+ *
+ * Version $Id$
+ */
+
+#ifndef __LIBPROTOS_H
+#define __LIBPROTOS_H
class JCR;
/* attr.c */
-ATTR *new_attr();
+ATTR *new_attr(JCR *jcr);
void free_attr(ATTR *attr);
int unpack_attributes_record(JCR *jcr, int32_t stream, char *rec, ATTR *attr);
void build_attr_output_fnames(JCR *jcr, ATTR *attr);
void create_pid_file (char *dir, const char *progname, int port);
int delete_pid_file (char *dir, const char *progname, int port);
void drop (char *uid, char *gid);
-int bmicrosleep (time_t sec, long usec);
+int bmicrosleep (int32_t sec, int32_t usec);
char *bfgets (char *s, int size, FILE *fd);
void make_unique_filename (POOLMEM **name, int Id, char *what);
#ifndef HAVE_STRTOLL
int close_bpipe(BPIPE *bpipe);
/* cram-md5.c */
-bool cram_md5_respond(BSOCK *bs, char *password, int *tls_remote_need, int *compatible);
-bool cram_md5_challenge(BSOCK *bs, char *password, int tls_local_need, int compatible);
+bool cram_md5_respond(BSOCK *bs, const char *password, int *tls_remote_need, int *compatible);
+bool cram_md5_challenge(BSOCK *bs, const char *password, int tls_local_need, int compatible);
void hmac_md5(uint8_t* text, int text_len, uint8_t* key, int key_len, uint8_t *hmac);
/* crc32.c */
bool crypto_digest_finalize (DIGEST *digest, uint8_t *dest, uint32_t *length);
void crypto_digest_free (DIGEST *digest);
SIGNATURE * crypto_sign_new (JCR *jcr);
-crypto_error_t crypto_sign_get_digest (SIGNATURE *sig, X509_KEYPAIR *keypair, DIGEST **digest);
+crypto_error_t crypto_sign_get_digest (SIGNATURE *sig, X509_KEYPAIR *keypair,
+ crypto_digest_t &algorithm, DIGEST **digest);
crypto_error_t crypto_sign_verify (SIGNATURE *sig, X509_KEYPAIR *keypair, DIGEST *digest);
int crypto_sign_add_signer (SIGNATURE *sig, DIGEST *digest, X509_KEYPAIR *keypair);
int crypto_sign_encode (SIGNATURE *sig, uint8_t *dest, uint32_t *length);
char * add_commas (char *val, char *buf);
char * edit_uint64 (uint64_t val, char *buf);
char * edit_int64 (int64_t val, char *buf);
+char * edit_int64_with_commas (int64_t val, char *buf);
bool duration_to_utime (char *str, utime_t *value);
bool size_to_uint64(char *str, int str_len, uint64_t *rtn_value);
char *edit_utime (utime_t val, char *buf, int buf_len);
bool is_a_number (const char *num);
+bool is_a_number_list (const char *n);
bool is_an_integer (const char *n);
bool is_name_valid (char *name, POOLMEM **msg);
JCR *jcr_walk_start();
JCR *jcr_walk_next(JCR *prev_jcr);
void jcr_walk_end(JCR *jcr);
+uint32_t get_jobid_from_tsd();
+JCR *get_jcr_from_tsd();
+void set_jcr_in_tsd(JCR *jcr);
+void remove_jcr_from_tsd(JCR *jcr);
/* lex.c */
void close_msg (JCR *jcr);
void add_msg_dest (MSGS *msg, int dest, int type, char *where, char *dest_code);
void rem_msg_dest (MSGS *msg, int dest, int type, char *where);
-void Jmsg (JCR *jcr, int type, time_t mtime, const char *fmt, ...);
-void dispatch_message (JCR *jcr, int type, time_t mtime, char *buf);
+void Jmsg (JCR *jcr, int type, utime_t mtime, const char *fmt, ...);
+void dispatch_message (JCR *jcr, int type, utime_t mtime, char *buf);
void init_console_msg (const char *wd);
void free_msgs_res (MSGS *msgs);
void dequeue_messages (JCR *jcr);
void set_trace (int trace_flag);
void set_db_type (const char *name);
+void register_message_callback(void msg_callback(int type, char *msg));
/* bnet_server.c */
void bnet_thread_server(dlist *addr, int max_clients, workq_t *client_wq,
BSOCK * bnet_bind (int port);
BSOCK * bnet_accept (BSOCK *bsock, char *who);
-/* idcache.c */
-char *getuser(uid_t uid);
-void free_getuser_cache();
-char *getgroup (gid_t gid);
-void free_getgroup_cache();
-
-/* python.c */
+/* pythonlib.c */
typedef int (EVENT_HANDLER)(JCR *jcr, const char *event);
-void init_python_interpreter(const char *progname, const char *scripts,
- const char *module);
-void term_python_interpreter();
-//extern EVENT_HANDLER *generate_daemon_event;
+//EVENT_HANDLER *generate_daemon_event;
int generate_daemon_event(JCR *jcr, const char *event);
-void lock_python();
-void unlock_python();
/* signal.c */
void init_signals (void terminate(int sig));
bool verify_peer);
void free_tls_context (TLS_CONTEXT *ctx);
#ifdef HAVE_TLS
-bool tls_postconnect_verify_host (TLS_CONNECTION *tls,
+bool tls_postconnect_verify_host(JCR *jcr, TLS_CONNECTION *tls,
const char *host);
-bool tls_postconnect_verify_cn (TLS_CONNECTION *tls,
+bool tls_postconnect_verify_cn(JCR *jcr, TLS_CONNECTION *tls,
alist *verify_list);
TLS_CONNECTION *new_tls_connection (TLS_CONTEXT *ctx, int fd);
-void free_tls_connection (TLS_CONNECTION *tls);
-bool tls_bsock_connect (BSOCK *bsock);
bool tls_bsock_accept (BSOCK *bsock);
-void tls_bsock_shutdown (BSOCK *bsock);
int tls_bsock_writen (BSOCK *bsock, char *ptr, int32_t nbytes);
int tls_bsock_readn (BSOCK *bsock, char *ptr, int32_t nbytes);
#endif /* HAVE_TLS */
+bool tls_bsock_connect (BSOCK *bsock);
+void tls_bsock_shutdown (BSOCK *bsock);
+void free_tls_connection (TLS_CONNECTION *tls);
+bool get_tls_require (TLS_CONTEXT *ctx);
+bool get_tls_enable (TLS_CONTEXT *ctx);
/* util.c */
+
+extern "C" {
+typedef char *(*job_code_callback_t)(JCR *, const char *);
+}
+
bool is_buf_zero (char *buf, int len);
void lcase (char *str);
void bash_spaces (char *str);
void bash_spaces (POOL_MEM &pm);
void unbash_spaces (char *str);
void unbash_spaces (POOL_MEM &pm);
-char * encode_time (time_t time, char *buf);
+char * encode_time (utime_t time, char *buf);
char * encode_mode (mode_t mode, char *buf);
int do_shell_expansion (char *name, int name_len);
void jobstatus_to_ascii (int JobStatus, char *msg, int maxlen);
-int run_program (char *prog, int wait, POOLMEM *results);
-int run_program_full_output (char *prog, int wait, POOLMEM *results);
+void jobstatus_to_ascii_gui (int JobStatus, char *msg, int maxlen);
+int run_program (char *prog, int wait, POOLMEM *&results);
+int run_program_full_output (char *prog, int wait, POOLMEM *&results);
const char * job_type_to_str (int type);
const char * job_status_to_str (int stat);
const char * job_level_to_str (int level);
+const char * volume_status_to_str (const char *status);
void make_session_key (char *key, char *seed, int mode);
-POOLMEM * edit_job_codes (JCR *jcr, char *omsg, char *imsg, const char *to);
+void encode_session_key (char *encode, char *session, char *key, int maxlen);
+void decode_session_key (char *decode, char *session, char *key, int maxlen);
+POOLMEM * edit_job_codes (JCR *jcr, char *omsg, char *imsg, const char *to, job_code_callback_t job_code_callback = NULL);
void set_working_directory (char *wd);
const char * last_path_separator (const char *str);
bool unregister_watchdog(watchdog_t *wd);
/* timers.c */
-btimer_t *start_child_timer(pid_t pid, uint32_t wait);
+btimer_t *start_child_timer(JCR *jcr, pid_t pid, uint32_t wait);
void stop_child_timer(btimer_t *wid);
-btimer_t *start_thread_timer(pthread_t tid, uint32_t wait);
+btimer_t *start_thread_timer(JCR *jcr, pthread_t tid, uint32_t wait);
void stop_thread_timer(btimer_t *wid);
btimer_t *start_bsock_timer(BSOCK *bs, uint32_t wait);
void stop_bsock_timer(btimer_t *wid);
+
+#endif /* __LIBPROTOS_H */