apr_pool_t *mysvn_pool = NULL;
svn_client_ctx_t *mysvn_ctx = NULL;
svn_opt_revision_t *mysvn_rev = NULL;
+svn_opt_revision_t *mysvn_rev_peg = NULL;
static const svn_version_checklist_t mysvn_checklist[] = {
{ "svn_subr", svn_subr_version },
mysvn_ctx->auth_baton = ab;
mysvn_ctx->conflict_func = NULL;
mysvn_ctx->conflict_baton = NULL;
+ // Now our magic revisions
mysvn_rev = (svn_opt_revision_t*) apr_palloc(pool,
sizeof(svn_opt_revision_t));
if (!mysvn_rev)
return EXIT_FAILURE;
+ mysvn_rev_peg = (svn_opt_revision_t*) apr_palloc(pool,
+ sizeof(svn_opt_revision_t));
+ if (!mysvn_rev_peg)
+ return EXIT_FAILURE;
mysvn_rev->kind = svn_opt_revision_head;
+ mysvn_rev_peg->kind = svn_opt_revision_unspecified;
// Success if we got this far
mysvn_pool = pool;
return EXIT_SUCCESS;
if (mysvn_setup() != EXIT_SUCCESS)
exit(1);
apr_pool_t *subpool = svn_pool_create(mysvn_pool);
- err = svn_client_checkout(NULL,
+ err = svn_client_checkout3(NULL,
command,
dest_base_dir,
+ mysvn_rev_peg,
mysvn_rev,
- 1,
+ svn_depth_infinity,
+ 0,
+ 0,
mysvn_ctx,
subpool);
if (err) {
source_base = rsync_base;
}
- // We just want one grid square, no FGFS communications
- if (testing) {
- sync_areas( 37, -123, 0, 0 );
- exit(0);
- }
-
// Must call this before any other net stuff
netInit( &argc,argv );
int last_lat = nowhere;
int last_lon = nowhere;
bool recv_msg = false;
- char synced_other = 'J';
+
+ char synced_other;
+ for ( synced_other = 'K'; synced_other <= 'Z'; synced_other++ ) {
+ char dir[512];
+ snprintf( dir, 512, "Airports/%c", synced_other );
+ waitingTiles.push_back( dir );
+ }
+ for ( synced_other = 'A'; synced_other <= 'J'; synced_other++ ) {
+ char dir[512];
+ snprintf( dir, 512, "Airports/%c", synced_other );
+ waitingTiles.push_back( dir );
+ }
+ if ( use_svn ) {
+ waitingTiles.push_back( "Models" );
+ }
while ( true ) {
recv_msg = false;
+ if ( testing ) {
+ // No FGFS communications
+ lat = 37;
+ lon = -123;
+ recv_msg = (lat != last_lat) || (lon != last_lon);
+ }
while ( (len = s.recv(msg, maxlen, 0)) >= 0 ) {
msg[len] = '\0';
recv_msg = true;
}
if ( recv_msg ) {
- if ( lat != last_lat || lon != last_lon ) {
+ // Ignore messages where the location does not change
+ if ( lat != last_lat || lon != last_lon ) {
cout << "pos in msg = " << lat << "," << lon << endl;
std::deque<std::string> oldRequests;
oldRequests.swap( waitingTiles );
waitingTiles.push_back( oldRequests.front() );
oldRequests.pop_front();
}
- } else if ( !waitingTiles.empty() ) {
- getWaitingTile();
- } else {
- if ( last_lat == nowhere || last_lon == nowhere ) {
- cout << "Waiting for FGFS to finish startup" << endl;
- }
- char c;
- while ( !isdigit( c = ++synced_other ) && !isupper( c ) );
-
- char dir[512];
- snprintf( dir, 512, "Airports/%c", c );
- waitingTiles.push_back( dir );
- }
+ last_lat = lat;
+ last_lon = lon;
+ }
+ } else
- last_lat = lat;
- last_lon = lon;
- } else if ( !waitingTiles.empty() ) {
+ // No messages inbound, so process some pending work
+ if ( !waitingTiles.empty() ) {
getWaitingTile();
- }
+ } else
+
+ if ( testing ) {
+ exit( 0 );
+ } else
+
+ if ( last_lat == nowhere || last_lon == nowhere ) {
+ cout << "FlightGear is not running, exiting." << endl;
+ exit( 1 );
+ } else
ulSleep( 1 );
} // while true