summaryrefslogtreecommitdiff
path: root/win32/clip.c
diff options
context:
space:
mode:
Diffstat (limited to 'win32/clip.c')
-rw-r--r--win32/clip.c439
1 files changed, 0 insertions, 439 deletions
diff --git a/win32/clip.c b/win32/clip.c
index 1b7637ef2ec6..98704ebf9138 100644
--- a/win32/clip.c
+++ b/win32/clip.c
@@ -1,4 +1,3 @@
-/*$Header: /p/tcsh/cvsroot/tcsh/win32/clip.c,v 1.10 2014/08/13 23:39:34 amold Exp $*/
/*-
* Copyright (c) 1980, 1991 The Regents of the University of California.
* All rights reserved.
@@ -39,446 +38,8 @@
#include "sh.h"
#include "ed.h"
-BOOL InitApplication(HINSTANCE);
-BOOL InitInstance(HINSTANCE, int);
-LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
-HWND ghwndmain;
-
-extern int ctrl_handler(DWORD);
-extern void c_insert(int);
-
-/*
- * Creating a hidden window may not be strictly necessary on
- * NT, but why tempt fate ?
- * -amol
- */
-
-void clipper_thread(void) {
-
- MSG msg;
- HINSTANCE hInstance = GetModuleHandle(NULL);
-
-
- if (!InitApplication(hInstance)) {
- return ;
- }
-
- if (!InitInstance(hInstance, 0)) {
- return ;
- }
- // Main message loop:
- while (GetMessage(&msg, NULL, 0, 0)) {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- if ( !ctrl_handler(CTRL_CLOSE_EVENT))
- init_clipboard();
- return;
-}
-void init_clipboard(void) {
- HANDLE ht;
- DWORD tid;
-
- ht = CreateThread(NULL,gdwStackSize,
- (LPTHREAD_START_ROUTINE)clipper_thread, NULL,0,&tid);
-
- if (!ht)
- abort();
- CloseHandle(ht);
-}
-
-BOOL InitApplication(HINSTANCE hInstance)
-{
- WNDCLASS wc;
-
-
- // Fill in window class structure with parameters that describe
- // the main window.
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = (WNDPROC)WndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hIcon = NULL;//LoadIcon (hInstance, szAppName);
- wc.hCursor = NULL;//LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = (HBRUSH)IntToPtr(COLOR_WINDOW+1);
-
- wc.lpszMenuName = NULL;
- wc.lpszClassName = "tcshclipboard";
-
- return RegisterClass(&wc);
-}
-
-//
-// FUNCTION: InitInstance(HANDLE, int)
-//
-// PURPOSE: Saves instance handle and creates main window
-//
-// COMMENTS:
-//
-// In this function, we save the instance handle in a global variable and
-// create and display the main program window.
-//
-BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) {
- HWND hWnd;
-
-
- UNREFERENCED_PARAMETER(nCmdShow);
-
- hWnd = CreateWindow("tcshclipboard", "tcshclipboard",
- WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
- NULL, NULL, hInstance, NULL);
-
- if (!hWnd) {
- return (FALSE);
- }
-
- UpdateWindow(hWnd);
- ghwndmain = hWnd;
-
- return (TRUE);
-}
-
-LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
-
- switch (message) {
-
- case WM_DESTROYCLIPBOARD:
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
-
- default:
- return (DefWindowProc(hWnd, message, wParam, lParam));
- }
- return (0);
-}
-
-CCRETVAL e_copy_to_clipboard(Char c) {
- unsigned char *cbp;
- Char *kp;
- int err;
- size_t len;
- unsigned char *clipbuf;
- HANDLE hclipbuf;
-
- UNREFERENCED_PARAMETER(c);
-
- if (!ghwndmain)
- return (CC_ERROR);
-
- if (KillRingLen == 0)
- return (CC_ERROR);
-
- len = Strlen(KillRing[YankPos].buf);
-
- hclipbuf = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE, len+2);
- if (!hclipbuf)
- return (CC_ERROR);
- clipbuf = (unsigned char*)GlobalLock(hclipbuf);
-
- if (!clipbuf){
- err = GetLastError();
- GlobalFree(hclipbuf);
- return (CC_ERROR);
- }
-
- kp = KillRing[YankPos].buf;
- cbp = clipbuf;
-
- while(*kp != '\0') {
- *cbp = (u_char)(*kp & CHAR);
- cbp++;kp++;
- }
- *cbp = 0;
-
- GlobalUnlock(clipbuf);
-
- if (!OpenClipboard(ghwndmain))
- goto error;
-
- if (!EmptyClipboard())
- goto error;
-
- if (SetClipboardData(CF_TEXT,hclipbuf) != hclipbuf){
- err = GetLastError();
- goto error;
-
- }
-
- CloseClipboard();
- return (CC_NORM);
-error:
- GlobalFree(hclipbuf);
- CloseClipboard();
- return (CC_ERROR);
-}
-CCRETVAL e_paste_from_clipboard(Char c) {
- HANDLE hclip;
- unsigned char *cbp;
- Char *cp;
- int len;
- unsigned char *clipbuf;
-
-
-
- UNREFERENCED_PARAMETER(c);
-
- if (!ghwndmain)
- return (CC_ERROR);
- if (!IsClipboardFormatAvailable(CF_TEXT))
- return CC_ERROR;
-
- if (!OpenClipboard(ghwndmain))
- return CC_ERROR;
-
-
- hclip = GetClipboardData(CF_TEXT);
- if (hclip) {
- clipbuf = (unsigned char*)GlobalLock(hclip);
- if(!clipbuf) {
- return CC_ERROR;
- }
-
- cbp = clipbuf;
- len = 0;
-
- while(*cbp && *cbp != '\r') {
- len++;
- cbp++;
- }
- cbp = clipbuf;
-
- cp = Cursor;
-
- c_insert(len);
-
- if (LastChar + len >= InputLim)
- goto error;
-
- while(*cbp && *cbp !='\r' && (cp <LastChar) ) {
- *cp = *cbp ;
- cp++;cbp++;
- }
- Cursor = cp;
- GlobalUnlock(hclip);
- }
- CloseClipboard();
-
- return (CC_REFRESH);
-error:
- return (CC_ERROR);
-}
-
-int is_dev_clipboard_active=0;
-HANDLE ghdevclipthread;
-
-/* Reads from pipe and write to clipboard */
-void clip_writer_proc(HANDLE hinpipe) {
- unsigned char *realbuf;
- unsigned char *clipbuf;
- unsigned char *ptr;
- DWORD bread=0,spleft,err,i,rbsize;
- DWORD ptrloc;
- HANDLE hclipbuf;
-
-
- rbsize = 4096;
- realbuf = heap_alloc(rbsize);
- ptr = realbuf;
- ptrloc = 0;
- spleft = rbsize;
-
- while(spleft) {
- if (!ReadFile(hinpipe,ptr,spleft,&bread,NULL)) {
- spleft = GetLastError();
- dprintf("hinpipe returend %d\n",spleft);
- if (spleft == ERROR_BROKEN_PIPE)
- break;
- }
- if (bread == 0)
- break;
- ptr += bread;
- ptrloc += bread;
- spleft -=bread;
-
- if (spleft <=0){
- u_char *tmp;
-
- rbsize <<=1;
-
- tmp = realbuf;
- realbuf = heap_realloc(realbuf,rbsize);
- if (!realbuf) {
- realbuf = tmp;
- break;
- }
- spleft += rbsize >> 1;
-
- ptr = realbuf+ptrloc;
-
- dprintf("updated size now %d, splef %d, ptrloc %d, ptr 0x%08x, realbuf 0x%08x\n",rbsize,spleft,ptrloc,ptr,realbuf);
- }
- }
- CloseHandle(hinpipe);
-
- bread = rbsize-spleft;
-
- hclipbuf = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE, bread+256);
- if (!hclipbuf) {
- is_dev_clipboard_active=0;
- return;
- }
- clipbuf = (u_char*)GlobalLock(hclipbuf);
-
- if (!clipbuf){
- err = GetLastError();
- GlobalFree(hclipbuf);
- is_dev_clipboard_active=0;
- return ;
- }
- ptr = clipbuf;
- for (i=0;i <bread;i++) {
-
- if (realbuf[i] == '\n' && (i >0 && realbuf[i-1] != '\r') )
- *ptr++ = '\r';
-
- *ptr++ =realbuf[i];
-
- if ((ptr - clipbuf) >= rbsize)
- break;
- }
- *ptr=0;
-
- heap_free(realbuf);
-
- GlobalUnlock(clipbuf);
-
- if (!OpenClipboard(ghwndmain))
- goto error;
-
- if (!EmptyClipboard())
- goto error;
-
- if (SetClipboardData(CF_TEXT,hclipbuf) != hclipbuf){
- err = GetLastError();
- goto error;
-
- }
- CloseClipboard();
- is_dev_clipboard_active=0;
- return ;
-error:
- is_dev_clipboard_active=0;
- GlobalFree(hclipbuf);
- CloseClipboard();
-}
-HANDLE create_clip_writer_thread(void) {
- HANDLE hread,hwrite;
- DWORD tid;
- SECURITY_ATTRIBUTES secd;
-
- if (is_dev_clipboard_active)
- return INVALID_HANDLE_VALUE;
- secd.nLength=sizeof(secd);
- secd.lpSecurityDescriptor=NULL;
- secd.bInheritHandle=FALSE;
-
- if (!CreatePipe(&hread,&hwrite,&secd,0)) {
- abort();
- }
- is_dev_clipboard_active = 1;
- ghdevclipthread = CreateThread(NULL,gdwStackSize,
- (LPTHREAD_START_ROUTINE)clip_writer_proc, hread,0,&tid);
-// CloseHandle(ht);
- return hwrite;
-}
-
-/* Read from clipboard and write to pipe */
-void clip_reader_proc(HANDLE houtpipe) {
-
- HANDLE hclip;
- unsigned char *cbp;
- unsigned char *clipbuf;
- unsigned char * outbuf,*ptr;
- DWORD bwrote, len;
- DWORD obsize;
-
- obsize = 4096;
- outbuf = heap_alloc(obsize);
- if(!outbuf) {
- return;
- }
- ptr = outbuf;
-
-
- if (!IsClipboardFormatAvailable(CF_TEXT))
- goto done ;
-
- if (!OpenClipboard(ghwndmain))
- goto done ;
-
-
- len = 0;
- hclip = GetClipboardData(CF_TEXT);
- if (hclip) {
- clipbuf = (unsigned char*)GlobalLock(hclip);
- if(!clipbuf) {
- goto done;
- }
-
- cbp = clipbuf;
-
- while(*cbp ) {
- *ptr++ = *cbp++;
- len++;
- if (len == obsize) {
- obsize <<= 1;
- outbuf = heap_realloc(outbuf,obsize);
- if (!outbuf)
- break;
- ptr = outbuf+len;
- }
- }
- GlobalUnlock(hclip);
- }
- CloseClipboard();
-
- if (!WriteFile(houtpipe,outbuf,len,&bwrote,NULL)) {
- ;
- }
- CloseHandle(houtpipe);
- heap_free(outbuf);
-
-done:
- is_dev_clipboard_active=0;
- return;
-}
-HANDLE create_clip_reader_thread(void) {
- HANDLE hread,hwrite;
- DWORD tid;
- SECURITY_ATTRIBUTES secd;
-
- if (is_dev_clipboard_active)
- return INVALID_HANDLE_VALUE;
-
- secd.nLength=sizeof(secd);
- secd.lpSecurityDescriptor=NULL;
- secd.bInheritHandle=FALSE;
-
- if (!CreatePipe(&hread,&hwrite,&secd,0)) {
- abort();
- }
- is_dev_clipboard_active = 1;
- ghdevclipthread = CreateThread(NULL,gdwStackSize,
- (LPTHREAD_START_ROUTINE)clip_reader_proc, hwrite,0,&tid);
- return hread;
-}
-
CCRETVAL
e_dosify_next(Char c)
{