1*ce7279d8Sjsg /* $OpenBSD: remote.h,v 1.39 2024/05/21 05:00:48 jsg Exp $ */ 29fac60a5Sjoris /* 39fac60a5Sjoris * Copyright (c) 2006 Joris Vink <joris@openbsd.org> 49fac60a5Sjoris * 59fac60a5Sjoris * Permission to use, copy, modify, and distribute this software for any 69fac60a5Sjoris * purpose with or without fee is hereby granted, provided that the above 79fac60a5Sjoris * copyright notice and this permission notice appear in all copies. 89fac60a5Sjoris * 99fac60a5Sjoris * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 109fac60a5Sjoris * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 119fac60a5Sjoris * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 129fac60a5Sjoris * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 139fac60a5Sjoris * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 149fac60a5Sjoris * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 159fac60a5Sjoris * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 169fac60a5Sjoris */ 179fac60a5Sjoris 189fac60a5Sjoris #ifndef H_REMOTE 199fac60a5Sjoris #define H_REMOTE 209fac60a5Sjoris 219fac60a5Sjoris struct cvs_req { 229fac60a5Sjoris char name[32]; 239fac60a5Sjoris int supported; 249fac60a5Sjoris 259fac60a5Sjoris void (*hdlr)(char *); 269fac60a5Sjoris int flags; 279fac60a5Sjoris }; 289fac60a5Sjoris 299fac60a5Sjoris struct cvs_resp { 309fac60a5Sjoris char name[32]; 319fac60a5Sjoris int supported; 329fac60a5Sjoris 339fac60a5Sjoris void (*hdlr)(char *); 349fac60a5Sjoris int flags; 359fac60a5Sjoris }; 369fac60a5Sjoris 379fac60a5Sjoris #define REQ_NEEDED 0x01 387917ff23Sjoris #define REQ_NEEDDIR 0x02 397917ff23Sjoris 409fac60a5Sjoris #define RESP_NEEDED 0x01 419fac60a5Sjoris 42e453c9e9Sjoris extern int server_response; 43e453c9e9Sjoris 44e453c9e9Sjoris #define SERVER_OK 0 45e453c9e9Sjoris #define SERVER_ERROR 1 46e453c9e9Sjoris 47a1742a04Sjoris #define CVS_SERVER_UNCHANGED "d[o.o]b" 48a1742a04Sjoris #define CVS_SERVER_UPTODATE (time_t)-2 49bf2db54cSjoris #define CVS_SERVER_QUESTIONABLE '?' 50a1742a04Sjoris 519fac60a5Sjoris void cvs_client_connect_to_server(void); 52f76ce13cSjoris void cvs_client_send_logmsg(char *); 5322872efdScanacar void cvs_client_send_request(char *, ...) 5422872efdScanacar __attribute__((format(printf, 1, 2))); 559fac60a5Sjoris void cvs_client_read_response(void); 569fac60a5Sjoris void cvs_client_get_responses(void); 579fac60a5Sjoris 589fac60a5Sjoris void cvs_client_ok(char *); 599fac60a5Sjoris void cvs_client_error(char *); 609fac60a5Sjoris void cvs_client_validreq(char *); 619fac60a5Sjoris void cvs_client_e(char *); 629fac60a5Sjoris void cvs_client_m(char *); 639fac60a5Sjoris void cvs_client_checkedin(char *); 649fac60a5Sjoris void cvs_client_updated(char *); 659fac60a5Sjoris void cvs_client_merged(char *); 669fac60a5Sjoris void cvs_client_removed(char *); 679fac60a5Sjoris void cvs_client_remove_entry(char *); 68a16f5d47Sxsa void cvs_client_set_static_directory(char *); 69239a5408Sxsa void cvs_client_clear_static_directory(char *); 70239a5408Sxsa void cvs_client_set_sticky(char *); 71239a5408Sxsa void cvs_client_clear_sticky(char *); 729fac60a5Sjoris 739fac60a5Sjoris void cvs_client_senddir(const char *); 749fac60a5Sjoris void cvs_client_sendfile(struct cvs_file *); 759fac60a5Sjoris void cvs_client_send_files(char **, int); 769fac60a5Sjoris 779fac60a5Sjoris void cvs_server_root(char *); 7822872efdScanacar void cvs_server_send_response(char *, ...) 7922872efdScanacar __attribute__((format(printf, 1, 2))); 809fac60a5Sjoris void cvs_server_validresp(char *); 819fac60a5Sjoris void cvs_server_validreq(char *); 829fac60a5Sjoris void cvs_server_globalopt(char *); 839fac60a5Sjoris void cvs_server_directory(char *); 849fac60a5Sjoris void cvs_server_entry(char *); 859fac60a5Sjoris void cvs_server_modified(char *); 869fac60a5Sjoris void cvs_server_useunchanged(char *); 879fac60a5Sjoris void cvs_server_unchanged(char *); 889fac60a5Sjoris void cvs_server_questionable(char *); 899fac60a5Sjoris void cvs_server_argument(char *); 9090f82a7aSxsa void cvs_server_argumentx(char *); 91b4a9add8Sxsa void cvs_server_set(char *); 9288f45eccSxsa void cvs_server_static_directory(char *); 93af06ad21Sxsa void cvs_server_sticky(char *); 94cadd0e2eSxsa void cvs_server_update_patches(char *); 95408908afSjoris void cvs_server_update_entry(const char *, struct cvs_file *cf); 960fcddf58Sotto void cvs_server_set_sticky(const char *, char *); 975dd120b0Sjoris void cvs_server_clear_sticky(char *); 985ede44f5Sjoris void cvs_server_exp_modules(char *); 999fac60a5Sjoris 10077a3e292Sxsa void cvs_server_add(char *); 10127de14f8Sjoris void cvs_server_import(char *); 10240133d45Sxsa void cvs_server_admin(char *); 103c3f1b62fSxsa void cvs_server_annotate(char *); 1049fac60a5Sjoris void cvs_server_commit(char *); 1055219eee5Sjoris void cvs_server_checkout(char *); 1069fac60a5Sjoris void cvs_server_diff(char *); 1075e1effbaStobias void cvs_server_export(char *); 108fd590a3cSxsa void cvs_server_init(char *); 1099fac60a5Sjoris void cvs_server_log(char *); 110e9658789Stobias void cvs_server_rannotate(char *); 111fd660bf2Stobias void cvs_server_rdiff(char *); 112fe3f9a6fSxsa void cvs_server_release(char *); 113ddb6a81aSxsa void cvs_server_remove(char *); 114fe3f9a6fSxsa void cvs_server_rlog(char *); 1154b15c6ebStobias void cvs_server_rtag(char *); 116ddb6a81aSxsa void cvs_server_status(char *); 117ddb6a81aSxsa void cvs_server_tag(char *); 118ddb6a81aSxsa void cvs_server_update(char *); 119f5e00cb0Sxsa void cvs_server_version(char *); 1209fac60a5Sjoris 1219fac60a5Sjoris void cvs_remote_classify_file(struct cvs_file *); 1220fcddf58Sotto void cvs_remote_output(char *); 1239fac60a5Sjoris char *cvs_remote_input(void); 124bb510330Sjoris void cvs_remote_receive_file(int, size_t); 1252e0d696aSjoris void cvs_remote_send_file(const char *, int); 1261b5598b0Sjoris void cvs_remote_send_file_buf(char *, BUF *, mode_t); 1279fac60a5Sjoris 12844001a5bSjoris extern int cvs_client_inlog_fd; 12944001a5bSjoris extern int cvs_client_outlog_fd; 13044001a5bSjoris 1319fac60a5Sjoris extern struct cvs_req cvs_requests[]; 1329fac60a5Sjoris extern struct cvs_resp cvs_responses[]; 1339fac60a5Sjoris 1349fac60a5Sjoris struct cvs_req *cvs_remote_get_request_info(const char *); 1359fac60a5Sjoris struct cvs_resp *cvs_remote_get_response_info(const char *); 1369fac60a5Sjoris 13738be6170Sjoris void cvs_validate_directory(const char *); 13838be6170Sjoris 1399fac60a5Sjoris #endif 140