Obj MPIerror_string( Obj self, Obj errorcode ) { int resultlen; Obj str; str = NEW_STRING( 72 ); MPI_Error_string( INT_INTOBJ(errorcode), (char*)CSTR_STRING(str), &resultlen); ((char*)CSTR_STRING(str))[resultlen] = '\0'; SET_LEN_STRING(str, resultlen); ResizeBag( str, SIZEBAG_STRINGLEN( GET_LEN_STRING(str) ) ); return str; }
Obj MPIget_processor_name( Obj self ) { int resultlen; Obj str; /* It was reported by Frank Celler that a value of 72 instead of 1024 below caused overwriting of the free block list on PC in GAP-3 */ str = NEW_STRING( 1024 ); MPI_Get_processor_name( (char*)CSTR_STRING(str), &resultlen); ((char*)CSTR_STRING(str))[resultlen] = '\0'; #ifndef PRE_GAP_4_3 SET_LEN_STRING(str, resultlen); ResizeBag( str, SIZEBAG_STRINGLEN( GET_LEN_STRING(str) ) ); #endif return str; }
Obj FuncREAD_IOSTREAM_NOWAIT(Obj self, Obj stream, Obj len) { Obj string; UInt pty = INT_INTOBJ(stream); Int ret; string = NEW_STRING(INT_INTOBJ(len)); while (!PtyIOStreams[pty].inuse) pty = INT_INTOBJ(ErrorReturnObj("IOSTREAM %d is not in use",pty,0L, "you can replace stream number <num> via 'return <num>;'")); /* HandleChildStatusChanges(pty); Omit this to allow picking up "trailing" bytes*/ ret = ReadFromPty2(pty, CSTR_STRING(string), INT_INTOBJ(len), 0); if (ret == -1) return Fail; SET_LEN_STRING(string, ret); ResizeBag(string, SIZEBAG_STRINGLEN(ret)); return string; }