aboutsummaryrefslogtreecommitdiff
path: root/include/common.h
AgeCommit message (Collapse)Author
2023-05-30mtd-utils: Add new syntax to get devices by nameBrandon Maier
This introduces a new feature to the MTD command line utilities that allows MTD devices to be referenced by name instead of device node. For example this looks like: > # Display info for the MTD device with name "data" > mtdinfo mtd:data > # Copy file to MTD device with name "data" > flashcp /my/file mtd:data This follows the syntax supported by the kernel which allows MTD device's to be mounted by name[1]. Add the function mtd_find_dev_node() that accepts an MTD "identifier" and returns the MTD's device node. The function accepts a string starting with "mtd:" which it treats as the MTD's name. It then attempts to search for the MTD, and if found maps it back to the /dev/mtdX device node. If the string does not start with "mtd:", then assume it's the old style and refers directly to a MTD device node. The function is then hooked into existing tools like flashcp, mtdinfo, flash_unlock, etc. To load in the new MTD parsing code in a consistent way across programs. [1] http://www.linux-mtd.infradead.org/faq/jffs2.html#L_mtdblock Signed-off-by: Brandon Maier <brandon.maier@collins.com> Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2021-02-28mtd-utils: Use AC_SYS_LARGEFILESascha Hauer
Currently mtd-utils on 32bit systems fail on devices >2GiB due to off_t being a signed 32bit type. Add AC_SYS_LARGEFILE to make off_t a 64bit type. Adding AC_SYS_LARGEFILE results in _FILE_OFFSET_BITS being defined to 64 in include/config.h. To let this have an effect we must make sure that include/config.h is included before all other includes which is archieved by adding its inclusion to CPPFLAGS. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2018-11-01common: Add round functionsRichard Weinberger
Signed-off-by: Richard Weinberger <richard@nod.at> Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2018-10-02mtd-utils: Instead of doing preprocessor magic, just output off_t as long longThorsten Glaser
Fix warnings abot PRIdoff_t in libmtd.c, in mtd_read (and mtd_write): In file included from ../git/lib/libmtd.c:40:0: ../git/lib/libmtd.c: In function 'mtd_read': ../git/include/common.h:110:18: warning: format '%ld' expects argument of type 'long int', but argument 5 has type 'off_t {aka long long int}' [-Wformat=] ../git/include/common.h:120:2: note: in expansion of macro 'errmsg' errmsg(fmt, ##__VA_ARGS__); \ ^~~~~~ ../git/lib/libmtd.c:1082:10: note: in expansion of macro 'sys_errmsg' return sys_errmsg("cannot seek mtd%d to offset %"PRIdoff_t, ^~~~~~~~~~ /usr/lib/klibc/include/inttypes.h:28:17: note: format string is defined here #define PRId32 "d" Signed-off-by: Thorsten Glaser <tg@mirbsd.org> Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2018-09-20mtd-utils: common.h: fix prompt functionDavid Oberhollenzer
The prompt() function is intended to query a yes/no reply from a command line user by reading in an entire line of text using getline() and checking the first character. If the line is empty, a default value is returned. First of all, this patch replaces the usage of getline() with fgets() to avoid compilation problems on some smaller C libraries, like klibc, that do not have a getline() implementation. Since we now have a static line length, this may break some build setups that input lengthy giberish instead of 'y' or 'n'. Second, this patch fixes a more severe bug in prompt(), replacing a 'while' keyword with the 'if' that was most likely intended. In the old version, if getline() reported an error, it would print an error message inside a while loop, immediately followed by a break and then march on and process the erroneous input instead of using the default value as printed to stdout. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2017-11-02Add no-return attribute to usage() style functionsDavid Oberhollenzer
A common pattern in command line processing is having a usage() function that prints out how to use the command line options and then terminates. The function is typically used inside a switch block for command line options like `-h' or unknown options. In a lot of places, the break keyword is omitted, because the function exits anyway. However, this triggers gcc warnings about implicit fall-through. Rather than adding a phony "/* fall-through */" this patch flags the usage() style function with a gcc attribute, indicating that they do not return and removes further superfluous break statements. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2017-03-02Replace rpmatch() usage with checking first character of lineDavid Oberhollenzer
This is based on the patch from Khem Raj used by openembedded. In addition to the original patch, this also removes the fallback implementation that was provided for C libraries that don't implement rpmatch. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2017-02-20mtd-utils: Fix format specifier definitions for off_t and loff_t.Torsten Fleischer
On 32bit systems (e.g. ARM) the size of off_t can be 4 byte and the size of loff_t 8 byte. This causes compiler warnings like the following: flash_erase.c: In function 'show_progress': flash_erase.c:56:22: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 3 has type 'off_t {aka long int}' [-Wformat=] bareverbose(!quiet, "\rErasing %d Kibyte @ %"PRIxoff_t" -- %2i %% complete ", and an output like this: ~# flash_erase /dev/mtd2 0 1 Erasing 64 Kibyte @ 6400000000 -- 0 % complete ~# Since the size of off_t and loff_t can differ from each other, the printf format specifier should be determined separately for both. Further the format specifiers should be based directly on the size of the particular data type. Signed-off-by: Torsten Fleischer <torfl6749@gmail.com> Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2016-12-09nandwrite: Factor out buffer checking codeMarek Vasut
Pull the buffer content checking code into separate function and simplify the code invoking it slightly. Signed-off-by: Marek Vasut <marex@denx.de> Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com> Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2016-12-06common: Fix 'unchecked return code' warningsBoris Brezillon
Several tools are simply not checking return code of functions marked with 'warn_unused_result'. Provide wrappers for the read/write functions to avoid patching old code and providing proper error handling. Fix the remaining ones (calls to fgets() and system()). Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
2016-12-06common: Fix PRI{x,d}off definitions for x86_64 platformBoris Brezillon
Compiling for x86_64 generates a lot of warning because the PRIxoff_t and PRIdoff_t are not properly defined, which comes from the missing SIZEOF_LONG definition. Use the autotools to generate a config.h header, include this header from common.h and ask autoheader to generate the SIZEOF_LONG and SIZEOF_LOFF_T definitions. Use these new definitions to assign the proper descriptors to PRIxoff_t and PRIdoff_t. Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
2016-11-17Merge rest of ubiutils-common into libmtd commonDavid Oberhollenzer
This patch moves the remaining 3 functions from ubiutils-common.{c,h} into libmtd common.{c,h}. The functions are only generic utility functions that other mtd-utils programs may also find usefull and every program that uses libubi links against libmtd anyway so there is no real reason for keeping around a seperate ubiutils-common with only generic helper functions. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2016-11-17Unify version string printingDavid Oberhollenzer
When a program does sophisticated enough command line processing (i.e. getopt), make sure it responds to -V and --version. When a program prints a version string, make sure it uses the common_print_version macro to print out its name, that it is part of mtd-utils and the mtd-utils version from the build system in a fashion similar to common program packages like the GNU coreutils. When a program responds to -V/--version or -h/--help, make sure it reports success exit status. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at> Signed-off-by: Richard Weinberger <richard@nod.at>
2016-11-17Change build system to autotoolsRichard Weinberger
This patch is largely based on Richards original RFC. The major differences to the RFC patch are: - Add missing sumtools & mtdpart targets - Fix name of mkfs.jffs2 target - Add missing subdir-objects option for non-recursive make - Move all automake options to configure.ac - Add manpages to install target - Make XATTR & LZO support configurable - Install binaries to sbin directory like in the old build system - Install flash_erase wrapper script - Add files missing from distribution target Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at> Signed-off-by: Richard Weinberger <richard@nod.at>
2016-08-25mtd-utils: fix wrong format specifiers on mips32Mathias Kresin
This patch fixes the follwing compiler warnings: flash_erase.c: In function 'show_progress': flash_erase.c:56:22: warning: format '%lx' expects argument of type 'long unsigned int', but argument 3 has type 'off_t {aka long long int}' [-Wformat=] bareverbose(!quiet, "\rErasing %d Kibyte @ %"PRIxoff_t" -- %2i %% complete ", ^ ./include/common.h:81:10: note: in definition of macro 'bareverbose' printf(fmt, ##__VA_ARGS__); which are linked to the following buggy numerical output: Erasing 128 Kibyte @ 0 -- 917504 % complete flash_erase: Cleanmarker written at 0 Erasing 128 Kibyte @ 0 -- 1048576 % complete flash_erase: Cleanmarker written at 0 Signed-off-by: Mathias Kresin <dev@kresin.me> Signed-off-by: Richard Weinberger <richard@nod.at>
2016-04-18include sys/sysmacros.h for major/minor/makedevMike Frysinger
These functions have always been defined in sys/sysmacros.h under Linux C libraries. For some, including sys/types.h implicitly includes that as well, but glibc wants to deprecate that, and some others already have. Include the header explicitly for the funcs. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Brian Norris <computersforpeace@gmail.com>
2015-05-28include/common.h: fix build against muslJörg Krause
Like uClibc version older than (not yet released) 0.9.34 musl does not have a rpmatch() implementation. uClibc defines both __UCLIBC__ and __GLIBC__. So first check for uCibc and its version and then for a non glibc implementation (like musl). Note, musl does not define __MUSL__. Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks> Signed-off-by: Brian Norris <computersforpeace@gmail.com>
2014-10-20mtd-utils: Add macros to include/common.hhujianyang
This patch adds four macros: ALIGN, __ALIGN_MASK, min_t and max_t to include/common.h. Signed-off-by: hujianyang <hujianyang@huawei.com>
2014-04-21include/common.h: fix build against recent 0.9.33 uClibcBaruch Siach
An implementation of rpmatch() was backported to the 0.9.33 branch of uClibc. So the uClibc version check introduced in commit 50c9e11f7e (include/common.h: fix build against current uClibc) is not enough. Rename the local rpmatch() implementation to avoid collision. Signed-off-by: Baruch Siach <baruch@tkos.co.il> Acked-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Brian Norris <computersforpeace@gmail.com>
2014-04-15include/common.h: fix build against current uClibcBaruch Siach
Commit dbe0fd17f2 (mtd-utils: new prompt() helper for talking to the user) introduced a rpmatch() call. However, uClibc versions older than (not yet released) 0.9.34 don't have rpmatch() implementation. Add one. Signed-off-by: Baruch Siach <baruch@tkos.co.il> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Acked-by: Mike Frysinger <vapier@gentoo.org>
2013-07-01mtd-utils: new prompt() helper for talking to the userMike Frysinger
We've got a few tools that prompt the user for "yes/no" questions. Add a common helper to simplify the various implementations. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
2012-09-25introduce PRIxoff_t and PRIdoff_t printf helpersRichard Genoud
They will be usefull when printing offsets. Signed-off-by: Richard Genoud <richard.genoud@gmail.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
2011-06-29mtd-utils: add common version printing functionBrian Norris
Signed-off-by: Brian Norris <computersforpeace@gmail.com> Acked-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Artem Bityutskiy <dedekind1@gmail.com>
2011-06-27autogenerate version.h from build systemMike Frysinger
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-06-07libmtd: use O_CLOEXECMike Frysinger
Not strictly necessary, but this is good library behavior and should carry no runtime overhead. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2011-04-09mtd-utils: improve simple_strtoX usage commentaryArtem Bityutskiy
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2011-02-25mtd-utils: common.h: simple_strtoll type usageBrian Norris
We must use "long long" and "unsigned long long" types when implementing the functions "simple_strtoll()" and "simple_strtoull()", respectively. This prevents casting/truncation errors on systems where "long" is not the same size as "long long" (that is, on most systems). Signed-off-by: Brian Norris <computersforpeace@gmail.com> Acked-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2010-12-02common.h: Add MAX() macro, fix MIN()Brian Norris
Add MAX() macro to common.h, to be used in future patches. Also a style change in comma location on MIN(). Signed-off-by: Brian Norris <computersforpeace@gmail.com> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2010-10-01mtd-utils: dont redefine MIN()Mike Frysinger
Some C library headers will define MIN(), so add an #ifndef check. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2010-10-01mtd-utils: sys_errmsg: optimize indentationMike Frysinger
Rather than do a for loop and output 1 space at a time, let the printf code take care of indenting the string based on the constant length. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2010-09-30mtd-utils: new memory wrappersMike Frysinger
The mkfs.jffs2 program has local wrappers for memory related functions that are useful beyond mkfs.jffs2, so break them out into a common header. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2010-09-27mtd-utils: new strtoX helpersMike Frysinger
Simply usage of converting strings to numbers by adding some wrappers around the standard strtoX functions. These helpers simplify the api of these functions a bit by providing an optional "error" pointer and automatic error message. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2010-09-27mtd-utils: common.h: clean up PROGRAM_NAME usageMike Frysinger
Make PROGRAM_NAME required in order to include common.h so we can rely on it existing. Further, stop embedding PROGRAM_NAME in every error message so that we can save string space with it being declare only once. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2010-09-25mtd-utils: new bareverbose() helperMike Frysinger
Add a new helper that lets people do simple verbose output without any implicit strings added around it. Good for progress bars and such. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2010-09-24mtd-utils: punt duplicate normsg_cont defineMike Frysinger
Looks like someone copied & pasted it twice by accident. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2010-09-24mtd-utils: convert to common.h/minMike Frysinger
Kill off duplicated min() defines and convert to the common.h one. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2010-07-17libs: remove ubiutils-specific stuff from common.hArtem Bityutskiy
Now include/common.h contains things that really everyone can use. And all the stuff specific to ubi-utils is in ubi-utils/include/ubiutils-common.h Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2010-07-13mtd-utils: move libmtd source files to lib/ subdirectoryKevin Cernekee
Source files for libmtd, crc32, and fec are scattered throughout the tree. Move them to a central location so they can be built into a common "libmtd.a" library used by all mtd-utils programs. This patch only renames/deletes files and does not change the content. Also modify the build system and source code so that libmtd.a can be built from a "common" location (lib/). Statically link all utilities at the top level with libmtd.a . Minor changes to mkfs.ubifs to allow using the common crc32 implementation. Signed-off-by: Kevin Cernekee <cernekee@gmail.com> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>