Changeset 25485

Show
Ignore:
Timestamp:
05/13/08 19:41:09 (6 months ago)
Author:
bonefish
Message:

* Made libnetapi a separate library again.
* The built-in services are no longer added as resource to libnetwork,

but as attribute. This removes the libbe dependency.

Location:
haiku/trunk
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • haiku/trunk/build/jam/HaikuImage

    r25367 r25485  
    6565; 
    6666BEOS_SYSTEM_LIBS = libbe.so $(HAIKU_LIBSTDC++) libmedia.so libtracker.so 
    67         libtranslation.so libnetwork.so libdebug.so libbsd.so libmail.so 
    68         libtextencoding.so libz.so libfreetype.so libpng.so libmidi.so libmidi2.so 
    69         libdevice.so libgame.so libscreensaver.so <revisioned>libroot.so 
     67        libtranslation.so libnetapi.so libnetwork.so libdebug.so libbsd.so 
     68        libmail.so libtextencoding.so libz.so libfreetype.so libpng.so libmidi.so 
     69        libmidi2.so libdevice.so libgame.so libscreensaver.so <revisioned>libroot.so 
    7070        $(X86_ONLY)libGL.so libfluidsynth.so liblpsolve55.so liblinprog.so libalm.so 
    7171        libilmimf.so 
     
    191191# libnetwork.so replaces quite a few libraries 
    192192BEOS_SYSTEM_LIBS_LIBNETWORK_ALIASES 
    193         = libsocket.so libbind.so libnet.so libnetapi.so libbnetapi.so ; 
     193        = libsocket.so libbind.so libnet.so ; 
    194194 
    195195local lib ; 
  • haiku/trunk/src/kits/network/Jamfile

    r24908 r25485  
    33UsePrivateHeaders libroot net shared ; 
    44UsePrivateKernelHeaders ; 
    5  
    6 local services = [ FGristFiles services ] ; 
    7 SEARCH on $(services) = [ FDirName $(SUBDIR) dns defaults ] ; 
    8 AddFileDataResource libnetwork.so : CSTR:201:services : $(services) ; 
    95 
    106SharedLibrary libnetwork.so : 
     
    1410        r5_compatibility.cpp 
    1511        : 
    16         <libnetwork_netapi>netapi.o 
    17  
    1812        <libnetwork_dns>dns_dst.o 
    1913        <libnetwork_dns>dns_inet.o 
     
    2317        <libnetwork_dns>dns_resolv.o 
    2418        <libnetwork_dns>dns_private.o 
     19; 
    2520 
    26         be 
    27 ; 
     21local services = [ FGristFiles services ] ; 
     22SEARCH on $(services) = [ FDirName $(SUBDIR) dns defaults ] ; 
     23AddFileDataAttribute libnetwork.so : services : string : $(services) ; 
    2824 
    2925SubInclude HAIKU_TOP src kits network dns ; 
  • haiku/trunk/src/kits/network/dns/irs/lcl_sv.cpp

    r19644 r25485  
    6464#include "port_after.h" 
    6565 
    66 #include <File.h> 
    67 #include <Resources.h> 
    68 #include <TypeConstants.h> 
    69  
    7066#include <sys/types.h> 
    7167#include <sys/socket.h> 
     
    8177#include <stdlib.h> 
    8278 
     79#include <fs_attr.h> 
     80#include <image.h> 
     81#include <TypeConstants.h> 
     82 
    8383 
    8484#define IRS_SV_MAXALIASES       35 
     
    8787        FILE*   file; 
    8888        char    line[BUFSIZ+1]; 
    89         char*   resource_file; 
    90         char*   resource_end; 
    91         char*   resource_line; 
    9289        struct servent servent; 
    9390        char*   aliases[IRS_SV_MAXALIASES]; 
     
    116113get_next_line(struct service_private* service) 
    117114{ 
    118         if (service->file != NULL) 
    119                 return fgets(service->line, BUFSIZ, service->file); 
    120         if (service->resource_file == NULL) 
    121                 return NULL; 
    122  
    123         char* line = service->resource_line; 
    124         while (line < service->resource_end 
    125                 && line[0] 
    126                 && line[0] != '\n') 
    127                 line++; 
    128  
    129         if (service->resource_line >= service->resource_end 
    130                 || service->resource_line == line) 
    131                 return NULL; 
    132  
    133         strlcpy(service->line, service->resource_line, 
    134                 min_c(line + 1 - service->resource_line, BUFSIZ)); 
    135         service->resource_line = line + 1; 
    136  
    137         return service->line; 
     115        if (service->file == NULL) 
     116                return NULL; 
     117        return fgets(service->line, BUFSIZ, service->file); 
    138118} 
    139119 
     
    150130                fclose(service->file); 
    151131 
    152         free(service->resource_file); 
    153132        memput(service, sizeof *service); 
    154133        memput(sv, sizeof *sv); 
     
    169148 
    170149        if ((service->file = fopen(_PATH_SERVICES, "r")) != NULL) { 
    171                 if (fcntl(fileno(service->file), F_SETFD, 1) == 0) 
     150                if (fcntl(fileno(service->file), F_SETFD, FD_CLOEXEC) == 0) 
    172151                        return; 
    173152 
     
    176155        } 
    177156 
    178         // opening the standard file has file has failed, use resources 
    179  
    180         if (service->resource_file != NULL) { 
    181                 service->resource_line = service->resource_file; 
    182                 return; 
    183         } 
    184  
     157        // opening the standard file has file has failed, use the attribute 
     158 
     159        // find our library image 
     160        addr_t addressInImage = (addr_t)&sv_rewind; 
     161        const char* path = NULL; 
    185162        image_info info; 
    186         if (find_own_image(&info) < B_OK) 
    187                 return; 
    188  
    189         BFile file; 
    190         if (file.SetTo(info.name, B_READ_ONLY) < B_OK) 
    191                 return; 
    192  
    193         BResources resources(&file); 
    194         if (resources.InitCheck() < B_OK) 
    195                 return; 
    196  
    197         size_t size; 
    198         const void* data = resources.LoadResource(B_STRING_TYPE, "services", &size); 
    199         if (data == NULL) 
    200                 return; 
    201  
    202         service->resource_file = (char *)malloc(size); 
    203         if (service->resource_file == NULL) 
    204                 return; 
    205  
    206         memcpy(service->resource_file, data, size); 
    207         service->resource_line = service->resource_file; 
    208         service->resource_end = service->resource_file + size; 
     163        int32 cookie; 
     164 
     165        while (get_next_image_info(B_CURRENT_TEAM, &cookie, &info) == B_OK) { 
     166                if (addressInImage >= (addr_t)info.text 
     167                        && addressInImage < (addr_t)info.text + info.text_size) { 
     168                        path = info.name; 
     169                        break; 
     170                } 
     171        } 
     172 
     173        if (path == NULL) 
     174                return; 
     175 
     176        // open the library 
     177        int libraryFD = open(path, O_RDONLY); 
     178        if (libraryFD < 0) 
     179                return; 
     180 
     181        // open the attribute 
     182        int attrFD = fs_open_attr(libraryFD, "services", B_STRING_TYPE, O_RDONLY); 
     183        close(libraryFD); 
     184        if (attrFD < 0) 
     185                return; 
     186 
     187        // attach it to a FILE 
     188        service->file = fdopen(attrFD, "r"); 
     189        if (service->file == NULL) { 
     190                close(attrFD); 
     191                return; 
     192        } 
     193 
     194        if (fcntl(fileno(service->file), F_SETFD, FD_CLOEXEC) == 0) 
     195                return; 
     196 
     197        fclose(service->file); 
     198        service->file = NULL; 
    209199} 
    210200 
     
    216206        char *p, *cp, **q; 
    217207 
    218         if (service->file == NULL && service->resource_file == NULL) 
     208        if (service->file == NULL) 
    219209                sv_rewind(sv); 
    220210 
    221         if (service->file == NULL && service->resource_file == NULL) 
     211        if (service->file == NULL) 
    222212                return NULL; 
    223213 
  • haiku/trunk/src/kits/network/libnetapi/Jamfile

    r21912 r25485  
    4444                boot home Desktop haiku-networkingkit lib ; 
    4545} else { 
    46         MergeObject <libnetwork_netapi>netapi.o : 
     46        SharedLibrary libnetapi.so : 
    4747                $(netapi_sources) 
     48                : be $(TARGET_NETWORK_LIBS) 
    4849        ; 
    4950}