File: ./info.txt
   1 pbpaste
   2 
   3 This app mimics the one with the same name from macos: it outputs the current
   4 contents of the text clipboard, or pasteboard as macos calls it.

     File: ./main.c
   1 #include <fcntl.h>
   2 #include <io.h>
   3 #include <locale.h>
   4 #include <stdio.h>
   5 #include <windows.h>
   6 
   7 /*
   8 pbpaste
   9 
  10 This app mimics the one with the same name from macos: it outputs the current
  11 contents of the text clipboard, or pasteboard as macos calls it.
  12 */
  13 
  14 int main(int argc, char const* argv[]) {
  15     setmode(fileno(stdout), O_BINARY);
  16     setmode(fileno(stderr), O_BINARY);
  17     // setlocale(LC_ALL, "en.US.UTF-8");
  18 
  19     if (!OpenClipboard(NULL)) {
  20         fprintf(stderr, "can't use the clipboard\n");
  21         fflush(stderr);
  22         return 1;
  23     }
  24 
  25     HANDLE h = GetClipboardData(CF_TEXT);
  26     if (!= NULL) {
  27         unsigned char* data = GlobalLock(h);
  28 
  29         // find the byte-count, giving up right before overflowing the counter
  30         size_t n = 0;
  31         while (data[n] != 0 && n < ~0) {
  32             n++;
  33         }
  34 
  35         // emit bytes
  36         fwrite(data, n, 1, stdout);
  37         fflush(stdout);
  38 
  39         GlobalUnlock(h);
  40     }
  41     CloseClipboard();
  42     return 0;
  43 }