Пример #1
0
int String_split(String *s, int pos){
    if(s->num < pos) return 1;

    String *back;
    int size;

    back = String_create();
    if(back == NULL) return 1;

    size = s->num - pos;
    mpc_memcpy(back->string, &s->string[pos], size);
    back->num = size;
    back->line_num = back->num / WindowWidth + 1;

    mpc_memset(&s->string[pos], 0, size);
    s->num -= size;
    s->line_num = s->num / WindowWidth + 1;

    back->next = s->next;
    if(back->next->prev != NULL)
        back->next->prev = back;
        
    s->next = back;
    back->prev = s;

    return 0;
}
Пример #2
0
void
mpc_log_stderr(int err, const char *fmt, ...)
{
    mpc_logger_t   *l = &mpc_logger;
    uint8_t         errstr[MPC_LOG_MAX_LEN];
    uint8_t        *p, *last;
    va_list         args;
    ssize_t         n;

    last = errstr + MPC_LOG_MAX_LEN;
    p = errstr + 5;

    mpc_memcpy(errstr, "mpc: ", 5);

    va_start(args, fmt);
    p = mpc_vslprintf(p, last, fmt, args);
    va_end(args);

    if (err) {
        p = mpc_log_errno(p, last, err);
    }

    if (p > last - 1) {
        p = last - 1;
    }

    *p++ = LF;

    n = write(STDERR_FILENO, errstr, p - errstr);
    if (n < 0) {
        l->nerror++;
    }
}