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; }
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; }
/* clipboard */ static PyObject *gPyGetClipboard(PyObject *args, PyObject *kwds) { char *buf = (char *)GHOST_getClipboard(0); return PyUnicode_FromString(buf?buf:""); }