mirror of https://review.coreboot.org/ffs.git
remove custom assert implementation and exception.c
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
This commit is contained in:
parent
799ef76e46
commit
281345fdc9
|
@ -9,7 +9,6 @@ libclib_a_SOURCES = \
|
|||
clib/src/err.c \
|
||||
clib/src/misc.c \
|
||||
clib/src/ecc.c \
|
||||
clib/src/exception.c \
|
||||
clib/src/list.c \
|
||||
clib/src/list_iter.c \
|
||||
clib/src/tree.c \
|
||||
|
@ -22,9 +21,9 @@ libclib_a_SOURCES = \
|
|||
libffs_a_SOURCES = ffs/src/libffs.c ffs/src/libffs2.c
|
||||
|
||||
ecc_ecc_SOURCES = ecc/src/main.c
|
||||
ecc_ecc_LDADD = libffs.a libclib.a -lpthread
|
||||
ecc_ecc_LDADD = libffs.a libclib.a
|
||||
|
||||
fpart_fpart_LDADD = libffs.a libclib.a -lpthread
|
||||
fpart_fpart_LDADD = libffs.a libclib.a
|
||||
fpart_fpart_SOURCES = \
|
||||
fpart/src/cmd_create.c \
|
||||
fpart/src/cmd_add.c \
|
||||
|
@ -46,7 +45,7 @@ fcp_fcp_SOURCES = \
|
|||
fcp/src/cmd_list.c \
|
||||
fcp/src/cmd_trunc.c \
|
||||
fcp/src/main.c
|
||||
fcp_fcp_LDADD = libffs.a libclib.a -lpthread
|
||||
fcp_fcp_LDADD = libffs.a libclib.a
|
||||
|
||||
bin_SCRIPTS = fpart/fpart.sh
|
||||
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
/* IBM_PROLOG_BEGIN_TAG */
|
||||
/* This is an automatically generated prolog. */
|
||||
/* */
|
||||
/* $Source: clib/assert.h $ */
|
||||
/* */
|
||||
/* OpenPOWER FFS Project */
|
||||
/* */
|
||||
/* Contributors Listed Below - COPYRIGHT 2014,2015 */
|
||||
/* [+] International Business Machines Corp. */
|
||||
/* */
|
||||
/* */
|
||||
/* 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. */
|
||||
/* */
|
||||
/* IBM_PROLOG_END_TAG */
|
||||
|
||||
/*! @file assert.h
|
||||
* @brief Assertion helpers
|
||||
* @author Shaun Wetzstein <shaun@us.ibm.com>
|
||||
* @date 2010-2011
|
||||
*/
|
||||
|
||||
#ifdef assert
|
||||
#undef assert
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @def assert(e)
|
||||
* @hideinitializer
|
||||
* @brief Check for program assertion failures
|
||||
* @param e [in] assertion expression
|
||||
* @throws ASSERTION iff expression @em e evaluates @em false
|
||||
*/
|
||||
|
||||
#ifdef NDEBUG
|
||||
#define assert(e) ((void)0)
|
||||
#else
|
||||
#include "exception.h"
|
||||
#define assert(e) ((void)((e) ? (void)0 : throw_bytes(ASSERTION, __STRING((e)), strlen(__STRING((e))))))
|
||||
#endif
|
306
clib/exception.h
306
clib/exception.h
|
@ -1,306 +0,0 @@
|
|||
/* IBM_PROLOG_BEGIN_TAG */
|
||||
/* This is an automatically generated prolog. */
|
||||
/* */
|
||||
/* $Source: clib/exception.h $ */
|
||||
/* */
|
||||
/* OpenPOWER FFS Project */
|
||||
/* */
|
||||
/* Contributors Listed Below - COPYRIGHT 2014,2015 */
|
||||
/* [+] International Business Machines Corp. */
|
||||
/* */
|
||||
/* */
|
||||
/* 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. */
|
||||
/* */
|
||||
/* IBM_PROLOG_END_TAG */
|
||||
|
||||
/*!
|
||||
* @file exception.h
|
||||
* @brief Exceptions for C
|
||||
* @details This file implements setjump / longjump based exceptions
|
||||
* @note Using these macros will create an exception context in each thread
|
||||
* @author Shaun Wetzstein <shaun@us.ibm.com>
|
||||
* @date 2008-2011
|
||||
*/
|
||||
|
||||
#ifndef __EXCEPTION_H__
|
||||
#define __EXCEPTION_H__
|
||||
|
||||
#include <setjmp.h>
|
||||
#include <pthread.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define EX_PAGE_SIZE 4096 //!< Max. size of an exception payload
|
||||
#define EXC_MAGIC 0x45584350 //!< Magic number, i.e. "EXCP"
|
||||
|
||||
#define ASSERTION 1 //!< Assertion exception class
|
||||
//#define UNEXPECTED 2 //!< Unexpected result exception class
|
||||
//#define ERRNO 3 //!< @em errno error exception class
|
||||
#define EXC_LAST 4
|
||||
|
||||
typedef struct exception_frame exception_frame_t; //!< Alias for the @em exception_frame class
|
||||
|
||||
/*!
|
||||
* @brief Exception class
|
||||
*/
|
||||
typedef struct {
|
||||
int ex; //!< Exception class
|
||||
|
||||
const char *file; //!< Source file exception was thrown
|
||||
int line; //!< Source line exception was thrown
|
||||
|
||||
void *data; //!< User-defined data associated with the exception
|
||||
int size; //!< Size (in bytes) of the user-defined data
|
||||
} exception_t;
|
||||
|
||||
/*!
|
||||
* @brief Exception frame class
|
||||
*/
|
||||
struct exception_frame {
|
||||
unsigned long magic; //!< @private
|
||||
exception_frame_t *prev; //!< @private
|
||||
jmp_buf jmp; //!< @private
|
||||
exception_t exc; //!< @private
|
||||
};
|
||||
|
||||
/*!
|
||||
* @def try
|
||||
* @brief Simulate a try {...} catch {...} else {...} end_try block
|
||||
* @hideinitializer
|
||||
* @details For example,
|
||||
* @code
|
||||
* ...
|
||||
* #define ERROR 4
|
||||
* ...
|
||||
* exception_t * ex;
|
||||
* ...
|
||||
* try {
|
||||
* ...
|
||||
* } catch (ERROR, ex) {
|
||||
* fprintf(stderr, "caught ERROR exception at: %s(%d)\n",
|
||||
* ex->file, ex->line);
|
||||
* struct ErrorStruct * err = (struct ErrorStruct *)ex->data
|
||||
* ...format and log err...
|
||||
* } end_try
|
||||
* @endcode
|
||||
*/
|
||||
#define try \
|
||||
do { \
|
||||
__exc_init(); \
|
||||
exception_frame_t __frame; \
|
||||
memset(&__frame, 0, sizeof(__frame)); \
|
||||
__frame.magic = EXC_MAGIC, __frame.prev = __exc_get_frame(); \
|
||||
__exc_set_frame(&__frame); \
|
||||
volatile int __flag = setjmp(__frame.jmp); \
|
||||
if (__flag == 0) {
|
||||
|
||||
/*!
|
||||
* @def catch
|
||||
* @brief Simulate a try {...} catch {...} else {...} end_try block
|
||||
* @hideinitializer
|
||||
* @details For example,
|
||||
* @code
|
||||
* ...
|
||||
* exception_t ex;
|
||||
* ...
|
||||
* try {
|
||||
* ....
|
||||
* } catch (TYPE1, ex) {
|
||||
* ...
|
||||
* } catch (TYPE2, ex) {
|
||||
* ...
|
||||
* } catch (TYPE3, ex) {
|
||||
* ...
|
||||
* } else (ex) {
|
||||
* ...
|
||||
* } end_try
|
||||
* @endcode
|
||||
*/
|
||||
#define catch(x, e) \
|
||||
} else if (__flag == (x)) { \
|
||||
exception_frame_t * __tmp = __exc_get_frame(); \
|
||||
(e) = __tmp->exc, (e).ex = (__flag); \
|
||||
|
||||
/*!
|
||||
* @def else
|
||||
* @brief Simulate a try {...} catch {...} else {...} end_try block
|
||||
* @hideinitializer
|
||||
* @details For example,
|
||||
* @code
|
||||
* ...
|
||||
* exception_t ex;
|
||||
* ...
|
||||
* try {
|
||||
* ....
|
||||
* } catch (TYPE1, ex) {
|
||||
* ...
|
||||
* } catch (TYPE2, ex) {
|
||||
* ...
|
||||
* } catch (TYPE3, ex) {
|
||||
* ...
|
||||
* } else (ex) {
|
||||
* ...
|
||||
* } end_try
|
||||
* @endcode
|
||||
*/
|
||||
#define else(e) catch(__flag, (e))
|
||||
|
||||
/*!
|
||||
* @def end_try
|
||||
* @brief Simulate a try {...} catch {...} else {...} end_try block
|
||||
* @hideinitializer
|
||||
*/
|
||||
#define end_try \
|
||||
} else { \
|
||||
__exc_set_frame(__frame.prev); \
|
||||
throw_bytes(__flag, __frame.exc.data, __frame.exc.size); \
|
||||
} \
|
||||
__exc_set_frame(__frame.prev); \
|
||||
} while (0);
|
||||
|
||||
/*!
|
||||
* @def throw(x, f, ...)
|
||||
* @brief Throw a C exception with printf-like formatting
|
||||
* @hideinitializer
|
||||
* @param x [in] Exception class
|
||||
* @param d [in] Pointer to user-defined data
|
||||
* @param s [in] Size of user-defined data (in bytes)
|
||||
* @details For example,
|
||||
* @code
|
||||
* ...
|
||||
* #define ERRNO_STRING
|
||||
* ...
|
||||
* #define throw_errno_string(x) \
|
||||
* throw(ERRNO_STRING, "errno=%d : %s", (x),
|
||||
* (void*)strerror((x)), __FILE__, __LINE__)
|
||||
* ...
|
||||
* if (rc < 0)
|
||||
* throw_errno_string(errno);
|
||||
* ...
|
||||
* exception_t ex;
|
||||
* ...
|
||||
* catch (ERRNO_STRING ex) {
|
||||
* fprintf(strerr, "EXCEPTION: errno: %s in file: %s on line: %d\n",
|
||||
* (char *)ex.data, ex.file, ex.line);
|
||||
* exit(1);
|
||||
* }
|
||||
* @endcode
|
||||
*/
|
||||
#define throw(x, f, ...) ({ \
|
||||
char __d[EX_PAGE_SIZE]; \
|
||||
__exc_throw((x), __d, snprintf(__d, sizeof __d, (f), ##__VA_ARGS__),\
|
||||
__FILE__, __LINE__); \
|
||||
})
|
||||
|
||||
/*!
|
||||
* @def rethrow(x, f, ...)
|
||||
* @brief Rethrow a C exception from within a try ... catch ... end_try block
|
||||
* @hideinitializer
|
||||
* @param e [in] Exception object
|
||||
* @details For example,
|
||||
* @code
|
||||
* ...
|
||||
* exception_t ex;
|
||||
* ...
|
||||
* catch (ERRNO_STRING ex) {
|
||||
* fprintf(strerr, "EXCEPTION: errno: %s in file: %s on line: %d\n",
|
||||
* (char *)ex.data, ex.file, ex.line);
|
||||
* rethrow(ex);
|
||||
* }
|
||||
* @endcode
|
||||
*/
|
||||
#define rethrow(e) ({ \
|
||||
__exc_rethrow((e).ex, (e).data, (e).size, (e).file, (e).line); \
|
||||
})
|
||||
|
||||
/*!
|
||||
* @def throw_bytes(x, d, s)
|
||||
* @brief Throw a C exception with user-defined data
|
||||
* @hideinitializer
|
||||
* @param x [in] Exception class
|
||||
* @param d [in] Pointer to user-defined data
|
||||
* @param s [in] Size of user-defined data (in bytes)
|
||||
* @details For example,
|
||||
* @code
|
||||
* ...
|
||||
* #define ERRNO_STRING
|
||||
* ...
|
||||
* #define throw_errno_string(x) \
|
||||
* throw_bytes(ERRNO_STRING, (void*)strerror((x)),
|
||||
* strlen(strerror((x)), __FILE__, __LINE__)
|
||||
* ...
|
||||
* if (rc < 0)
|
||||
* throw_errno_string(errno);
|
||||
* ...
|
||||
* exception_t ex;
|
||||
* ...
|
||||
* catch (ERRNO_STRING ex) {
|
||||
* fprintf(strerr, "EXCEPTION: errno: %s in file: %s on line: %d\n",
|
||||
* (char *)ex.data, ex.file, ex.line);
|
||||
* exit(1);
|
||||
* }
|
||||
* @endcode
|
||||
*/
|
||||
#define throw_bytes(x, d, s) \
|
||||
__exc_throw((x), (d), (s), __FILE__, __LINE__)
|
||||
|
||||
/*!
|
||||
* @def throw_unexpected(x)
|
||||
* @brief Throw a message (NULL terminated C string), due to an @em
|
||||
* unexpected error
|
||||
* @hideinitializer
|
||||
* @param x [in] Unexpected error message
|
||||
* @details For example,
|
||||
* @code
|
||||
* ...
|
||||
* rc = foo_function();
|
||||
* if (rc < 0)
|
||||
* throw_unexpected("Invalid return code from foo_function()");
|
||||
* ...
|
||||
* @endcode
|
||||
*/
|
||||
#define throw_unexpected(x) ({ \
|
||||
__exc_throw(UNEXPECTED,((void*)x), strlen((x)), \
|
||||
__FILE__, __LINE__); \
|
||||
})
|
||||
|
||||
/*!
|
||||
* @def throw_errno(x)
|
||||
* @brief Throw an errno number, due to an invalid function result.
|
||||
* @hideinitializer
|
||||
* @param x [in] Unexpected errno number
|
||||
* @details For example,
|
||||
* @code
|
||||
* ...
|
||||
* rc = open(...);
|
||||
* if (rc == -1)
|
||||
* throw_errno(errno);
|
||||
* ...
|
||||
* @endcode
|
||||
*/
|
||||
#define throw_errno(x) ({ \
|
||||
__exc_throw(ERRNO,(void*)(x), 0, \
|
||||
__FILE__, __LINE__); \
|
||||
})
|
||||
|
||||
/*! @cond */
|
||||
extern void __exc_init(void);
|
||||
extern exception_frame_t *__exc_get_frame(void);
|
||||
extern void __exc_set_frame(exception_frame_t *);
|
||||
extern int __exc_throw(int, void *, int, const char *, int);
|
||||
extern int __exc_rethrow(int, void *, int, const char *, int);
|
||||
extern void __exc_backtrace(const char *, ...);
|
||||
extern const char *__exc_name(int exc);
|
||||
/*! @endcond */
|
||||
|
||||
#endif /* __EXCEPTION_H__ */
|
|
@ -44,7 +44,7 @@
|
|||
|
||||
#include "err.h"
|
||||
|
||||
static pthread_key_t __err_key = 0;
|
||||
static list_t *__err_key = 0;
|
||||
|
||||
static const char *__err_type_name[] = {
|
||||
[ERR_NONE] = "none",
|
||||
|
@ -68,7 +68,7 @@ void err_delete(err_t * self)
|
|||
|
||||
err_t *err_get(void)
|
||||
{
|
||||
list_t *list = (list_t *) pthread_getspecific(__err_key);
|
||||
list_t *list = __err_key;
|
||||
|
||||
err_t *self = NULL;
|
||||
|
||||
|
@ -77,7 +77,7 @@ err_t *err_get(void)
|
|||
|
||||
if (list_empty(list)) {
|
||||
free(list), list = NULL;
|
||||
assert(pthread_setspecific(__err_key, list) == 0);
|
||||
__err_key = list;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -88,13 +88,13 @@ void err_put(err_t * self)
|
|||
{
|
||||
assert(self != NULL);
|
||||
|
||||
list_t *list = pthread_getspecific(__err_key);
|
||||
list_t *list = __err_key;
|
||||
if (list == NULL) {
|
||||
list = (list_t *) malloc(sizeof(*list));
|
||||
assert(list != NULL);
|
||||
|
||||
list_init(list);
|
||||
assert(pthread_setspecific(__err_key, list) == 0);
|
||||
__err_key = list;
|
||||
}
|
||||
|
||||
list_add_head(list, &self->node);
|
||||
|
@ -207,9 +207,3 @@ const char *err_type_name(err_t * self)
|
|||
return __err_type_name[self->type];
|
||||
}
|
||||
|
||||
/* =======================================================================*/
|
||||
|
||||
__constructor static void __err__ctor__(void)
|
||||
{
|
||||
assert(pthread_key_create(&__err_key, NULL) == 0);
|
||||
}
|
||||
|
|
|
@ -1,152 +0,0 @@
|
|||
/* IBM_PROLOG_BEGIN_TAG */
|
||||
/* This is an automatically generated prolog. */
|
||||
/* */
|
||||
/* $Source: clib/src/exception.c $ */
|
||||
/* */
|
||||
/* OpenPOWER FFS Project */
|
||||
/* */
|
||||
/* Contributors Listed Below - COPYRIGHT 2014,2015 */
|
||||
/* [+] International Business Machines Corp. */
|
||||
/* */
|
||||
/* */
|
||||
/* 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. */
|
||||
/* */
|
||||
/* IBM_PROLOG_END_TAG */
|
||||
|
||||
/*
|
||||
* File: exc.c
|
||||
* Author: Shaun Wetzstein <shaun@us.ibm.com>
|
||||
* Descr: {set,long}jmp implementation of exceptions for C code.
|
||||
* Note: using these macros will create an exception context
|
||||
* in each thread.
|
||||
* Date: 7/06/09
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <assert.h>
|
||||
#include <pthread.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <execinfo.h>
|
||||
|
||||
#include "exception.h"
|
||||
#include "misc.h"
|
||||
|
||||
/* =======================================================================*/
|
||||
|
||||
const char *exception_name[] = {
|
||||
"assertion",
|
||||
"unexpected",
|
||||
"errno",
|
||||
};
|
||||
|
||||
typedef struct exception_context {
|
||||
pthread_once_t once;
|
||||
pthread_key_t key;
|
||||
} exception_context;
|
||||
|
||||
/* =======================================================================*/
|
||||
|
||||
static exception_context __exc_ctx = { PTHREAD_ONCE_INIT, 0 };
|
||||
|
||||
static inline void __exc_key_create(void)
|
||||
{
|
||||
if (pthread_key_create(&__exc_ctx.key, NULL))
|
||||
__exc_throw(ASSERTION, NULL, 0, __FILE__, __LINE__);
|
||||
}
|
||||
|
||||
/* =======================================================================*/
|
||||
|
||||
void __exc_init(void)
|
||||
{
|
||||
if (pthread_once(&__exc_ctx.once, __exc_key_create))
|
||||
__exc_throw(ASSERTION, NULL, 0, __FILE__, __LINE__);
|
||||
}
|
||||
|
||||
exception_frame_t *__exc_get_frame(void)
|
||||
{
|
||||
return (exception_frame_t *) (pthread_getspecific(__exc_ctx.key));
|
||||
}
|
||||
|
||||
void __exc_set_frame(exception_frame_t * f)
|
||||
{
|
||||
if (pthread_setspecific(__exc_ctx.key, f))
|
||||
__exc_throw(ASSERTION, NULL, 0, __FILE__, __LINE__);
|
||||
}
|
||||
|
||||
void __exc_backtrace(const char *fmt, ...)
|
||||
{
|
||||
if (fmt != NULL) {
|
||||
va_list va;
|
||||
va_start(va, fmt);
|
||||
vfprintf(stderr, fmt, va);
|
||||
va_end(va);
|
||||
}
|
||||
|
||||
fprintf(stderr, "========== backtrace ==========\n");
|
||||
void *bt[1024];
|
||||
int nr = backtrace(bt, sizeof bt);
|
||||
backtrace_symbols_fd(bt, nr, fileno(stderr));
|
||||
fprintf(stderr, "========== backtrace ==========\n");
|
||||
}
|
||||
|
||||
int __exc_throw(int ex, void *data, int size, const char *file, int line)
|
||||
{
|
||||
extern char *program_invocation_short_name;
|
||||
|
||||
exception_frame_t *frame = __exc_get_frame();
|
||||
|
||||
if (frame == NULL) {
|
||||
__exc_backtrace
|
||||
("*** UNHANDLED EXCEPTION *** -- %s: %s(%d) ex=%d\n\n",
|
||||
program_invocation_short_name, file, line, ex);
|
||||
abort();
|
||||
}
|
||||
|
||||
if (frame->magic != EXC_MAGIC) {
|
||||
__exc_backtrace
|
||||
("*** CORRUPTED EXCEPTION FRAME *** -- %s: %s(%d) ex=%d\n\n",
|
||||
program_invocation_short_name, file, line, ex);
|
||||
abort();
|
||||
}
|
||||
|
||||
frame->exc.file = file;
|
||||
frame->exc.line = line;
|
||||
|
||||
frame->exc.data = data;
|
||||
frame->exc.size = size;
|
||||
|
||||
longjmp(frame->jmp, ex);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int __exc_rethrow(int ex, void *data, int size, const char *file, int line)
|
||||
{
|
||||
exception_frame_t *frame = __exc_get_frame();
|
||||
|
||||
if (frame != NULL)
|
||||
__exc_set_frame(frame->prev);
|
||||
|
||||
return __exc_throw(ex, data, size, file, line);
|
||||
}
|
||||
|
||||
const char *__exc_name(int exc)
|
||||
{
|
||||
return (exc < 0 || EXC_LAST <= exc) ? NULL : exception_name[exc];
|
||||
}
|
||||
|
||||
__constructor void __exc_ctor(void)
|
||||
{
|
||||
__exc_init();
|
||||
}
|
|
@ -69,7 +69,6 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "exception.h"
|
||||
#include "builtin.h"
|
||||
#include "compare.h"
|
||||
#include "type.h"
|
||||
|
|
|
@ -45,7 +45,6 @@
|
|||
#include <ctype.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/misc.h>
|
||||
#include <clib/min.h>
|
||||
#include <clib/ecc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -45,7 +45,6 @@
|
|||
#include <ctype.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/version.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
#include <stdbool.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#include <clib/exception.h>
|
||||
|
||||
#include "ffs.h"
|
||||
|
||||
|
|
|
@ -48,7 +48,6 @@
|
|||
|
||||
#include "libffs.h"
|
||||
|
||||
#include <clib/assert.h>
|
||||
#include <clib/builtin.h>
|
||||
#include <clib/checksum.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
|
||||
#include "libffs2.h"
|
||||
|
||||
#include <clib/assert.h>
|
||||
#include <clib/builtin.h>
|
||||
#include <clib/checksum.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -45,9 +45,7 @@
|
|||
#include <ctype.h>
|
||||
#include <regex.h>
|
||||
|
||||
#include <clib/exception.h>
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -45,7 +45,6 @@
|
|||
#include <ctype.h>
|
||||
#include <regex.h>
|
||||
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <regex.h>
|
||||
|
||||
#include <clib/attribute.h>
|
||||
#include <clib/assert.h>
|
||||
#include <clib/list.h>
|
||||
#include <clib/list_iter.h>
|
||||
#include <clib/misc.h>
|
||||
|
|
Loading…
Reference in New Issue