[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

libsl, libss, vs e2fs libss



Hello,

What is libsl, libss, and what is the relationship between
these libraries and the version that comes with e2fsprogs?

Either:

a) these libraries are completely unrelated and completely
incompatible. In that case, is Heimdal's libss required? What uses it?
Nothing as far as I can tell, everything links to libsl instead.

b) References to libsl should be renamed to use libss instead, as
libss is the newer/older version, which is also compatible with
the version used by e2fsprogs.

c) libraries should be compatible but aren't.

Which one?

Compiling ktutil based on the installed version (e2fsprogs) doesn't
seem to work:

ktutil.c:47: parse error before `cmds'
ktutil.c:47: warning: type defaults to `int' in declaration of `cmds'
ktutil.c:48: warning: braces around scalar initializer
ktutil.c:48: warning: (near initialization for `cmds[0]')
ktutil.c:48: warning: initialization makes integer from pointer without a cast
ktutil.c:48: warning: excess elements in scalar initializer
ktutil.c:48: warning: (near initialization for `cmds[0]')
ktutil.c:48: warning: excess elements in scalar initializer
ktutil.c:48: warning: (near initialization for `cmds[0]')
ktutil.c:49: warning: excess elements in scalar initializer
ktutil.c:49: warning: (near initialization for `cmds[0]')
ktutil.c:50: warning: braces around scalar initializer
ktutil.c:50: warning: (near initialization for `cmds[1]')
ktutil.c:50: warning: initialization makes integer from pointer without a cast
ktutil.c:50: warning: excess elements in scalar initializer
ktutil.c:50: warning: (near initialization for `cmds[1]')
ktutil.c:50: warning: excess elements in scalar initializer
ktutil.c:50: warning: (near initialization for `cmds[1]')
ktutil.c:51: warning: excess elements in scalar initializer
ktutil.c:51: warning: (near initialization for `cmds[1]')
ktutil.c:52: warning: braces around scalar initializer
ktutil.c:52: warning: (near initialization for `cmds[2]')
ktutil.c:52: warning: initialization makes integer from pointer without a cast
ktutil.c:52: warning: excess elements in scalar initializer
ktutil.c:52: warning: (near initialization for `cmds[2]')
ktutil.c:52: warning: excess elements in scalar initializer
ktutil.c:52: warning: (near initialization for `cmds[2]')
ktutil.c:53: warning: excess elements in scalar initializer
ktutil.c:53: warning: (near initialization for `cmds[2]')
ktutil.c:54: warning: braces around scalar initializer
ktutil.c:54: warning: (near initialization for `cmds[3]')
ktutil.c:54: warning: initialization makes integer from pointer without a cast
ktutil.c:54: warning: excess elements in scalar initializer
ktutil.c:54: warning: (near initialization for `cmds[3]')
ktutil.c:54: warning: excess elements in scalar initializer
ktutil.c:54: warning: (near initialization for `cmds[3]')
ktutil.c:55: warning: excess elements in scalar initializer
ktutil.c:55: warning: (near initialization for `cmds[3]')
ktutil.c:56: warning: braces around scalar initializer
ktutil.c:56: warning: (near initialization for `cmds[4]')
ktutil.c:56: warning: initialization makes integer from pointer without a cast
ktutil.c:56: warning: excess elements in scalar initializer
ktutil.c:56: warning: (near initialization for `cmds[4]')
ktutil.c:56: warning: excess elements in scalar initializer
ktutil.c:56: warning: (near initialization for `cmds[4]')
ktutil.c:57: warning: excess elements in scalar initializer
ktutil.c:57: warning: (near initialization for `cmds[4]')
ktutil.c:58: warning: braces around scalar initializer
ktutil.c:58: warning: (near initialization for `cmds[5]')
ktutil.c:58: warning: initialization makes integer from pointer without a cast
ktutil.c:58: warning: excess elements in scalar initializer
ktutil.c:58: warning: (near initialization for `cmds[5]')
ktutil.c:58: warning: excess elements in scalar initializer
ktutil.c:58: warning: (near initialization for `cmds[5]')
ktutil.c:59: warning: excess elements in scalar initializer
ktutil.c:59: warning: (near initialization for `cmds[5]')
ktutil.c:60: warning: braces around scalar initializer
ktutil.c:60: warning: (near initialization for `cmds[6]')
ktutil.c:60: warning: initialization makes integer from pointer without a cast
ktutil.c:60: warning: excess elements in scalar initializer
ktutil.c:60: warning: (near initialization for `cmds[6]')
ktutil.c:60: warning: excess elements in scalar initializer
ktutil.c:60: warning: (near initialization for `cmds[6]')
ktutil.c:61: warning: excess elements in scalar initializer
ktutil.c:61: warning: (near initialization for `cmds[6]')
ktutil.c:62: warning: braces around scalar initializer
ktutil.c:62: warning: (near initialization for `cmds[7]')
ktutil.c:62: warning: initialization makes integer from pointer without a cast
ktutil.c:62: warning: excess elements in scalar initializer
ktutil.c:62: warning: (near initialization for `cmds[7]')
ktutil.c:62: warning: excess elements in scalar initializer
ktutil.c:62: warning: (near initialization for `cmds[7]')
ktutil.c:63: warning: excess elements in scalar initializer
ktutil.c:63: warning: (near initialization for `cmds[7]')
ktutil.c:64: warning: braces around scalar initializer
ktutil.c:64: warning: (near initialization for `cmds[8]')
ktutil.c:64: warning: initialization makes integer from pointer without a cast
ktutil.c:65: warning: braces around scalar initializer
ktutil.c:65: warning: (near initialization for `cmds[9]')
ktutil.c:65: warning: initialization makes integer from pointer without a cast
ktutil.c:65: warning: excess elements in scalar initializer
ktutil.c:65: warning: (near initialization for `cmds[9]')
ktutil.c:65: warning: excess elements in scalar initializer
ktutil.c:65: warning: (near initialization for `cmds[9]')
ktutil.c:66: warning: excess elements in scalar initializer
ktutil.c:66: warning: (near initialization for `cmds[9]')
ktutil.c:67: warning: braces around scalar initializer
ktutil.c:67: warning: (near initialization for `cmds[10]')
ktutil.c:67: warning: initialization makes integer from pointer without a cast
ktutil.c:68: warning: braces around scalar initializer
ktutil.c:68: warning: (near initialization for `cmds[11]')
ktutil.c:68: warning: initialization makes integer from pointer without a cast
ktutil.c:68: warning: excess elements in scalar initializer
ktutil.c:68: warning: (near initialization for `cmds[11]')
ktutil.c:68: warning: excess elements in scalar initializer
ktutil.c:68: warning: (near initialization for `cmds[11]')
ktutil.c:68: warning: excess elements in scalar initializer
ktutil.c:68: warning: (near initialization for `cmds[11]')
ktutil.c:69: warning: braces around scalar initializer
ktutil.c:69: warning: (near initialization for `cmds[12]')
ktutil.c:69: warning: initialization makes integer from pointer without a cast
ktutil.c:69: warning: excess elements in scalar initializer
ktutil.c:69: warning: (near initialization for `cmds[12]')
ktutil.c:69: warning: excess elements in scalar initializer
ktutil.c:69: warning: (near initialization for `cmds[12]')
ktutil.c:69: warning: excess elements in scalar initializer
ktutil.c:69: warning: (near initialization for `cmds[12]')
ktutil.c:70: warning: data definition has no type or storage class
ktutil.c: In function `help':
ktutil.c:115: warning: implicit declaration of function `sl_help'
ktutil.c: In function `main':
ktutil.c:156: warning: implicit declaration of function `sl_command'
make: *** [ktutil.o] Error 1


Heimdals ss.h:
-------------------------------------------------------------------------------
#ifndef __ss_h__
#define __ss_h__

#include <sl.h>

typedef SL_cmd ss_request_table;

int ss_create_invocation (const char *, const char *, const char*, 
                          ss_request_table*, int*);

void ss_error (int, long, const char*, ...);
int ss_execute_command (int, char**);
int ss_execute_line (int, const char*);
int ss_list_requests (int argc, char**);
int ss_listen (int);
void ss_perror (int, long, const char*);
int ss_quit (int argc, char**);

#define SS_ET_COMMAND_NOT_FOUND (-1)

#endif /* __ss_h__ */


e2fsprog ss.h:
-------------------------------------------------------------------------------
#ifndef _ss_h
#define _ss_h __FILE__

#include <ss/ss_err.h>

#ifdef __STDC__
#define __SS_CONST const
#define __SS_PROTO (int, const char * const *, int, void *)
#else
#define __SS_CONST
#define __SS_PROTO ()
#endif

typedef __SS_CONST struct _ss_request_entry {
    __SS_CONST char * __SS_CONST *command_names; /* whatever */
    void (* __SS_CONST function) __SS_PROTO; /* foo */
    __SS_CONST char * __SS_CONST info_string;   /* NULL */
    int flags;                  /* 0 */
} ss_request_entry;

typedef __SS_CONST struct _ss_request_table {
    int version;
    ss_request_entry *requests;
} ss_request_table;

#define SS_RQT_TBL_V2   2

typedef struct _ss_rp_options { /* DEFAULT VALUES */
    int version;                /* SS_RP_V1 */
    void (*unknown) __SS_PROTO; /* call for unknown command */
    int allow_suspend;
    int catch_int;
} ss_rp_options;

#define SS_RP_V1 1

#define SS_OPT_DONT_LIST        0x0001
#define SS_OPT_DONT_SUMMARIZE   0x0002

void ss_help __SS_PROTO;
#if 0
char *ss_current_request();     /* This is actually a macro */
#endif
#ifdef __STDC__
char *ss_name(int sci_idx);
void ss_error (int, long, char const *, ...);
void ss_perror (int, long, char const *);
int ss_create_invocation(const char *, const char *, void *,
                         ss_request_table *, int *);
void ss_delete_invocation(int);
int ss_listen(int);
int ss_execute_line(int, char *);
void ss_add_request_table(int, ss_request_table *, int, int *);
void ss_delete_request_table(int, ss_request_table *, int *);
void ss_abort_subsystem(int sci_idx, int code);
void ss_quit(int argc, const char * const *argv, int sci_idx, void *infop);
void ss_self_identify(int argc, const char * const *argv, int sci_idx, void *infop);
void ss_subsystem_name(int argc, const char * const *argv,
                       int sci_idx, void *infop);
void ss_subsystem_version(int argc, const char * const *argv,
                          int sci_idx, void *infop);
void ss_unimplemented(int argc, const char * const *argv,
                      int sci_idx, void *infop);
#else
char *ss_name();
void ss_error ();
void ss_subsystem_version(int argc, const char * const *argv,
                          int sci_idx, void *infop);
void ss_unimplemented(int argc, const char * const *argv,
                      int sci_idx, void *infop);
#else
char *ss_name();
void ss_error ();
void ss_perror ();
int ss_create_invocation();
void ss_delete_invocation();
int ss_listen();
int ss_execute_line();
void ss_add_request_table();
void ss_delete_request_table();
void ss_abort_subsystem();
void ss_quit();
void ss_self_identify();
void ss_subsystem_name();
void ss_subsystem_version();
void ss_unimplemented();
#endif
extern ss_request_table ss_std_requests;
#endif /* _ss_h */

-- 
Brian May <bam@snoopy.apana.org.au>