MCPcopy Create free account
hub / github.com/boostorg/build / var_edit_cyg2win

Function var_edit_cyg2win

v2/engine/function.c:752–811  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

750
751#ifdef OS_CYGWIN
752static void var_edit_cyg2win( string * out, size_t pos, VAR_EDITS * edits )
753{
754 if ( edits->to_windows )
755 {
756 #ifdef CYGWIN_VERSION_CYGWIN_CONV
757 /* Use new Cygwin API added with Cygwin 1.7. Old one had no error
758 * handling and has been deprecated.
759 */
760 char * dynamicBuffer = 0;
761 char buffer[ MAX_PATH + 1001 ];
762 char const * result = buffer;
763 cygwin_conv_path_t const conv_type = CCP_POSIX_TO_WIN_A | CCP_RELATIVE;
764 ssize_t const apiResult = cygwin_conv_path( conv_type, out->value + pos,
765 buffer, sizeof( buffer ) / sizeof( *buffer ) );
766 assert( apiResult == 0 || apiResult == -1 );
767 assert( apiResult || strlen( result ) < sizeof( buffer ) / sizeof(
768 *buffer ) );
769 if ( apiResult )
770 {
771 result = 0;
772 if ( errno == ENOSPC )
773 {
774 ssize_t const size = cygwin_conv_path( conv_type, out->value +
775 pos, NULL, 0 );
776 assert( size >= -1 );
777 if ( size > 0 )
778 {
779 dynamicBuffer = (char *)BJAM_MALLOC_ATOMIC( size );
780 if ( dynamicBuffer )
781 {
782 ssize_t const apiResult = cygwin_conv_path( conv_type,
783 out->value + pos, dynamicBuffer, size );
784 assert( apiResult == 0 || apiResult == -1 );
785 if ( !apiResult )
786 {
787 result = dynamicBuffer;
788 assert( strlen( result ) < size );
789 }
790 }
791 }
792 }
793 }
794 #else /* CYGWIN_VERSION_CYGWIN_CONV */
795 /* Use old Cygwin API deprecated with Cygwin 1.7. */
796 char result[ MAX_PATH + 1 ];
797 cygwin_conv_to_win32_path( out->value + pos, result );
798 assert( strlen( result ) <= MAX_PATH );
799 #endif /* CYGWIN_VERSION_CYGWIN_CONV */
800 if ( result )
801 {
802 string_truncate( out, pos );
803 string_append( out, result );
804 edits->to_slashes = 0;
805 }
806 #ifdef CYGWIN_VERSION_CYGWIN_CONV
807 if ( dynamicBuffer )
808 BJAM_FREE( dynamicBuffer );
809 #endif

Callers 1

var_edit_shiftFunction · 0.85

Calls 2

string_truncateFunction · 0.85
string_appendFunction · 0.85

Tested by

no test coverage detected