[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/work/icecream/client
From:       Dirk Mueller <mueller () kde ! org>
Date:       2006-05-31 8:05:59
Message-ID: 1149062759.760148.32136.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 546850 by mueller:

the amount of copy&paste programming in icecream is
amazing


 M  +27 -38    remote.cpp  


--- branches/work/icecream/client/remote.cpp #546849:546850
@@ -54,7 +54,8 @@
 
 using namespace std;
 
-Environments parse_icecc_version(const string &target_platform )
+Environments
+parse_icecc_version(const string &target_platform )
 {
     Environments envs;
 
@@ -109,7 +110,8 @@
     return envs;
 }
 
-static bool endswith( const string &orig, const char *suff, string &ret )
+static bool
+endswith( const string &orig, const char *suff, string &ret )
 {
     size_t len = strlen( suff );
     if ( orig.size() > len && orig.substr( orig.size() - len ) == suff )
@@ -120,7 +122,8 @@
     return false;
 }
 
-Environments rip_out_paths( const Environments &envs, map<string, string> \
&version_map, map<string, string> &versionfile_map ) +static Environments
+rip_out_paths( const Environments &envs, map<string, string> &version_map, \
map<string, string> &versionfile_map )  {
     version_map.clear();
 
@@ -145,7 +148,8 @@
 }
 
 
-string get_absfilename( const string &_file )
+string
+get_absfilename( const string &_file )
 {
     string file;
 
@@ -205,7 +209,18 @@
 
     do
     {
-        ssize_t bytes = read(cpp_fd, buffer + offset, sizeof(buffer) - offset );
+        ssize_t bytes;
+        do {
+          bytes = read(cpp_fd, buffer + offset, sizeof(buffer) - offset );
+          if ((int) bytes < 0 && (errno == EINTR || errno == EAGAIN))
+            continue;
+          if ((int) bytes < 0) {
+            log_perror( "reading from cpp_fd" );
+            close( cpp_fd );
+            throw( 11 );
+          }
+          break;
+        } while ( 1 );
         offset += bytes;
         if (!bytes || offset == sizeof( buffer ) )
         {
@@ -238,7 +253,7 @@
     bool got_env = usecs->got_env;
     job.setJobID( job_id );
     job.setEnvironmentVersion( environment ); // hoping on the scheduler's wisdom
-    trace() << "Have to use host " << hostname << ":" << port << " - Job ID: " << \
job.jobID() << " - environment: " << usecs->host_platform << "\n"; +    trace() << \
"Have to use host " << hostname << ":" << port << " - Job ID: " << job.jobID() << " - \
environment: " << usecs->host_platform << " got environment: " << (got_env ? "true" : \
"false") << "\n";  
     int status = 255;
 
@@ -251,12 +266,6 @@
         throw ( 2 );
     }
 
-    unsigned char buffer[100000]; // some random but huge number
-
-    trace() << "got environment " << ( got_env ? "true" : "false" ) << endl;
-
-    off_t offset = 0;
-
     if ( !got_env ) {
         // transfer env
         struct stat buf;
@@ -265,34 +274,15 @@
             throw( 4 );
         }
 
-        FILE *file = fopen( version_file.c_str(), "rb" );
-        if ( !file )
-            throw( 5 );
-
         EnvTransferMsg msg( job.targetPlatform(), job.environmentVersion() );
         if ( !cserver->send_msg( msg ) )
             throw( 6 );
 
-        offset = 0;
+        int env_fd = open( version_file.c_str(), O_RDONLY );
+        if (env_fd < 0)
+            throw ( 5 );
 
-        do {
-            ssize_t bytes = fread(buffer + offset, 1, sizeof(buffer) - offset, file \
                );
-            offset += bytes;
-            if (!bytes || offset == sizeof( buffer ) ) {
-                if ( offset ) {
-                    FileChunkMsg fcmsg( buffer, offset );
-                    if ( !cserver->send_msg( fcmsg ) ) {
-                        log_info() << "write of source chunk failed " << offset << " \
                " << bytes << endl;
-                        fclose( file );
-                        throw( 7 );
-                    }
-                    offset = 0;
-                }
-                if ( !bytes )
-                    break;
-            }
-        } while (1);
-        fclose( file );
+        write_server_cpp( env_fd, cserver );
 
         if ( !cserver->send_msg( EndMsg() ) ) {
             log_info() << "write of end failed" << endl;
@@ -306,8 +296,6 @@
         throw( 9 );
     }
 
-    offset = 0;
-
     if ( !preproc_file ) {
         int sockets[2];
         if (pipe(sockets)) {
@@ -437,7 +425,8 @@
     return status;
 }
 
-string md5_for_file( const string & file )
+static string
+md5_for_file( const string & file )
 {
     md5_state_t state;
     string result;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic