static char *wm_clipboard_text_get_ex(bool selection, int *r_len,
                                      bool firstline)
{
    char *p, *p2, *buf, *newbuf;

    if (G.background) {
        *r_len = 0;
        return NULL;
    }

    buf = (char *)GHOST_getClipboard(selection);
    if (!buf) {
        *r_len = 0;
        return NULL;
    }

    /* always convert from \r\n to \n */
    p2 = newbuf = MEM_mallocN(strlen(buf) + 1, __func__);

    if (firstline) {
        /* will return an over-alloc'ed value in the case there are newlines */
        for (p = buf; *p; p++) {
            if ((*p != '\n') && (*p != '\r')) {
                *(p2++) = *p;
            }
            else {
                break;
            }
        }
    }
    else {
        for (p = buf; *p; p++) {
            if (*p != '\r') {
                *(p2++) = *p;
            }
        }
    }

    *p2 = '\0';

    free(buf); /* ghost uses regular malloc */

    *r_len = (p2 - newbuf);

    return newbuf;
}
Esempio n. 2
0
char *WM_clipboard_text_get(int selection)
{
	char *p, *p2, *buf, *newbuf;

	if (G.background)
		return NULL;

	buf = (char *)GHOST_getClipboard(selection);
	if (!buf)
		return NULL;
	
	/* always convert from \r\n to \n */
	newbuf = MEM_callocN(strlen(buf) + 1, "WM_clipboard_text_get");

	for (p = buf, p2 = newbuf; *p; p++) {
		if (*p != '\r')
			*(p2++) = *p;
	}
	*p2 = '\0';

	free(buf); /* ghost uses regular malloc */
	
	return newbuf;
}
Esempio n. 3
0
/* clipboard */
static PyObject *gPyGetClipboard(PyObject *args, PyObject *kwds)
{
	char *buf = (char *)GHOST_getClipboard(0);
	return PyUnicode_FromString(buf?buf:"");
}