Update of /cvsroot/digraphanalysis/digraphanalysis/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12849/src
Added Files:
Tag: JBREKER
node.c node.h
Removed Files:
Tag: JBREKER
pgpkey.c pgpkey.h
Log Message:
Do some renaming from keyringanalysis to digraphanalysis.
--- pgpkey.h DELETED ---
--- NEW FILE: node.h ---
/* $Id: node.h,v 1.1.2.1 2005/03/20 17:26:47 jbreker Exp $
*
* Copyright (C) 2005 Jeff Breker <jb...@sy...>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _PGPKEY_H_
#define _PGPKEY_H_
#include "list.h"
struct pgpkey_s
{
char *keyid;
float msd;
char *name;
list_t *signatures;
};
typedef struct pgpkey_s pgpkey_t;
int pgpkey_compare(void *, void *);
int pgpkey_compare_msd(void *, void *);
unsigned int pgpkey_distance(pgpkey_t *, pgpkey_t *);
void pgpkey_msd(pgpkey_t *, list_t *);
pgpkey_t *pgpkey_new(char *, char *);
#endif
--- pgpkey.c DELETED ---
--- NEW FILE: node.c ---
/* $Id: node.c,v 1.1.2.1 2005/03/20 17:26:47 jbreker Exp $
*
* Copyright (C) 2005 Jeff Breker <jb...@sy...>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "list.h"
#include "pgpkey.h"
int pgpkey_compare(void *key1, void *key2)
{
return strcmp(((pgpkey_t *) key1)->keyid, ((pgpkey_t *) key2)->keyid);
}
int pgpkey_compare_msd(void *key1, void *key2)
{
float tmp;
tmp = ((pgpkey_t *) key1)->msd - ((pgpkey_t *) key2)->msd;
if(tmp == (float) 0)
return strcmp(((pgpkey_t *) key1)->keyid, ((pgpkey_t *) key2)->keyid);
else
if(tmp > (float) 0)
return 1;
else
return (-1);
}
unsigned int pgpkey_distance(pgpkey_t *keyto, pgpkey_t *keyfrom)
{
unsigned int distance;
unsigned int last_known_size;
list_t *traversed_keys, *tmp_keys;
node_t *tmp_node;
traversed_keys = list_new(&pgpkey_compare);
last_known_size = 0;
distance = 1;
list_merge_list(traversed_keys, keyto->signatures);
while(traversed_keys->size != last_known_size)
{
if(list_find_object(traversed_keys, keyfrom) != NULL)
return distance;
last_known_size = traversed_keys->size;
++distance;
tmp_keys = traversed_keys;
tmp_node = tmp_keys->head;
traversed_keys = list_new(&pgpkey_compare);
while(tmp_node != NULL)
{
list_add_object(traversed_keys, tmp_node->object);
list_merge_list(traversed_keys, ((pgpkey_t *) tmp_node->object)->signatures);
tmp_node = tmp_node->next;
}
}
return 0;
}
void pgpkey_msd(pgpkey_t *key, list_t *keys)
{
unsigned int distance, i, num_keys;
node_t *iter;
distance = 0;
num_keys = 0;
iter = keys->head;
while(iter != NULL)
{
i = pgpkey_distance(key, (pgpkey_t *) iter->object);
if(i > 0)
{
distance += i;
num_keys++;
}
iter = iter->next;
}
key->msd = ((float) distance) / ((float) num_keys);
return;
}
pgpkey_t *pgpkey_new(char *keyid, char *name)
{
pgpkey_t *pgpkey;
pgpkey = (pgpkey_t *) malloc(sizeof(pgpkey_t));
pgpkey->keyid = (char *) malloc(17);
strncpy(pgpkey->keyid, keyid, 16);
*(pgpkey->keyid + 16) = '\0';
pgpkey->name = (char *) malloc(strlen(name) + 1);
strncpy(pgpkey->name, name, strlen(name));
*(pgpkey->name + strlen(name)) = '\0';
pgpkey->signatures = list_new(&pgpkey_compare);
pgpkey->msd = 0;
return pgpkey;
}
|