source: tags/arb_5.1/ARBDB/adlink.c

Last change on this file was 6100, checked in by westram, 15 years ago
  • fix warning "format not a string literal and no format arguments"
    • GB_export_error → GB_export_error/GB_export_errorf
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.2 KB
Line 
1#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4#include "adlocal.h"
5/* #include <arbdb.h> */
6
7
8GBDATA *GB_follow_link(GBDATA *gb_link){
9    char *s;
10    const char *link;
11    char c;
12    GB_MAIN_TYPE *Main = GB_MAIN(gb_link);
13    GBDATA *result;
14    GB_Link_Follower lf;
15    link = (char *)GB_read_link_pntr(gb_link);
16    if (!link) return 0;
17    s = strchr(link,':');
18    if (!s){
19        GB_export_errorf("Your link '%s' does not contain a ':' character",link);
20        return 0;
21    }
22    c = *s;
23    *s = 0;
24    lf = (GB_Link_Follower)GBS_read_hash(Main->resolve_link_hash,link);
25    *s = c;
26    if (!lf){
27        GB_export_errorf("Your link tag '%s' is unknown to the system",link);
28        return 0;
29    }
30    result = lf(GB_get_root(gb_link),gb_link,s+1);
31    return result;
32}
33
34
35GB_ERROR GB_install_link_follower(GBDATA *gb_main, const char *link_type, GB_Link_Follower link_follower){
36    GB_ERROR error =0;
37    GB_MAIN_TYPE *Main = GB_MAIN(gb_main);
38    if (!Main->resolve_link_hash){
39        Main->resolve_link_hash = GBS_create_hash(256, GB_MIND_CASE);
40    }
41    error = GB_check_link_name(link_type);
42    if (error) return error;
43    GBS_write_hash(Main->resolve_link_hash, link_type,(long)link_follower);
44    return 0;
45}
46
47
Note: See TracBrowser for help on using the repository browser.