slice* forkorsomething(char *uuid) { int fd[2]; pipe(fd); pid_t childpid; char *shellpath = "./tevs.sh"; size_t sz = strlen(shellpath)+strlen(uuid)+2; printf("size : %d\n",sz); char *command = malloc(sizeof(char)*sz); size_t s_sz = sprintf(command, "%s %s", shellpath, uuid); printf("printed chars: %d\n",s_sz); printf("%s\n",command); childpid = fork(); if (childpid == -1){ fprintf(stderr, "FORK failed"); return NULL; } else if (childpid == 0) { close(1); dup2(fd[1], 1); close(fd[0]); execlp("/bin/sh","/bin/sh","-c", command, NULL); } close(fd[1]); int nread; char buffer[4096]; slice *result = make_slice(); append(result,uuid); while((nread=read(fd[0], buffer, 4096))>0) { appendn(result,buffer,nread); } printf("read %d bytes from result\n",result->len); // wait(NULL); return result; }
inline const Slice<VertexAttribute> attributes() const { return make_slice(m_attributes, m_count); }
std::string BusinessAdapter::insertRecord_ff_write( const BusinessRecord& r ) { std::string result; ff::write( result , "insert[", m_tablename , ";(", make_slice(r.member_1) , ";", make_slice(r.member_2) , ";", make_slice(r.member_3) , ";", make_slice(r.member_4) , ";", make_slice(m_id_1) , ";", make_slice(r.member_5) , ";", make_slice(r.member_6) , ";", make_slice(r.member_7) , ";", make_slice(r.member_8) , ";", make_slice(r.member_9) , ";", make_slice(r.member_10) , ";", make_slice(r.member_11) , ";", make_slice(r.member_12) , ";", make_slice(r.member_13) , ";", make_slice(r.member_14) , ";", make_slice(r.member_15) , ";", make_slice(r.member_16) , ";", make_slice(r.member_17) , ";", make_slice(r.member_18) , ";", make_slice(r.member_19) , ")]" ); return result; }
std::string BusinessAdapter::insertRecord_ff_fmt_2( const BusinessRecord& r ) { std::string result; ff::fmt( result , "insert[{1}{0}({2}{0}{3}{0}{4}{0}{5}{0}{6}{0}{7}{0}{8}{0}{9}{0}{10}{0}{11}{0}{12}{0}{13}{0}{14}{0}{15}{0}{16}{0}{17}{0}{18}{0}{19}{0}{20}{0}{21})]" , ";" , m_tablename , make_slice(r.member_1) , make_slice(r.member_2) , make_slice(r.member_3) , make_slice(r.member_4) , make_slice(m_id_1) , make_slice(r.member_5) , make_slice(r.member_6) , make_slice(r.member_7) , make_slice(r.member_8) , make_slice(r.member_9) , make_slice(r.member_10) , make_slice(r.member_11) , make_slice(r.member_12) , make_slice(r.member_13) , make_slice(r.member_14) , make_slice(r.member_15) , make_slice(r.member_16) , make_slice(r.member_17) , make_slice(r.member_18) , make_slice(r.member_19) ); return result; }
std::string BusinessAdapter::insertRecord_ff_fmt_1( const BusinessRecord& r ) { std::string result; ff::fmt( result , "insert[{0};({1};{2};{3};{4};{5};{6};{7};{8};{9};{10};{11};{12};{13};{14};{15};{16};{17};{18};{19};{20})]" , m_tablename , make_slice(r.member_1) , make_slice(r.member_2) , make_slice(r.member_3) , make_slice(r.member_4) , make_slice(m_id_1) , make_slice(r.member_5) , make_slice(r.member_6) , make_slice(r.member_7) , make_slice(r.member_8) , make_slice(r.member_9) , make_slice(r.member_10) , make_slice(r.member_11) , make_slice(r.member_12) , make_slice(r.member_13) , make_slice(r.member_14) , make_slice(r.member_15) , make_slice(r.member_16) , make_slice(r.member_17) , make_slice(r.member_18) , make_slice(r.member_19) ); return result; }
slice new_slice(char* string) { return make_slice(string, strlen(string)); }
inline Slice new_strp(const char* str) { return make_slice(str, integer_cast<int>(strlen(str))); }
/* S has this format: 'refname[:start-end]' or refname[:start.count] */ slice * make_slice_from_str( const String * S ) { slice * res = NULL; if ( S != NULL ) { String refname; uint32_t i = 0; StringInit( &refname, S->addr, 0, 0 ); while ( i < S->len && S->addr[ i ] != ':' ) { i++; } refname.len = refname.size = i; if ( i == S->len ) res = make_slice( 0, 0, &refname ); else { rc_t rc; String S_Start; uint32_t j = 0; uint64_t start; i++; StringInit( &S_Start, &( S->addr[ i ] ), 0, 0 ); while ( i < S->len && S->addr[ i ] != '-' && S->addr[ i ] != '.' ) { i++; j++; } if ( j > 0 ) { S_Start.len = S_Start.size = j; start = StrippedStringToU64( &S_Start, &rc ); if ( rc == 0 ) { if ( i == S->len ) res = make_slice( start, 0, &refname ); else { String S_End_or_Count; char dot_or_dash = S->addr[ i ]; j = 0; i++; StringInit( &S_End_or_Count, &( S->addr[ i ] ), 0, 0 ); while ( i < S->len ) { i++; j++; } S_End_or_Count.len = S_End_or_Count.size = j; if ( j > 0 ) { uint64_t end_or_count = StrippedStringToU64( &S_End_or_Count, &rc ); if ( rc == 0 ) { if ( dot_or_dash == '.' ) res = make_slice( start, end_or_count, &refname ); else { if ( start < end_or_count ) res = make_slice( start, end_or_count - start, &refname ); else res = make_slice( end_or_count, start - end_or_count, &refname ); } } } else res = make_slice( start, 0, &refname ); } } } else res = make_slice( 0, 0, &refname ); } } return res; }