diff options
Diffstat (limited to 'f2fs_utils')
-rw-r--r-- | f2fs_utils/Android.mk | 22 | ||||
-rw-r--r-- | f2fs_utils/make_f2fs_main.c | 88 | ||||
-rwxr-xr-x | f2fs_utils/mkf2fsuserimg.sh | 34 |
3 files changed, 143 insertions, 1 deletions
diff --git a/f2fs_utils/Android.mk b/f2fs_utils/Android.mk index f3a186c1..8fb607c1 100644 --- a/f2fs_utils/Android.mk +++ b/f2fs_utils/Android.mk @@ -34,7 +34,6 @@ LOCAL_STATIC_LIBRARIES := \ LOCAL_C_INCLUDES := external/f2fs-tools/include external/f2fs-tools/mkfs include $(BUILD_HOST_STATIC_LIBRARY) - # # -- All host/targets excluding windows # @@ -42,6 +41,17 @@ include $(BUILD_HOST_STATIC_LIBRARY) ifneq ($(HOST_OS),windows) include $(CLEAR_VARS) +LOCAL_SRC_FILES := make_f2fs_main.c +LOCAL_MODULE := make_f2fs +LOCAL_STATIC_LIBRARIES += \ + libf2fs_utils_host \ + libf2fs_dlutils_host +# libf2fs_dlutils_host will dlopen("libf2fs_fmt_host_dyn") +LOCAL_LDLIBS := -ldl +LOCAL_SHARED_LIBRARIES := libf2fs_fmt_host_dyn +include $(BUILD_HOST_EXECUTABLE) + +include $(CLEAR_VARS) LOCAL_MODULE := libf2fs_dlutils LOCAL_SRC_FILES := f2fs_dlutils.c LOCAL_C_INCLUDES := external/f2fs-tools/include external/f2fs-tools/mkfs @@ -63,5 +73,15 @@ LOCAL_STATIC_LIBRARIES := \ libsparse_static include $(BUILD_STATIC_LIBRARY) +include $(CLEAR_VARS) +LOCAL_MODULE := mkf2fsuserimg.sh +LOCAL_SRC_FILES := mkf2fsuserimg.sh +LOCAL_MODULE_CLASS := EXECUTABLES +# We don't need any additional suffix. +LOCAL_MODULE_SUFFIX := +LOCAL_BUILT_MODULE_STEM := $(notdir $(LOCAL_SRC_FILES)) +LOCAL_IS_HOST_MODULE := true +include $(BUILD_PREBUILT) + endif diff --git a/f2fs_utils/make_f2fs_main.c b/f2fs_utils/make_f2fs_main.c new file mode 100644 index 00000000..84042660 --- /dev/null +++ b/f2fs_utils/make_f2fs_main.c @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <fcntl.h> +#include <libgen.h> +#include <stdio.h> +#include <unistd.h> +#include <stdlib.h> + +#if defined(__linux__) +#include <linux/fs.h> +#elif defined(__APPLE__) && defined(__MACH__) +#include <sys/disk.h> +#endif + +#ifndef USE_MINGW /* O_BINARY is windows-specific flag */ +#define O_BINARY 0 +#endif + +static void usage(char *path) +{ + fprintf(stderr, "%s -l <len>\n", basename(path)); + fprintf(stderr, " <filename>\n"); +} + +int main(int argc, char **argv) +{ + int opt; + const char *filename = NULL; + int fd; + int exitcode; + long long len; + while ((opt = getopt(argc, argv, "l:")) != -1) { + switch (opt) { + case 'l': + len = atoll(optarg); + break; + default: /* '?' */ + usage(argv[0]); + exit(EXIT_FAILURE); + } + } + + + if (optind >= argc) { + fprintf(stderr, "Expected filename after options\n"); + usage(argv[0]); + exit(EXIT_FAILURE); + } + + filename = argv[optind++]; + + if (optind < argc) { + fprintf(stderr, "Unexpected argument: %s\n", argv[optind]); + usage(argv[0]); + exit(EXIT_FAILURE); + } + + if (strcmp(filename, "-")) { + fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0644); + if (fd < 0) { + perror("open"); + return EXIT_FAILURE; + } + } else { + fd = STDOUT_FILENO; + } + + exitcode = make_f2fs_sparse_fd(fd, len, NULL, NULL); + + close(fd); + if (exitcode && strcmp(filename, "-")) + unlink(filename); + return exitcode; +} diff --git a/f2fs_utils/mkf2fsuserimg.sh b/f2fs_utils/mkf2fsuserimg.sh new file mode 100755 index 00000000..93ec743b --- /dev/null +++ b/f2fs_utils/mkf2fsuserimg.sh @@ -0,0 +1,34 @@ +#!/bin/bash +# +# To call this script, make sure make_f2fs is somewhere in PATH + +function usage() { +cat<<EOT +Usage: +${0##*/} OUTPUT_FILE SIZE +EOT +} + +echo "in mkf2fsuserimg.sh PATH=$PATH" + +if [ $# -lt 2 ]; then + usage + exit 1 +fi + +OUTPUT_FILE=$1 +SIZE=$2 +shift; shift + + +if [ -z $SIZE ]; then + echo "Need size of filesystem" + exit 2 +fi + +MAKE_F2FS_CMD="make_f2fs -l $SIZE $OUTPUT_FILE" +echo $MAKE_F2FS_CMD +$MAKE_F2FS_CMD +if [ $? -ne 0 ]; then + exit 4 +fi |