diff options
Diffstat (limited to 'src/builder.cpp')
-rw-r--r-- | src/builder.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/builder.cpp b/src/builder.cpp index 8fd72bb..8c3bbbb 100644 --- a/src/builder.cpp +++ b/src/builder.cpp | |||
@@ -799,3 +799,27 @@ std::list<std::string> Builder::findTargets( const char *sRegex ) | |||
799 | return lTmp; | 799 | return lTmp; |
800 | } | 800 | } |
801 | 801 | ||
802 | std::string Builder::cmdToString( const char *sCmd ) | ||
803 | { | ||
804 | std::string buf; | ||
805 | FILE *pr = popen( sCmd, "r" ); | ||
806 | if( pr == NULL ) | ||
807 | throw BuildException("Couldn't execute program \"%s\"", sCmd ); | ||
808 | |||
809 | char cbuf[2048]; | ||
810 | |||
811 | for(;;) | ||
812 | { | ||
813 | int nRead = fread( cbuf, 1, 2048, pr ); | ||
814 | for( int j = 0; j < nRead; j++ ) | ||
815 | if( cbuf[j] != '\n' && cbuf[j] != '\r' ) | ||
816 | buf.append( cbuf+j, 1 ); | ||
817 | if( feof( pr ) ) | ||
818 | break; | ||
819 | } | ||
820 | |||
821 | pclose( pr ); | ||
822 | |||
823 | return buf; | ||
824 | } | ||
825 | |||