home *** CD-ROM | disk | FTP | other *** search
- /*
- checkout.c
- The Revision Control System
-
- Dwayne Phillips
- November1991
- */
-
- #include "rcs.h"
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
- char output_name[80], rcs_name[80], source_name[80],
- string[80];
- FILE *output_file, *rcs_file, *source_file;
- int extra_file = 0, rev = 0;
-
- if(argc < 2 || argc > 4){
- printf("\n\n\tusage: checkout [-r#] source-file"
- " [output-file]\n");
- exit(1);
- }
-
- if(argc == 2){
- strcpy(source_name, argv[1]);
- rev = 0;
- }
-
- if(argc == 3){
- /* checkout -r# source-name */
- if( (strncmp(argv[1], "-r", 2) == 0)){
- strcpy(string, argv[1]);
- strcpy(source_name, argv[2]);
- rev = rev_number(string);
- }
-
- /* checkout source-name output-name */
- if( (strncmp(argv[1], "-r", 2) != 0)){
- extra_file = 1;
- rev = 0;
- strcpy(source_name, argv[1]);
- strcpy(output_name, argv[2]);
- }
- } /* ends if argc == 3 */
-
-
- /* checkout -r# source-name output-name */
- if(argc == 4){
- if( (strncmp(argv[1], "-r", 2) != 0)){
- printf("\n\n\tusage: checkout [-r#] source-file"
- " [output-file]\n");
- exit(1);
- }
- else{
- extra_file = 1;
- rev = rev_number(argv[1]);
- strcpy(source_name, argv[2]);
- strcpy(output_name, argv[3]);
- }
- }
-
- create_rcs_file_name(source_name, rcs_name);
-
- if((rcs_file = fopen(rcs_name, "r")) == '\0'){
- printf("\ncheckout>> "
- "cannot open the rcs file >>%s<<",
- rcs_name);
- exit(-1);
- }
-
- if(extra_file == 1){ /* open output_name for writing */
- if((output_file = fopen(output_name, "w")) == '\0'){
- printf("\ncheckout>> "
- "cannot open the output file >>%s<<",
- output_name);
- exit(-1);
- }
- } /* ends if extra_file == 1 */
-
- else{ /* else open source_name for writing */
- if((source_file = fopen(source_name, "w")) == '\0'){
- printf("\ncheckout>> "
- "cannot open the source file >>%s<<",
- source_name);
- exit(-1);
- }
- } /* ends else extra_file == 0 */
-
- if(extra_file == 1){ /* use output file */
- if(rev == 0)
- copy_latest_rcs_to_source(rcs_file, output_file);
- else{
- go_to_correct_rev(rcs_file, rev);
- copy_rcs_to_source(rcs_file, output_file);
- }
- }
- else{ /* else use source_file */
- if(rev == 0)
- copy_latest_rcs_to_source(rcs_file, source_file);
- else{
- go_to_correct_rev(rcs_file, rev);
- copy_rcs_to_source(rcs_file, source_file);
- }
- }
-
- fclose(rcs_file);
- if(extra_file == 1)
- fclose(output_file);
- else
- fclose(source_file);
-
- }
-
-
-