From dc797c20bf6f68b24cd01f08175d0977d09c985a Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Mon, 12 Feb 2018 13:58:48 +0300 Subject: [PATCH] reformat source code, add build rule to check formatting --- .travis.yml | 21 +++--- Makefile | 24 ++++++- format.sh | 10 +++ main.cpp | 183 +++++++++++++++++++++++++++++----------------------- 4 files changed, 143 insertions(+), 95 deletions(-) create mode 100755 format.sh diff --git a/.travis.yml b/.travis.yml index b119e1f..8d2602f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,13 +3,17 @@ sudo: required services: - docker +env: + global: + - BUILD_CMD=./build_all_configs.sh + - BUILD_DIR=/workdir + - DOCKER_IMAGE=multiarch/crossbuild + matrix: include: - env: - TARGET_OS=linux64 - - DOCKER_IMAGE=multiarch/crossbuild - CROSS_TRIPLE=x86_64-linux-gnu - - BUILD_DIR=/workdir - env: - TARGET_OS=linux32 # multiarch/crossbuild doesn't come with 32-bit compilers, use a different image @@ -18,25 +22,18 @@ matrix: - BUILD_DIR=/work - env: - TARGET_OS=linux-armhf - - DOCKER_IMAGE=multiarch/crossbuild - CROSS_TRIPLE=arm-linux-gnueabihf - - BUILD_DIR=/workdir - - EXTRA_ARGS="-e SKIP_TESTS=1" + - EXTRA_ARGS='-e SKIP_TESTS=1' - env: - TARGET_OS=win32 - - DOCKER_IMAGE=multiarch/crossbuild - CROSS_TRIPLE=i686-w64-mingw32 - - BUILD_DIR=/workdir # multiarch/crossbuild doesn't come with 'zip', # so we build a tgz archive in the container, and re-package it later in the script. - EXTRA_ARGS='-e ARCHIVE=tar -e SKIP_TESTS=1' - env: - TARGET_OS=osx - - DOCKER_IMAGE=multiarch/crossbuild - CROSS_TRIPLE=x86_64-apple-darwin - - BUILD_DIR=/workdir - - EXTRA_ARGS="-e SKIP_TESTS=1 -e CXX=c++" - + - EXTRA_ARGS='-e SKIP_TESTS=1 -e CXX=c++' script: - export VER=$(git describe) @@ -49,7 +46,7 @@ script: -e CROSS_TRIPLE=${CROSS_TRIPLE} ${EXTRA_ARGS} ${DOCKER_IMAGE} - ./build_all_configs.sh + ${BUILD_CMD} # Diagnostics - ls -l diff --git a/Makefile b/Makefile index a73eef6..fbdf4d9 100644 --- a/Makefile +++ b/Makefile @@ -66,6 +66,10 @@ OBJ := main.o \ INCLUDES := -Itclap -Iinclude -Ispiffs/src -I. +FILES_TO_FORMAT := $(shell find . -not -path './spiffs/*' \( -name '*.c' -o -name '*.cpp' \)) + +DIFF_FILES := $(addsuffix .diff,$(FILES_TO_FORMAT)) + # clang doesn't seem to handle -D "ARG=\"foo bar\"" correctly, so replace spaces with \x20: BUILD_CONFIG_STR := $(shell echo $(CPPFLAGS) | sed 's- -\\\\x20-') @@ -86,8 +90,6 @@ DIST_NAME := mkspiffs-$(VERSION)$(BUILD_CONFIG_NAME)-$(TARGET_OS) DIST_DIR := $(DIST_NAME) DIST_ARCHIVE := $(DIST_NAME).$(ARCHIVE_EXTENSION) -.PHONY: all clean dist - all: $(TARGET) dist: $(DIST_ARCHIVE) @@ -108,7 +110,7 @@ $(DIST_DIR): @mkdir -p $@ clean: - @rm -f $(TARGET) $(OBJ) + @rm -f $(TARGET) $(OBJ) $(DIFF_FILES) SPIFFS_TEST_FS_CONFIG := -s 0x100000 -p 512 -b 0x2000 @@ -132,3 +134,19 @@ test: $(TARGET) diff spiffs_t spiffs_u rm -f out.{list0,list1,list2,list_u,spiffs_t} rm -R spiffs_u spiffs_t + +format-check: $(DIFF_FILES) + @rm -f $(DIFF_FILES) + +$(DIFF_FILES): %.diff: % + @./format.sh < $< >$<.new + @diff $<.new $< >$@ || ( \ + echo "File $^ not formatted correctly. Please use format.sh to re-format it." && \ + echo "Here's the diff that caused an error:" && \ + echo "" && \ + cat $@ && \ + rm $@ $<.new && \ + exit 1 ) + @rm -f $@ $<.new + +.PHONY: all clean dist format-check diff --git a/format.sh b/format.sh new file mode 100755 index 0000000..2c98518 --- /dev/null +++ b/format.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# Runs astyle with the full set of formatting options +astyle \ + --style=otbs \ + --indent=spaces=4 \ + --convert-tabs \ + --keep-one-line-statements \ + --pad-header \ + --pad-oper \ + "$@" diff --git a/main.cpp b/main.cpp index da0ff49..19ec888 100644 --- a/main.cpp +++ b/main.cpp @@ -53,17 +53,20 @@ static const char* ignored_file_names[] = { ".gitmodules" }; -static s32_t api_spiffs_read(u32_t addr, u32_t size, u8_t *dst){ +static s32_t api_spiffs_read(u32_t addr, u32_t size, u8_t *dst) +{ memcpy(dst, &s_flashmem[0] + addr, size); return SPIFFS_OK; } -static s32_t api_spiffs_write(u32_t addr, u32_t size, u8_t *src){ +static s32_t api_spiffs_write(u32_t addr, u32_t size, u8_t *src) +{ memcpy(&s_flashmem[0] + addr, src, size); return SPIFFS_OK; } -static s32_t api_spiffs_erase(u32_t addr, u32_t size){ +static s32_t api_spiffs_erase(u32_t addr, u32_t size) +{ memset(&s_flashmem[0] + addr, 0xff, size); return SPIFFS_OK; } @@ -73,7 +76,8 @@ static s32_t api_spiffs_erase(u32_t addr, u32_t size){ //implementation -int spiffsTryMount(){ +int spiffsTryMount() +{ spiffs_config cfg = {0}; cfg.phys_addr = 0x0000; @@ -93,38 +97,45 @@ int spiffsTryMount(){ s_spiffsCache.resize((32 + s_pageSize) * maxOpenFiles); return SPIFFS_mount(&s_fs, &cfg, - &s_spiffsWorkBuf[0], - &s_spiffsFds[0], s_spiffsFds.size(), - &s_spiffsCache[0], s_spiffsCache.size(), - NULL); + &s_spiffsWorkBuf[0], + &s_spiffsFds[0], s_spiffsFds.size(), + &s_spiffsCache[0], s_spiffsCache.size(), + NULL); } -bool spiffsMount(){ - if(SPIFFS_mounted(&s_fs)) +bool spiffsMount() +{ + if (SPIFFS_mounted(&s_fs)) { + return true; + } + int res = spiffsTryMount(); + if (res != SPIFFS_OK) { + std::cerr << "SPIFFS mount failed with error: " << res << std::endl; + return false; + } return true; - int res = spiffsTryMount(); - if (res != SPIFFS_OK) { - std::cerr << "SPIFFS mount failed with error: " << res << std::endl; - return false; - } - return true; } -bool spiffsFormat(){ - spiffsMount(); - SPIFFS_unmount(&s_fs); - int formated = SPIFFS_format(&s_fs); - if(formated != SPIFFS_OK) - return false; - return (spiffsTryMount() == SPIFFS_OK); +bool spiffsFormat() +{ + spiffsMount(); + SPIFFS_unmount(&s_fs); + int formated = SPIFFS_format(&s_fs); + if (formated != SPIFFS_OK) { + return false; + } + return (spiffsTryMount() == SPIFFS_OK); } -void spiffsUnmount(){ - if(SPIFFS_mounted(&s_fs)) - SPIFFS_unmount(&s_fs); +void spiffsUnmount() +{ + if (SPIFFS_mounted(&s_fs)) { + SPIFFS_unmount(&s_fs); + } } -int addFile(char* name, const char* path) { +int addFile(char* name, const char* path) +{ FILE* src = fopen(path, "rb"); if (!src) { std::cerr << "error: failed to open " << path << " for reading" << std::endl; @@ -144,7 +155,7 @@ int addFile(char* name, const char* path) { size_t left = size; uint8_t data_byte; - while (left > 0){ + while (left > 0) { if (1 != fread(&data_byte, 1, 1, src)) { std::cerr << "fread error!" << std::endl; @@ -180,7 +191,8 @@ int addFile(char* name, const char* path) { return 0; } -int addFiles(const char* dirname, const char* subPath) { +int addFiles(const char* dirname, const char* subPath) +{ DIR *dir; struct dirent *ent; bool error = false; @@ -226,15 +238,12 @@ int addFiles(const char* dirname, const char* subPath) { newSubPath += ent->d_name; newSubPath += "/"; - if (addFiles(dirname, newSubPath.c_str()) != 0) - { + if (addFiles(dirname, newSubPath.c_str()) != 0) { std::cerr << "Error for adding content from " << ent->d_name << "!" << std::endl; } continue; - } - else - { + } else { std::cerr << "skipping " << ent->d_name << std::endl; continue; } @@ -264,7 +273,8 @@ int addFiles(const char* dirname, const char* subPath) { return (error) ? 1 : 0; } -void listFiles() { +void listFiles() +{ spiffs_DIR dir; spiffs_dirent ent; @@ -272,8 +282,9 @@ void listFiles() { spiffs_dirent* it; while (true) { it = SPIFFS_readdir(&dir, &ent); - if (!it) + if (!it) { break; + } std::cout << it->size << '\t' << it->name << std::endl; } @@ -287,7 +298,8 @@ void listFiles() { * * @author Pascal Gollor (http://www.pgollor.de/cms/) */ -bool dirExists(const char* path) { +bool dirExists(const char* path) +{ DIR *d = opendir(path); if (d) { @@ -305,10 +317,11 @@ bool dirExists(const char* path) { * * @author Pascal Gollor (http://www.pgollor.de/cms/) */ -bool dirCreate(const char* path) { +bool dirCreate(const char* path) +{ // Check if directory also exists. if (dirExists(path)) { - return false; + return false; } // platform stuff... @@ -317,8 +330,8 @@ bool dirCreate(const char* path) { #else if (mkdir(path, S_IRWXU | S_IXGRP | S_IRGRP | S_IROTH | S_IXOTH) != 0) { #endif - std::cerr << "Can not create directory!!!" << std::endl; - return false; + std::cerr << "Can not create directory!!!" << std::endl; + return false; } return true; @@ -332,7 +345,8 @@ bool dirCreate(const char* path) { * * @author Pascal Gollor (http://www.pgollor.de/cms/) */ -bool unpackFile(spiffs_dirent *spiffsFile, const char *destPath) { +bool unpackFile(spiffs_dirent *spiffsFile, const char *destPath) +{ u8_t buffer[spiffsFile->size]; std::string filename = (const char*)(spiffsFile->name); @@ -367,7 +381,8 @@ bool unpackFile(spiffs_dirent *spiffsFile, const char *destPath) { * * todo: Do unpack stuff for directories. */ -bool unpackFiles(std::string sDest) { +bool unpackFiles(std::string sDest) +{ spiffs_DIR dir; spiffs_dirent ent; @@ -422,12 +437,12 @@ bool unpackFiles(std::string sDest) { // Output stuff. std::cout - << it->name - << '\t' - << " > " << sDestFilePath - << '\t' - << "size: " << it->size << " Bytes" - << std::endl; + << it->name + << '\t' + << " > " << sDestFilePath + << '\t' + << "size: " << it->size << " Bytes" + << std::endl; } // Get next file handle. @@ -442,7 +457,8 @@ bool unpackFiles(std::string sDest) { // Actions -int actionPack() { +int actionPack() +{ if (!dirExists(s_dirName.c_str())) { std::cerr << "error: can't read source directory" << std::endl; return 1; @@ -451,7 +467,7 @@ int actionPack() { if (s_imageSize == 0) { s_imageSize = 0x10000; } - + s_flashmem.resize(s_imageSize, 0xff); FILE* fdres = fopen(s_imageName.c_str(), "wb"); @@ -464,7 +480,7 @@ int actionPack() { int result = addFiles(s_dirName.c_str(), "/"); spiffsUnmount(); - fwrite(&s_flashmem[0], 4, s_flashmem.size()/4, fdres); + fwrite(&s_flashmem[0], 4, s_flashmem.size() / 4, fdres); fclose(fdres); return result; @@ -484,7 +500,8 @@ size_t getFileSize(FILE* fp) * * @author Pascal Gollor (http://www.pgollor.de/cms/) */ -int actionUnpack(void) { +int actionUnpack(void) +{ int ret = 0; // open spiffs image @@ -501,7 +518,7 @@ int actionUnpack(void) { s_flashmem.resize(s_imageSize, 0xff); // read content into s_flashmem - fread(&s_flashmem[0], 4, s_flashmem.size()/4, fdsrc); + fread(&s_flashmem[0], 4, s_flashmem.size() / 4, fdsrc); // close file handle fclose(fdsrc); @@ -524,7 +541,8 @@ int actionUnpack(void) { } -int actionList() { +int actionList() +{ FILE* fdsrc = fopen(s_imageName.c_str(), "rb"); if (!fdsrc) { std::cerr << "error: failed to open image file" << std::endl; @@ -537,7 +555,7 @@ int actionList() { s_flashmem.resize(s_imageSize, 0xff); - fread(&s_flashmem[0], 4, s_flashmem.size()/4, fdsrc); + fread(&s_flashmem[0], 4, s_flashmem.size() / 4, fdsrc); fclose(fdsrc); if (!spiffsMount()) { @@ -550,7 +568,8 @@ int actionList() { return 0; } -int actionVisualize() { +int actionVisualize() +{ FILE* fdsrc = fopen(s_imageName.c_str(), "rb"); if (!fdsrc) { std::cerr << "error: failed to open image file" << std::endl; @@ -564,7 +583,7 @@ int actionVisualize() { s_flashmem.resize(s_imageSize, 0xff); - fread(&s_flashmem[0], 4, s_flashmem.size()/4, fdsrc); + fread(&s_flashmem[0], 4, s_flashmem.size() / 4, fdsrc); fclose(fdsrc); if (!spiffsMount()) { @@ -586,30 +605,33 @@ int actionVisualize() { class CustomOutput : public TCLAP::StdOutput { - public: - virtual void version(TCLAP::CmdLineInterface& c) - { - std::cout << "mkspiffs ver. " VERSION << std::endl; - const char* configName = BUILD_CONFIG_NAME; - if (configName[0] == '-') configName += 1; - std::cout << "Build configuration name: " << configName << std::endl; - std::cout << "SPIFFS ver. " SPIFFS_VERSION << std::endl; - const char* buildConfig = BUILD_CONFIG; - std::cout << "Extra build flags: " << (strlen(buildConfig) ? buildConfig : "(none)") << std::endl; - std::cout << "SPIFFS configuration:" << std::endl; - PRINT_INT_MACRO(SPIFFS_OBJ_NAME_LEN); - PRINT_INT_MACRO(SPIFFS_OBJ_META_LEN); - PRINT_INT_MACRO(SPIFFS_USE_MAGIC); - #if SPIFFS_USE_MAGIC == 1 - PRINT_INT_MACRO(SPIFFS_USE_MAGIC_LENGTH); - #endif - PRINT_INT_MACRO(SPIFFS_ALIGNED_OBJECT_INDEX_TABLES); +public: + virtual void version(TCLAP::CmdLineInterface& c) + { + std::cout << "mkspiffs ver. " VERSION << std::endl; + const char* configName = BUILD_CONFIG_NAME; + if (configName[0] == '-') { + configName += 1; } + std::cout << "Build configuration name: " << configName << std::endl; + std::cout << "SPIFFS ver. " SPIFFS_VERSION << std::endl; + const char* buildConfig = BUILD_CONFIG; + std::cout << "Extra build flags: " << (strlen(buildConfig) ? buildConfig : "(none)") << std::endl; + std::cout << "SPIFFS configuration:" << std::endl; + PRINT_INT_MACRO(SPIFFS_OBJ_NAME_LEN); + PRINT_INT_MACRO(SPIFFS_OBJ_META_LEN); + PRINT_INT_MACRO(SPIFFS_USE_MAGIC); +#if SPIFFS_USE_MAGIC == 1 + PRINT_INT_MACRO(SPIFFS_USE_MAGIC_LENGTH); +#endif + PRINT_INT_MACRO(SPIFFS_ALIGNED_OBJECT_INDEX_TABLES); + } }; #undef PRINT_INT_MACRO -void processArgs(int argc, const char** argv) { +void processArgs(int argc, const char** argv) +{ TCLAP::CmdLine cmd("", ' ', VERSION); CustomOutput output; cmd.setOutput(&output); @@ -659,11 +681,12 @@ void processArgs(int argc, const char** argv) { s_addAllFiles = addAllFilesArg.isSet(); } -int main(int argc, const char * argv[]) { +int main(int argc, const char * argv[]) +{ try { processArgs(argc, argv); - } catch(...) { + } catch (...) { std::cerr << "Invalid arguments" << std::endl; return 1; } @@ -673,7 +696,7 @@ int main(int argc, const char * argv[]) { return actionPack(); break; case ACTION_UNPACK: - return actionUnpack(); + return actionUnpack(); break; case ACTION_LIST: return actionList();