diff options
Diffstat (limited to 'package')
-rw-r--r-- | package/adk-helper/Makefile (renamed from package/mkcrypt/Makefile) | 10 | ||||
-rw-r--r-- | package/adk-helper/src/dkgetsz.c | 95 | ||||
-rw-r--r-- | package/adk-helper/src/mkcrypt.c (renamed from package/mkcrypt/src/mkcrypt.c) | 0 |
3 files changed, 101 insertions, 4 deletions
diff --git a/package/mkcrypt/Makefile b/package/adk-helper/Makefile index 6f8f873a7..7d0ccb202 100644 --- a/package/mkcrypt/Makefile +++ b/package/adk-helper/Makefile @@ -3,10 +3,10 @@ include ${TOPDIR}/rules.mk -PKG_NAME:= mkcrypt +PKG_NAME:= adk-helper PKG_VERSION:= 1.0 PKG_RELEASE:= 1 -PKG_DESCR:= mkcrypt utility +PKG_DESCR:= adk helper utilities PKG_SECTION:= misc PKG_CFLINE_MKCRYPT:= depends on ADK_HOST_ONLY @@ -16,16 +16,18 @@ NO_DISTFILES:= 1 include ${TOPDIR}/mk/host.mk include ${TOPDIR}/mk/package.mk -$(eval $(call HOST_template,MKCRYPT,mkcrypt,${PKG_VERSION}-${PKG_RELEASE})) +$(eval $(call HOST_template,ADK_HELPER,adk-helper,${PKG_VERSION}-${PKG_RELEASE})) HOST_STYLE:= manual host-build: $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -o ${WRKBUILD}/mkcrypt ${WRKBUILD}/mkcrypt.c + $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -o ${WRKBUILD}/dkgetsz ${WRKBUILD}/dkgetsz.c -mkcrypt-hostinstall: +adk-helper-hostinstall: ${INSTALL_DIR} ${STAGING_HOST_DIR}/usr/bin ${INSTALL_BIN} ${WRKBUILD}/mkcrypt ${STAGING_HOST_DIR}/usr/bin + ${INSTALL_BIN} ${WRKBUILD}/dkgetsz ${STAGING_HOST_DIR}/usr/bin include ${TOPDIR}/mk/host-bottom.mk include ${TOPDIR}/mk/pkg-bottom.mk diff --git a/package/adk-helper/src/dkgetsz.c b/package/adk-helper/src/dkgetsz.c new file mode 100644 index 000000000..b8315be70 --- /dev/null +++ b/package/adk-helper/src/dkgetsz.c @@ -0,0 +1,95 @@ +/*- + * Copyright © 2010 + * Waldemar Brodkorb <wbx@openadk.org> + * Thorsten Glaser <tg@mirbsd.org> + * + * Provided that these terms and disclaimer and all copyright notices + * are retained or reproduced in an accompanying document, permission + * is granted to deal in this work without restriction, including un‐ + * limited rights to use, publicly perform, distribute, sell, modify, + * merge, give away, or sublicence. + * + * This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to + * the utmost extent permitted by applicable law, neither express nor + * implied; without malicious intent or gross negligence. In no event + * may a licensor, author or contributor be held liable for indirect, + * direct, other damage, loss, or other issues arising in any way out + * of dealing in the work, even if advised of the possibility of such + * damage or existence of a defect, except proven that it results out + * of said person’s immediate fault when using the work as intended. + * + * Alternatively, this work may be distributed under the terms of the + * General Public License, any version, as published by the Free Soft- + * ware Foundation. + *- + * Display the size of a block device (e.g. USB stick, CF/SF/MMC card + * or hard disc) in 512-byte sectors. + */ + +#define _FILE_OFFSET_BITS 64 + +#include <sys/param.h> +#include <sys/types.h> +#include <sys/ioctl.h> +#include <sys/mount.h> + +#if defined(__APPLE__) +#include <sys/disk.h> +#endif + +#if defined(DIOCGDINFO) +#include <sys/disklabel.h> +#endif + +#include <err.h> +#include <fcntl.h> +#include <stdio.h> +#include <unistd.h> + +unsigned long long numsecs(int); + +int +main(int argc, char *argv[]) { + int fd; + + if (argc != 2) + errx(255, "Syntax: dkgetsz /dev/sda"); + + if ((fd = open(argv[1], O_RDONLY)) == -1) + err(1, "open"); + printf("%llu\n", numsecs(fd)); + close(fd); + return (0); +} + +unsigned long long +numsecs(int fd) +{ +#if defined(BLKGETSIZE) || defined(DKIOCGETBLOCKCOUNT) +/* + * note: BLKGETSIZE64 returns bytes, not sectors, but the return + * type is size_t which is 32 bits on an ILP32 platform, so it + * fails interestingly here… thus we use BLKGETSIZE instead. + */ +#if defined(DKIOCGETBLOCKCOUNT) + uint64_t nsecs; +#define THEIOCTL DKIOCGETBLOCKCOUNT +#define STRIOCTL "DKIOCGETBLOCKCOUNT" +#else + unsigned long nsecs; +#define THEIOCTL BLKGETSIZE +#define STRIOCTL "BLKGETSIZE" +#endif + if (ioctl(fd, THEIOCTL, &nsecs) == -1) + err(1, "ioctl %s", STRIOCTL); + return ((unsigned long long)nsecs); +#elif defined(DIOCGDINFO) + struct disklabel dl; + + if (ioctl(fd, DIOCGDINFO, &dl) == -1) + err(1, "ioctl DIOCGDINFO"); + return ((unsigned long long)dl.d_secperunit); +#else +#warning PLEASE DO IMPLEMENT numsecs FOR THIS PLATFORM. +#endif +} diff --git a/package/mkcrypt/src/mkcrypt.c b/package/adk-helper/src/mkcrypt.c index a856759df..a856759df 100644 --- a/package/mkcrypt/src/mkcrypt.c +++ b/package/adk-helper/src/mkcrypt.c |