From d9ca39827162f722593df6f0f426370bb9da2e84 Mon Sep 17 00:00:00 2001 From: Waldemar Kornewald Date: Sun, 25 Jan 2004 12:51:43 +0000 Subject: [PATCH] Added naming support. Simplified by using new helper methods in libppp.a. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6281 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/bin/pppconfig/Jamfile | 3 - src/apps/bin/pppconfig/pppconfig.cpp | 129 ++++----------------------- 2 files changed, 18 insertions(+), 114 deletions(-) diff --git a/src/apps/bin/pppconfig/Jamfile b/src/apps/bin/pppconfig/Jamfile index 1d2aec8e15..6b01fbcaee 100644 --- a/src/apps/bin/pppconfig/Jamfile +++ b/src/apps/bin/pppconfig/Jamfile @@ -5,12 +5,9 @@ UseHeaders [ FDirName $(OBOS_TOP) src add-ons kernel network ppp shared libppp h UseHeaders [ FDirName $(OBOS_TOP) src add-ons kernel network ppp shared libkernelppp headers ] ; BinCommand pppconfig : - driver_settings.c pppconfig.cpp ; -SEARCH on [ FGristFiles driver_settings.c ] = [ FDirName $(OBOS_TOP) src kernel libroot os ] ; - LinkSharedOSLibs pppconfig : be libppp.a ; # Installation -- in the test directory for the time being diff --git a/src/apps/bin/pppconfig/pppconfig.cpp b/src/apps/bin/pppconfig/pppconfig.cpp index ed1d510073..fd13c51cfc 100644 --- a/src/apps/bin/pppconfig/pppconfig.cpp +++ b/src/apps/bin/pppconfig/pppconfig.cpp @@ -6,8 +6,6 @@ //----------------------------------------------------------------------- #include -#include -#include #include #include @@ -15,42 +13,10 @@ #include -static const char sVersion[] = "0.1 pre-alpha"; +static const char sVersion[] = "0.12 pre-alpha"; static const char sPPPInterfaceModuleName[] = PPP_INTERFACE_MODULE_NAME; -// R5 only: strlcat is needed by driver_settings API -/** Concatenates the source string to the destination, writes - * as much as "maxLength" bytes to the dest string. - * Always null terminates the string as long as maxLength is - * larger than the dest string. - * Returns the length of the string that it tried to create - * to be able to easily detect string truncation. - */ -static -size_t -strlcat(char *dest, const char *source, size_t maxLength) -{ - size_t destLength = strnlen(dest, maxLength); - - // This returns the wrong size, but it's all we can do - if (maxLength == destLength) - return destLength + strlen(source); - - dest += destLength; - maxLength -= destLength; - - size_t i = 0; - for (; i < maxLength - 1 && source[i]; i++) { - dest[i] = source[i]; - } - - dest[i] = '\0'; - - return destLength + i + strlen(source + i); -} - - static status_t print_help() @@ -59,14 +25,13 @@ print_help() fprintf(stderr, "With pppconfig you can create and manage PPP connections.\n"); fprintf(stderr, "Usage:\n"); fprintf(stderr, "pppconfig show | -a\n"); - fprintf(stderr, "pppconfig init pppidf\n"); - fprintf(stderr, "pppconfig create pppidf\n"); - fprintf(stderr, "pppconfig connect interface\n"); - fprintf(stderr, "pppconfig disconnect interface\n"); - fprintf(stderr, "pppconfig delete interface\n"); - fprintf(stderr, "pppconfig details interface\n"); - fprintf(stderr, "\tpppidf is the interface description file\n"); - fprintf(stderr, "\tinterface is either a name or an id\n"); + fprintf(stderr, "pppconfig init \n"); + fprintf(stderr, "pppconfig create \n"); + fprintf(stderr, "pppconfig connect \n"); + fprintf(stderr, "pppconfig disconnect \n"); + fprintf(stderr, "pppconfig delete \n"); + fprintf(stderr, "pppconfig details \n"); + fprintf(stderr, "\t must be an interface description file\n"); return -1; } @@ -105,7 +70,7 @@ show(ppp_interface_filter filter = PPP_REGISTERED_INTERFACES) // type and name (if it has one) if(info.info.if_unit >= 0) { printf("Type: Visible\n"); - printf("\tName: ppp%ld\n", info.info.if_unit); + printf("\tInterface: ppp%ld\n", info.info.if_unit); } else printf("Type: Hidden\n"); @@ -150,7 +115,7 @@ show(ppp_interface_filter filter = PPP_REGISTERED_INTERFACES) static status_t -create(const char *pppidf, bool bringUp = true) +create(const char *name, bool bringUp = true) { PPPManager manager; if(manager.InitCheck() != B_OK) { @@ -158,26 +123,9 @@ create(const char *pppidf, bool bringUp = true) return -1; } - BString name = "pppidf/"; - name << pppidf; - - void *handle = load_driver_settings(name.String()); - if(!handle) { - fprintf(stderr, "Error: Could not load PPP interface description file!\n"); - return -1; - } - - const driver_settings *settings = get_driver_settings(handle); - if(!settings) { - fprintf(stderr, "Error: Could not decode PPP interface description file!\n"); - unload_driver_settings(handle); - return -1; - } - - PPPInterface interface(manager.CreateInterface(settings)); + PPPInterface interface(manager.CreateInterfaceWithName(name)); if(interface.InitCheck() != B_OK) { - fprintf(stderr, "Error: Could not create interface!\n"); - unload_driver_settings(handle); + fprintf(stderr, "Error: Could not create interface: %s!\n", name); return -1; } @@ -187,7 +135,7 @@ create(const char *pppidf, bool bringUp = true) interface.GetInterfaceInfo(&info); if(info.info.if_unit >= 0) - printf("Name: ppp%ld\n", info.info.if_unit); + printf("Interface: ppp%ld\n", info.info.if_unit); else printf("This interface is hidden! You can delete it by typing:\n" "pppconfig delete %ld\n", interface.ID()); @@ -197,8 +145,6 @@ create(const char *pppidf, bool bringUp = true) printf("Connecting in background...\n"); } - unload_driver_settings(handle); - return 0; } @@ -207,8 +153,6 @@ static status_t connect(const char *name) { - // Name may either be an interface name (ppp0, etc.) or an interface ID. - if(!name || strlen(name) == 0) return -1; @@ -218,15 +162,7 @@ connect(const char *name) return -1; } - PPPInterface interface; - - if(!strncmp(name, "ppp", 3) && strlen(name) > 3 && isdigit(name[3])) - interface = manager.InterfaceWithUnit(atoi(name + 3)); - else if(isdigit(name[0])) - interface = atoi(name); - else - return print_help(); - + PPPInterface interface(manager.InterfaceWithName(name)); if(interface.InitCheck() != B_OK) { fprintf(stderr, "Error: Could not find interface: %s!\n", name); return -1; @@ -247,8 +183,6 @@ static status_t disconnect(const char *name) { - // Name may either be an interface name (ppp0, etc.) or an interface ID. - if(!name || strlen(name) == 0) return -1; @@ -258,15 +192,7 @@ disconnect(const char *name) return -1; } - PPPInterface interface; - - if(!strncmp(name, "ppp", 3) && strlen(name) > 3 && isdigit(name[3])) - interface = manager.InterfaceWithUnit(atoi(name + 3)); - else if(isdigit(name[0])) - interface = atoi(name); - else - return print_help(); - + PPPInterface interface(manager.InterfaceWithName(name)); if(interface.InitCheck() != B_OK) { fprintf(stderr, "Error: Could not find interface: %s!\n", name); return -1; @@ -285,8 +211,6 @@ static status_t delete_interface(const char *name) { - // Name may either be an interface name (ppp0, etc.) or an interface ID. - if(!name || strlen(name) == 0) return -1; @@ -296,16 +220,7 @@ delete_interface(const char *name) return -1; } - ppp_interface_id interface; - - if(!strncmp(name, "ppp", 3) && strlen(name) > 3 && isdigit(name[3])) - interface = manager.InterfaceWithUnit(atoi(name + 3)); - else if(isdigit(name[0])) - interface = atoi(name); - else - return print_help(); - - if(!manager.DeleteInterface(interface)) { + if(!manager.DeleteInterface(manager.InterfaceWithName(name))) { fprintf(stderr, "Error: Could not delete interface!\n"); return -1; } @@ -329,15 +244,7 @@ show_details(const char *name) return -1; } - PPPInterface interface; - - if(!strncmp(name, "ppp", 3) && strlen(name) > 3 && isdigit(name[3])) - interface = manager.InterfaceWithUnit(atoi(name + 3)); - else if(isdigit(name[0])) - interface = atoi(name); - else - return print_help(); - + PPPInterface interface(manager.InterfaceWithName(name)); if(interface.InitCheck() != B_OK) { fprintf(stderr, "Error: Could not find interface: %s!\n", name); return -1; @@ -349,7 +256,7 @@ show_details(const char *name) // type and name (if it has one) if(info.info.if_unit >= 0) { printf("Type: Visible\n"); - printf("Name: ppp%ld\n", info.info.if_unit); + printf("Interface: ppp%ld\n", info.info.if_unit); } else printf("Type: Hidden\n");