Example #1
0
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;
}
Example #2
0
		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;
}
Example #6
0
File: slice.c Project: fwum/fwum
slice new_slice(char* string) {
	return make_slice(string, strlen(string));
}
Example #7
0
File: main.cpp Project: wenxq/cpp
inline Slice new_strp(const char* str)
{
	return make_slice(str, integer_cast<int>(strlen(str)));
} 
Example #8
0
/* 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;
}