diff options
Diffstat (limited to 'ingest.c')
-rw-r--r-- | ingest.c | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/ingest.c b/ingest.c deleted file mode 100644 index b729169..0000000 --- a/ingest.c +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright (C) 2018 Causal Agent June <june@causal.agency> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include <err.h> -#include <fcntl.h> -#include <sys/ioctl.h> -#include <sysexits.h> -#include <unistd.h> - -int main(int argc, char *argv[]) { - if (argc < 2) errx(EX_USAGE, "missing private id"); - - const char *path = argv[1]; - int local = open(path, O_WRONLY); - if (local < 0) err(EX_NOINPUT, "%s", path); - - int remote = STDIN_FILENO; - - struct winsize window; - ssize_t size = read(remote, &window, sizeof(window)); - if (size < 0) err(EX_IOERR, "read(%d)", remote); - if ((size_t)size < sizeof(window)) errx(EX_DATAERR, "short read(%d)", remote); - - for (;;) { - ftruncate(local, 0); - lseek(local, 0, SEEK_SET); - - ssize_t size = write(local, &window, sizeof(window)); - if (size < 0) err(EX_IOERR, "write(%d)", local); - - char buf[4096]; - for (size_t totalSize = 0; totalSize < 1024 * 1024; totalSize += size) { - size = read(remote, buf, sizeof(buf)); - if (size < 0) err(EX_IOERR, "read(%d)", remote); - if (!size) return EX_OK; - - size = write(local, buf, size); - if (size < 0) err(EX_IOERR, "write(%d)", local); - } - } -} |