diff options
Diffstat (limited to 'create.c')
-rw-r--r-- | create.c | 49 |
1 files changed, 0 insertions, 49 deletions
diff --git a/create.c b/create.c deleted file mode 100644 index 59eb3e0..0000000 --- a/create.c +++ /dev/null @@ -1,49 +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 <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <sysexits.h> -#include <unistd.h> - -int main(int argc, char *argv[]) { - if (argc < 2) errx(EX_USAGE, "missing public id"); - - uint32_t id[4]; - char public[sizeof("../public/") + 32]; - char private[sizeof("private/") + 2 * sizeof(id)]; - - arc4random_buf(id, sizeof(id)); - snprintf(public, sizeof(public), "public/%s", argv[1]); - snprintf( - private, sizeof(private), - "private/%08x%08x%08x%08x", - id[0], id[1], id[2], id[3] - ); - - int fd = open(public, O_CREAT | O_EXCL, 0644); - if (fd < 0) err(EX_CANTCREAT, "%s", public); - - snprintf(public, sizeof(public), "../public/%s", argv[1]); - int error = symlink(public, private); - if (error) err(EX_CANTCREAT, "%s", private); - - printf("%08x%08x%08x%08x\n", id[0], id[1], id[2], id[3]); - return EX_OK; -} |