* Refactored the source tree.
This commit is contained in:
		
							parent
							
								
									0eab306466
								
							
						
					
					
						commit
						53e376d836
					
				
					 50 changed files with 0 additions and 1 deletions
				
			
		
							
								
								
									
										79
									
								
								src/libmain/shared.cc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								src/libmain/shared.cc
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,79 @@ | |||
| #include <iostream> | ||||
| #include <cctype> | ||||
| 
 | ||||
| extern "C" { | ||||
| #include <aterm2.h> | ||||
| } | ||||
| 
 | ||||
| #include "globals.hh" | ||||
| #include "shared.hh" | ||||
| 
 | ||||
| #include "config.h" | ||||
| 
 | ||||
| 
 | ||||
| /* Initialize and reorder arguments, then call the actual argument
 | ||||
|    processor. */ | ||||
| static void initAndRun(int argc, char * * argv) | ||||
| { | ||||
|     /* Setup Nix paths. */ | ||||
|     nixStore = NIX_STORE_DIR; | ||||
|     nixDataDir = NIX_DATA_DIR; | ||||
|     nixLogDir = NIX_LOG_DIR; | ||||
|     nixDBPath = (string) NIX_STATE_DIR + "/db"; | ||||
| 
 | ||||
|     /* Put the arguments in a vector. */ | ||||
|     Strings args; | ||||
|     while (argc--) args.push_back(*argv++); | ||||
|     args.erase(args.begin()); | ||||
|      | ||||
|     /* Expand compound dash options (i.e., `-qlf' -> `-q -l -f'). */ | ||||
|     for (Strings::iterator it = args.begin(); | ||||
|          it != args.end(); ) | ||||
|     { | ||||
|         string arg = *it; | ||||
|         if (arg.length() > 2 && arg[0] == '-' && arg[1] != '-') { | ||||
|             for (unsigned int i = 1; i < arg.length(); i++) | ||||
|                 if (isalpha(arg[i])) | ||||
|                     args.insert(it, (string) "-" + arg[i]); | ||||
|                 else { | ||||
|                     args.insert(it, string(arg, i)); | ||||
|                     break; | ||||
|                 } | ||||
|             it = args.erase(it); | ||||
|         } else it++; | ||||
|     } | ||||
| 
 | ||||
|     run(args); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| static char buf[1024]; | ||||
| 
 | ||||
| int main(int argc, char * * argv) | ||||
| { | ||||
|     /* ATerm setup. */ | ||||
|     ATerm bottomOfStack; | ||||
|     ATinit(argc, argv, &bottomOfStack); | ||||
| 
 | ||||
|     /* Turn on buffering for cerr. */ | ||||
|     cerr.rdbuf()->pubsetbuf(buf, sizeof(buf)); | ||||
| 
 | ||||
|     try { | ||||
|         initAndRun(argc, argv); | ||||
|     } catch (UsageError & e) { | ||||
|         msg(lvlError,  | ||||
|             format( | ||||
|                 "error: %1%\n" | ||||
|                 "Try `%2% --help' for more information.") | ||||
|             % e.what() % programId); | ||||
|         return 1; | ||||
|     } catch (Error & e) { | ||||
|         msg(lvlError, format("error: %1%") % e.msg()); | ||||
|         return 1; | ||||
|     } catch (exception & e) { | ||||
|         msg(lvlError, format("error: %1%") % e.what()); | ||||
|         return 1; | ||||
|     } | ||||
| 
 | ||||
|     return 0; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue