Remove unused Nodelist code

Nodelist is currently unused, and there are not current plans to use it
in the near future, so remove it so it doesn't cause maintenance
headaches.

Change-Id: Ibbbafab62b2353297b6f0efb5939038ab225d4c4
Signed-off-by: Daniel Gryniewicz <dang@redhat.com>
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 5d58f34..1428435 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -839,8 +839,6 @@
   set(GANESHA_CORE ${GANESHA_CORE} gshdbus)
 endif(USE_DBUS)
 
-set(GANESHA_CORE ${GANESHA_CORE} NodeList)
-
 if(USE_9P_RDMA)
   find_package(PkgConfig)
   IF(MOOSHIKA_PREFIX)
@@ -905,7 +903,6 @@
 add_subdirectory(test)
 add_subdirectory(avl)
 add_subdirectory(hashtable)
-add_subdirectory(NodeList)
 if(USE_CACHE_INODE)
   add_subdirectory(cache_inode)
 endif(USE_CACHE_INODE)
diff --git a/src/NodeList/CMakeLists.txt b/src/NodeList/CMakeLists.txt
deleted file mode 100644
index fbc784f..0000000
--- a/src/NodeList/CMakeLists.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-
-########### next target ###############
-
-SET(NodeList_STAT_SRCS
-   nodelist_internals.h
-   nodelist_common.c
-   nodelist.c
-   nodelist_range.c
-   nodelist_map.c
-)
-
-add_library(NodeList STATIC ${NodeList_STAT_SRCS})
-
-
-########### install files ###############
diff --git a/src/NodeList/nodelist.c b/src/NodeList/nodelist.c
deleted file mode 100644
index 684fc95..0000000
--- a/src/NodeList/nodelist.c
+++ /dev/null
@@ -1,600 +0,0 @@
-#include "config.h"
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <string.h>
-
-#include <search.h>
-
-#include <limits.h>
-#include <ctype.h>
-
-#include "abstract_mem.h"
-#include "nodelist.h"
-#include "nodelist_internals.h"
-
-#define MAX_LONG_INT_STRING_SIZE      128
-
-/*!
- * \ingroup NODELIST_COMMON
- * \brief Add ids list to nodes list
- *
- * \param list the input nodes list
- * \param idlist the ids list to add (string representation)
- *
- * \retval  n padding length if operation successfully done
- * \retval -1 error during the operation
-*/
-static inline int nl_nl_add_ids(nl_nl_t *nodelist, char *idlist)
-{
-	return nl_rangelist_add_list(&nodelist->rangelist, idlist);
-}
-
-void nl_common_split_nl_entry(char *list, char **p_prefix,
-			      char **p_idlist, char **p_suffix)
-{
-	char *list_end;
-
-	char *prefix = NULL;
-	char *prefix_begin;
-	char *prefix_end;
-	char *suffix = NULL;
-	char *suffix_begin;
-
-	char *idlist = NULL;
-	char *idlist_begin;
-	char *idlist_end;
-
-	/* create working copy of input list */
-	list_end = list + (strlen(list));
-	prefix_begin = list;
-	prefix_end = list;
-
-	/* get prefix */
-	while (*prefix_end != '[' && !isdigit(*prefix_end)
-	       && prefix_end < list_end)
-		prefix_end++;
-	if (prefix_end != prefix_begin && prefix_end <= list_end) {
-		prefix = gsh_malloc(prefix_end - prefix_begin + 1);
-		memcpy(prefix, list, prefix_end - prefix_begin);
-		prefix[prefix_end - prefix_begin] = '\0';
-	}
-
-	/* get idlist */
-	/* search for idlist begin */
-	if (prefix != NULL)
-		idlist_begin = prefix_end;
-	else
-		idlist_begin = list;
-	while (*idlist_begin == '[' && idlist_begin < list_end)
-		idlist_begin++;
-	idlist_end = idlist_begin;
-	if (idlist_begin < list_end) {
-		/* search for idlist end */
-		while ((isdigit(*idlist_end) || *idlist_end == ','
-			|| *idlist_end == '-')
-		       && idlist_end < list_end) {
-			idlist_end++;
-		}
-		/* remove trailing dash, like in node%d-eth */
-		if (*(idlist_end - 1) == '-') {
-			idlist_end--;
-			while (*(idlist_end - 1) == '-')
-				idlist_end--;
-		}
-		/* dump idlist */
-		idlist = gsh_malloc(idlist_end - idlist_begin + 1);
-		memcpy(idlist, idlist_begin, idlist_end - idlist_begin);
-		idlist[idlist_end - idlist_begin] = '\0';
-	}
-
-	/* get suffix */
-	/* search for suffix begin */
-	suffix_begin = idlist_end;
-	while (*suffix_begin == ']' && suffix_begin < list_end)
-		suffix_begin++;
-	/* dump suffix */
-	if (suffix_begin != list_end) {
-		suffix = gsh_malloc(list_end - suffix_begin + 1);
-		memcpy(suffix, suffix_begin, list_end - suffix_begin);
-		suffix[list_end - suffix_begin] = '\0';
-	}
-
-	*p_prefix = prefix;
-	*p_idlist = idlist;
-	*p_suffix = suffix;
-}
-
-void nl_nl_init(nl_nl_t *nodelist, char **lists, int lists_nb)
-{
-	int i;
-	char *list;
-
-	int operation = 1;	/* 1=add 2=remove */
-
-	nodelist->next = NULL;
-	nl_rangelist_init(&(nodelist->rangelist));
-	nl_nodepattern_init(&(nodelist->pattern));
-
-	for (i = 0; i < lists_nb; i++) {
-		list = lists[i];
-
-		/* set operation if required */
-		if (strlen(list) == 1) {
-			if (*list == '-') {
-				operation = 2;
-				continue;
-			}
-			if (*list == '+') {
-				operation = 1;
-				continue;
-			} else
-				operation = 1;
-		}
-
-		/* do action */
-		switch (operation) {
-
-		case 1:
-			nl_nl_add_nodes(nodelist, list);
-			break;
-
-		case 2:
-			nl_nl_remove_nodes(nodelist, list);
-			break;
-
-		}
-
-		/* setting default operation */
-		operation = 1;
-	}
-}
-
-void nl_nl_free_contents(nl_nl_t *nodelist)
-{
-	if (nodelist->next != NULL)
-		nl_nl_free_contents(nodelist->next);
-	nodelist->next = NULL;
-	nl_nodepattern_free_contents(&(nodelist->pattern));
-	nl_rangelist_free_contents(&(nodelist->rangelist));
-}
-
-/*!
- * \ingroup NODELIST_COMMON
- * \brief Copy a node list into an other one
- *
- * \param dest_list the input/output nodes list
- * \param src_list the second list to copy into the first one
- *
-*/
-void nl_nl_copy(nl_nl_t *dest_list, nl_nl_t *src_list)
-{
-	nl_nl_t **pwldest;
-	nl_nl_t **pwlsrc;
-
-	nl_nl_free_contents(dest_list);
-
-	pwldest = &dest_list;
-	nl_nl_init(*pwldest, NULL, 0);
-
-	if (src_list->pattern.prefix == NULL &&
-	    src_list->pattern.suffix == NULL) {
-		/* second list is empty... so initialization will
-		 * be sufficient
-		 */
-		return;
-	}
-
-	pwlsrc = &src_list;
-	while (*pwlsrc != NULL) {
-		nl_nodepattern_init_by_copy(
-		    &(*pwldest)->pattern, &(*pwlsrc)->pattern);
-
-		if ((*pwlsrc)->pattern.basic != 1) {
-			/* add ids */
-			nl_rangelist_init_by_copy(&(*pwldest)->rangelist,
-						  &(*pwlsrc)->rangelist);
-		}
-
-		pwldest = &((*pwldest)->next);
-
-		pwlsrc = &((*pwlsrc)->next);
-	}
-}
-
-/*!
- * \ingroup NODELIST_COMMON
- * \brief Check if a node list is empty
- *
- * \param nodelist the input node list
- *
- * \retval  1 if empty
- * \retval  0 if not empty
-*/
-int nl_nl_is_empty(nl_nl_t *nodelist)
-{
-
-	if (nodelist->pattern.prefix == NULL
-	    && nodelist->pattern.suffix == NULL) {
-		return 1;
-	} else {
-		return 0;
-	}
-
-}
-
-/*!
- * \ingroup NODELIST_COMMON
- * \brief Add a node list to an other one
- *
- * \param nodelist the input/output nodes list
- * \param nodelist the second list to add to the first one
- *
-*/
-void nl_nl_add_nodelist(nl_nl_t *nodelist, nl_nl_t *second_list)
-{
-	nl_nl_t **pwldest;
-	nl_nl_t **pwlsrc;
-
-	/* If second list is emty, nothing to add */
-	if (nl_nl_is_empty(second_list))
-		return;
-
-	/* If nodelist is empty, duplicate second_list! */
-	if (nl_nl_is_empty(nodelist)) {
-		nl_nl_copy(nodelist, second_list);
-		return;
-	}
-
-	/* we have to add each second list sublist to the first one */
-	pwlsrc = &second_list;
-	while (*pwlsrc != NULL) {
-
-		/* try to add src sublist to an existing dest list sublist */
-		pwldest = &nodelist;
-		while (*pwldest != NULL) {
-
-			/* if patterns equal, try to add ids and break */
-			if (nl_nodepattern_equals(&(*pwldest)->pattern,
-						  &(*pwlsrc)->pattern)) {
-				if ((*pwldest)->pattern.padding <
-				    (*pwlsrc)->pattern.padding) {
-					nl_nodepattern_set_padding(
-					    &(*pwldest)->pattern,
-					    (*pwlsrc)->pattern.padding);
-				}
-
-				nl_rangelist_add_rangelist(
-					&(*pwldest)->rangelist,
-					&(*pwlsrc)->rangelist);
-				break;
-			}
-
-			/* increment dst sublist */
-			pwldest = &(*pwldest)->next;
-		}
-
-		/* add a new sublist to dest list if no
-		 * equivalent pattern list was found
-		 */
-		if (*pwldest == NULL) {
-			*pwldest = gsh_malloc(sizeof(nl_nl_t));
-			nl_nl_init(*pwldest, NULL, 0);
-
-			nl_nodepattern_init_by_copy(&((*pwldest)->pattern),
-						    &((*pwlsrc)->pattern));
-
-			nl_rangelist_add_rangelist(&(*pwldest)->rangelist,
-						   &(*pwlsrc)->rangelist);
-		}
-
-		pwlsrc = &((*pwlsrc)->next);	/* increment src sublist */
-	}
-}
-
-/*!
- * \ingroup NODELIST_COMMON
- * \brief Remove a node list from an other one
- *
- * \param nodelist the input/output nodes list
- * \param nodelist the second list to remove from the first one
- *
-*/
-void nl_nl_remove_nodelist(nl_nl_t *nodelist, nl_nl_t *second_list)
-{
-	int add_flag;
-
-	nl_nl_t worklist;
-	nl_nl_t **pwldest;
-	nl_nl_t **pwlsrc;
-
-	/* If second list is emty, nothing to remove */
-	if (nl_nl_is_empty(second_list))
-		return;
-
-	/* If nodelist is empty, nothing to remove */
-	if (nl_nl_is_empty(nodelist))
-		return;
-
-	/* we have to remove each second list sublist from the first one */
-
-	/* initialize work list by copying the first nodelist */
-	nl_nl_init(&worklist, NULL, 0);
-
-	pwldest = &nodelist;
-	while (*pwldest != NULL) {
-
-		add_flag = 1;
-		pwlsrc = &second_list;
-		while (*pwlsrc != NULL) {
-
-			/* if patterns equal, try to remove ids and break */
-			if (nl_nodepattern_equals(&(*pwldest)->pattern,
-						  &(*pwlsrc)->pattern)) {
-				add_flag = 0;
-				if ((*pwldest)->pattern.basic == 0) {
-					nl_rangelist_remove_rangelist(
-					    &(*pwldest)->rangelist,
-					    &(*pwlsrc)->rangelist);
-				}
-				break;
-			}
-
-			pwlsrc = &((*pwlsrc)->next);	/* incr src sublist */
-		}
-
-		if (add_flag == 1)
-			nl_nl_add_nodelist(&worklist, *pwldest);
-
-		pwldest = &((*pwldest)->next);	/* incr dest sublist */
-	}
-
-	nl_nl_copy(nodelist, &worklist);
-
-	nl_nl_free_contents(&worklist);
-}
-
-void nl_nl_add_nodes(nl_nl_t *nodelist, char *list)
-{
-	char *prefix;
-	char *idlist;
-	char *suffix;
-
-	int token_nb, i;
-	char *token;
-
-	nl_nl_t wlist;
-
-	if (nl_common_string_get_tokens_quantity(list, ",", &token_nb) == 0) {
-
-		for (i = 1; i <= token_nb; i++) {
-			token = NULL;
-			if (nl_common_string_get_token(list, ",", i, &token)
-			    == 0) {
-
-				nl_common_split_nl_entry(token, &prefix,
-							 &idlist, &suffix);
-				nl_nl_init(&wlist, NULL, 0);
-
-				nl_nodepattern_set_prefix
-					(&wlist.pattern, prefix);
-				nl_nodepattern_set_suffix
-					(&wlist.pattern, suffix);
-				if (idlist != NULL) {
-					int padding;
-
-					wlist.pattern.basic = 0;
-					padding = nl_nl_add_ids(
-						&wlist, idlist);
-					nl_nodepattern_set_padding(
-						&wlist.pattern, padding);
-				}
-
-				nl_nl_add_nodelist(nodelist, &wlist);
-
-				nl_nl_free_contents(&wlist);
-
-				xfree(prefix);
-				xfree(suffix);
-				xfree(idlist);
-
-				gsh_free(token);
-			}
-		}
-	}
-}
-
-void nl_nl_remove_nodes(nl_nl_t *nodelist, char *list)
-{
-	char *prefix;
-	char *idlist;
-	char *suffix;
-
-	int token_nb, i;
-	char *token;
-
-	nl_nl_t wlist;
-
-	if (nl_common_string_get_tokens_quantity(list, ",", &token_nb) == 0) {
-		for (i = 1; i <= token_nb; i++) {
-			token = NULL;
-
-			if (nl_common_string_get_token(list, ",", i, &token)
-			    == 0) {
-
-				nl_common_split_nl_entry(token, &prefix,
-							 &idlist, &suffix);
-				nl_nl_init(&wlist, NULL, 0);
-
-				nl_nodepattern_set_prefix(
-					&wlist.pattern, prefix);
-				nl_nodepattern_set_suffix(
-					&wlist.pattern, suffix);
-				if (idlist != NULL) {
-					int padding;
-
-					wlist.pattern.basic = 0;
-					padding = nl_nl_add_ids(
-						&wlist, idlist);
-					nl_nodepattern_set_padding(
-					    &wlist.pattern, padding);
-				}
-
-				nl_nl_remove_nodelist(nodelist, &wlist);
-
-				nl_nl_free_contents(&wlist);
-
-				xfree(prefix);
-				xfree(suffix);
-				xfree(idlist);
-
-				gsh_free(token);
-			}
-		}
-	}
-}
-
-long int nl_nl_non_recursive_nodes_quantity(nl_nl_t *nodelist)
-{
-
-	long int quantity;
-	long int i;
-
-	quantity = 0;
-	if (nodelist->pattern.basic == 1) {
-		quantity++;
-	} else {
-		for (i = 0; i < nodelist->rangelist.ranges_nb; i++) {
-			quantity +=
-			    (nodelist->rangelist.array[i].to -
-			     nodelist->rangelist.array[i].from + 1);
-		}
-	}
-
-	return quantity;
-}
-
-long int nl_nl_nodes_quantity(nl_nl_t *nodelist)
-{
-
-	long int quantity;
-
-	nl_nl_t *nlist;
-
-	quantity = 0;
-	nlist = nodelist;
-	while (nlist != NULL) {
-		quantity +=
-		    nl_nl_non_recursive_nodes_quantity(nlist);
-		nlist = nlist->next;
-	}
-
-	return quantity;
-}
-
-
-/*! \addtogroup NODELIST_NODEPATTERN
- *  @{
- */
-/*!
- * \brief Initialize a bridge node pattern structure
- *
- * by default, padding is set to 0, prefix and suffix to NULL
- * and the node pattern is basic
- *
- * \param np pointer on a bridge node pattern structure to initialize
- *
-*/
-void nl_nodepattern_init(nl_nodepattern_t *np)
-{
-	np->padding = 0;
-	np->prefix = NULL;
-	np->suffix = NULL;
-	np->basic = 1;
-}
-
-/*!
- * \brief Initialize a bridge node pattern structure by dumping an other one
- *
- * by default, padding is set to 0, prefix and suffix to NULL
- * and the node pattern is basic
- *
- * \param np pointer on a bridge node pattern structure to initialize
- * \param npin pointer on a bridge node pattern to copy
- *
-*/
-void nl_nodepattern_init_by_copy(nl_nodepattern_t *np, nl_nodepattern_t *npin)
-{
-	np->padding = npin->padding;
-	np->basic = npin->basic;
-	np->prefix = NULL;
-	np->suffix = NULL;
-	if (npin->prefix != NULL)
-		np->prefix = gsh_strdup(npin->prefix);
-
-	if (npin->suffix != NULL)
-		np->suffix = gsh_strdup(npin->suffix);
-}
-
-/*!
- * \brief Clean a bridge node pattern structure
- *
- * \param np pointer on a bridge node pattern structure to free
- *
-*/
-void nl_nodepattern_free_contents(nl_nodepattern_t *np)
-{
-	np->padding = 0;
-	xfree(np->prefix);
-	xfree(np->suffix);
-	np->basic = 1;
-}
-
-/*!
- * \brief Test if two bridge node patterns are identical (paddinf is not tested)
- *
- * \param np1 pointer on the first bridge node pattern structure
- * \param np2 pointer on the first bridge node pattern structure
- *
- * \retval  1 if the two pattern are identical
- * \retval  0 if they are not identical
- * \retval -1 operation failed
-*/
-int nl_nodepattern_equals(nl_nodepattern_t *np1,
-				nl_nodepattern_t *np2)
-{
-	int fstatus = -1;
-	if (np1 != NULL && np2 != NULL) {
-		fstatus = 0;
-		/* same basic flag ? */
-		if (np1->basic != np2->basic)
-			return fstatus;
-		/* same prefix or lack of prefix ? */
-		if (np1->prefix != NULL && np2->prefix != NULL) {
-			if (strcmp(np1->prefix, np2->prefix) != 0)
-				return fstatus;
-		} else if (np1->prefix == NULL && np2->prefix != NULL) {
-			return fstatus;
-		} else if (np1->prefix != NULL && np2->prefix == NULL) {
-			return fstatus;
-		}
-		/* same suffix or lack of suffix ? */
-		if (np1->suffix != NULL && np2->suffix != NULL) {
-			if (strcmp(np1->suffix, np2->suffix) != 0)
-				return fstatus;
-		} else if (np1->suffix == NULL && np2->suffix != NULL) {
-			return fstatus;
-		} else if (np1->suffix != NULL && np2->suffix == NULL) {
-			return fstatus;
-		}
-		/* ok, they are the same pattern */
-		fstatus = 1;
-	}
-	return fstatus;
-}
-
-/*!
- * @}
-*/
diff --git a/src/NodeList/nodelist_common.c b/src/NodeList/nodelist_common.c
deleted file mode 100644
index 3d51542..0000000
--- a/src/NodeList/nodelist_common.c
+++ /dev/null
@@ -1,159 +0,0 @@
-#include "config.h"
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <string.h>
-#include "abstract_mem.h"
-#include "nodelist.h"
-
-/* Forward declaration */
-int _nl_common_string_get_token_common(char *string,
-				       char *separators_list,
-				       int *p_token_nb, int token_id,
-				       char **p_token);
-
-int nl_common_string_get_token(char *string, char *separators_list,
-				     int token_id, char **p_token)
-{
-	int fstatus = -1;
-	int token_nb = 0;
-	fstatus =
-	    _nl_common_string_get_token_common(string, separators_list,
-						     &token_nb, token_id,
-						     p_token);
-	if (*p_token != NULL)
-		fstatus = 0;
-	else
-		fstatus = -1;
-	return fstatus;
-}
-
-int nl_common_string_get_tokens_quantity(char *string,
-					       char *separators_list,
-					       int *p_token_nb)
-{
-	int fstatus = -1;
-	fstatus =
-	    _nl_common_string_get_token_common(string, separators_list,
-						     p_token_nb, 0, NULL);
-	return fstatus;
-}
-
-static char *get_next_token(char *workingstr, char separator)
-{
-	char *current = workingstr;
-	int in_bracket = 0;
-
-	while (*current) {
-		if (!in_bracket && (*current == '['))
-			in_bracket = 1;
-		else if (in_bracket && (*current == ']'))
-			in_bracket = 0;
-		else if (!in_bracket && (*current == separator))
-			return current;
-
-		current++;
-	}
-	return NULL;
-
-}				/* get_next_token */
-
-int _nl_common_string_get_token_common(char *string,
-					     char *separators_list,
-					     int *p_token_nb, int token_id,
-					     char **p_token)
-{
-	int fstatus = -1;
-
-	int i;
-
-	size_t string_length;
-	size_t separators_list_length;
-
-	char *working_string;
-
-	char *current_pointer;
-	char *best_pointer;
-	char *old_pointer;
-
-	size_t copy_length;
-
-	int local_token_nb;
-	int end_of_loop;
-
-	/*
-	   First we check that pointers are not NULL
-	 */
-	if (string != NULL && separators_list != NULL) {
-		string_length = strlen(string);
-		separators_list_length = strlen(separators_list);
-		/*
-		   Then, that their lengths are not null
-		 */
-		if (string_length != 0 && separators_list_length != 0) {
-			/*
-			   Then, the separators research loop start
-			 */
-			working_string = string;
-			old_pointer = working_string;
-			local_token_nb = 1;
-			end_of_loop = 0;
-			while (!end_of_loop) {
-				best_pointer = NULL;
-				/*
-				   Search the first occurence of a separator
-				 */
-				for (i = 0; i < separators_list_length; i++) {
-					current_pointer =
-					    get_next_token(working_string,
-							   *(separators_list +
-							     i));
-					if (best_pointer == NULL) {
-						best_pointer = current_pointer;
-					} else if (best_pointer >
-						   current_pointer
-						   && current_pointer != NULL) {
-						best_pointer = current_pointer;
-					}
-				}
-				/*
-				   If this token must be extracted, extract it
-				 */
-				if (token_id == local_token_nb
-				    && (*p_token) == NULL) {
-					if (best_pointer == NULL)
-						copy_length =
-						    strlen(old_pointer);
-					else
-						copy_length =
-						    (size_t) (best_pointer -
-							      old_pointer);
-					*p_token = gsh_malloc(copy_length + 1);
-					(*p_token)[copy_length] = '\0';
-					memcpy(*p_token, old_pointer,
-						copy_length);
-					fstatus++;
-				}
-				/*
-				   If no more occurences, break the loop
-				 */
-				if (best_pointer == NULL)
-					end_of_loop = 1;
-
-				/*  Otherwise, increment token counter
-				 * and adjust working string */
-				else {
-					local_token_nb++;
-					working_string = best_pointer + 1;
-					old_pointer = working_string;
-				}
-			}
-			*p_token_nb = local_token_nb;
-			fstatus++;
-		}
-	}
-
-	return fstatus;
-}
diff --git a/src/NodeList/nodelist_internals.h b/src/NodeList/nodelist_internals.h
deleted file mode 100644
index 91e86a2..0000000
--- a/src/NodeList/nodelist_internals.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _NODELIST_INTERNALS_H
-#define _NODELIST_INTERNALS_H
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "nodelist.h"
-
-int nl_nl_non_recursive_intersects(nl_nl_t *first_list,
-				   nl_nl_t *
-				   second_list);
-int nl_rangelist_includes(nl_rangelist_t *a1,
-			  nl_rangelist_t *a2);
-int nl_range_intersects(nl_range_t *r1, nl_range_t *r2);
-int nl_rangelist_intersects(nl_rangelist_t *a1,
-			    nl_rangelist_t *a2);
-void nl_nl_remove_nodes(nl_nl_t *nodelist, char *list);
-void nl_rangelist_add_rangelist(nl_rangelist_t *array, nl_rangelist_t *rlin);
-void nl_rangelist_remove_rangelist(nl_rangelist_t *array, nl_rangelist_t *rlin);
-
-#endif
diff --git a/src/NodeList/nodelist_map.c b/src/NodeList/nodelist_map.c
deleted file mode 100644
index 64bad63..0000000
--- a/src/NodeList/nodelist_map.c
+++ /dev/null
@@ -1,117 +0,0 @@
-#include "config.h"
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <string.h>
-#include "abstract_mem.h"
-#include "nodelist.h"
-
-
-#define MAX_LONG_INT_STRING_SIZE      128
-
-/* Forward declaration */
-int _nl_common_string_get_token_common(char *string,
-				       char *separators_list,
-				       int *p_token_nb, int token_id,
-				       char **p_token);
-
-int nl_map(nl_nl_t *nodelist,
-	  int (*map_function)(char *, void *),
-	  void *other_params)
-{
-
-	int fstatus = 0;
-
-	nl_nl_t *nlist;
-
-	char *node_string;
-	size_t node_string_size;
-
-
-	long int i, j;
-
-	char id_print_format[128];
-
-	char *prefix;
-	char *suffix;
-
-	/* node list sublist loop */
-	nlist = nodelist;
-	while (nlist != NULL) {
-
-		/* build sublist padded id format */
-		prefix = nlist->pattern.prefix;
-		suffix = nlist->pattern.suffix;
-		snprintf(id_print_format, 128, "%%s%%0.%uu%%s",
-			 nlist->pattern.padding);
-
-		node_string_size = 0;
-		if (prefix != NULL)
-			node_string_size += strlen(prefix);
-		if (suffix != NULL)
-			node_string_size += strlen(suffix);
-		node_string_size += MAX_LONG_INT_STRING_SIZE;
-		node_string = gsh_malloc(node_string_size);
-		if (nlist->pattern.basic == 1) {
-			/* add basic node */
-			snprintf(node_string, node_string_size,
-				 "%s%s",
-				 (prefix == NULL) ? "" : prefix,
-				 (suffix == NULL) ? "" : suffix);
-			fstatus = map_function(node_string,
-					       other_params);
-		} else {
-			/* add enumerated nodes */
-			for (i = 0; i < nlist->rangelist.ranges_nb; i++) {
-				for (j = nlist->rangelist.array[i].from;
-				     j <= nlist->rangelist.array[i].to;
-				     j++) {
-					snprintf(node_string,
-						 node_string_size,
-						 id_print_format,
-						 (prefix == NULL)
-							? "" : prefix,
-						 j,
-						 (suffix == NULL)
-							? "" : suffix);
-					fstatus = map_function(node_string,
-							       other_params);
-				}
-			}
-		}
-
-		gsh_free(node_string);
-
-		if (fstatus != 0)
-			break;
-
-		nlist = nlist->next;
-	}
-
-	return fstatus;
-}
-
-
-int nl_map_condensed(char *src_list,
-		     int (*map_function)(char *, void *),
-		     void *other_params)
-{
-
-	int fstatus;
-
-	nl_nl_t nodelist;
-
-	nl_nl_init(&nodelist, &src_list, 1);
-	if (nl_map(&nodelist, map_function, other_params) == 0)
-		fstatus = nl_nl_nodes_quantity(&nodelist);
-	else
-		fstatus = -1;
-	nl_nl_free_contents(&nodelist);
-
-	return fstatus;
-}
-
-
-
diff --git a/src/NodeList/nodelist_range.c b/src/NodeList/nodelist_range.c
deleted file mode 100644
index 2e83abd..0000000
--- a/src/NodeList/nodelist_range.c
+++ /dev/null
@@ -1,415 +0,0 @@
-#include "config.h"
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <string.h>
-
-#include <limits.h>
-#include <ctype.h>
-
-#include "abstract_mem.h"
-#include "nodelist.h"
-
-#define DEFAULT_RANGELIST_SIZE       16
-#define DEFAULT_RANGELIST_INC_SIZE    8
-
-void nl_range_set(nl_range_t *r1, long int v1, long int v2)
-{
-	/* assert that lower and upper bound are in right order */
-	if (v1 <= v2) {
-		r1->from = v1;
-		r1->to = v2;
-	} else {
-		r1->from = v2;
-		r1->to = v1;
-	}
-}
-
-int nl_range_check(nl_range_t *r1)
-{
-	if ((r1->from) <= (r1->to))
-		return 1;
-	else
-		return 0;
-}
-
-int _nl_range_compare(const void *a1, const void *a2)
-{
-	nl_range_t *r1 = (nl_range_t *) a1;
-	nl_range_t *r2 = (nl_range_t *) a2;
-	return nl_range_compare(r1, r2);
-}
-
-int nl_range_compare(nl_range_t *r1, nl_range_t *r2)
-{
-	if (!nl_range_check(r1) || !nl_range_check(r2))
-		return 0;
-	if (r1->from == r2->from && r1->to == r2->to)
-		return 0;
-	else if (r1->to < r2->from)
-		return -1;
-	else
-		return 1;
-}
-
-int nl_range_intersects(nl_range_t *r1, nl_range_t *r2)
-{
-	int fstatus = 0;
-	if (!nl_range_check(r1) || !nl_range_check(r2))
-		return 0;
-	if (r2->to == r2->from)
-		if (r1->from <= r2->to && r2->to <= r1->to)
-			fstatus = 1;
-	if (r1->to == r1->from)
-		if (r2->from <= r1->to && r1->to <= r2->to)
-			fstatus = 1;
-	if (r2->to >= r1->from && r2->from <= r1->to)
-		fstatus = 1;
-	if (r1->to >= r2->from && r1->from <= r2->to)
-		fstatus = 1;
-	return fstatus;
-}
-
-int nl_range_contiguous(nl_range_t *r1, nl_range_t *r2)
-{
-	if (!nl_range_check(r1) || !nl_range_check(r2))
-		return -1;
-	if ((r1->to + 1) != r2->from && (r1->from - 1) != r2->to)
-		return 0;
-	else if (r1->to < r2->from)
-		return 1;
-	else
-		return 2;
-}
-
-int nl_range_includes(nl_range_t *r1, nl_range_t *r2)
-{
-	if (!nl_range_check(r1) || !nl_range_check(r2))
-		return -1;
-
-	if (r2->from >= r1->from && r2->to <= r1->to)
-		return 1;
-	else if (r1->from >= r2->from && r1->to <= r2->to)
-		return 2;
-	else
-		return 0;
-}
-
-int nl_range_union(nl_range_t *r1, nl_range_t *r2,
-			 nl_range_t *rout)
-{
-	if (!nl_range_check(r1) || !nl_range_check(r2))
-		return -1;
-	if (!nl_range_intersects(r1, r2)) {
-		if (!nl_range_contiguous(r1, r2))
-			return -1;
-	}
-	rout->from = (r1->from < r2->from) ? r1->from : r2->from;
-	rout->to = (r1->to > r2->to) ? r1->to : r2->to;
-	return 0;
-}
-
-void nl_rangelist_init(nl_rangelist_t *array)
-{
-	array->pre_allocated_ranges = DEFAULT_RANGELIST_SIZE;
-	array->ranges_nb = 0;
-	array->array = gsh_malloc(array->pre_allocated_ranges *
-				  sizeof(nl_range_t));
-}
-
-void nl_rangelist_init_by_copy(nl_rangelist_t *array, nl_rangelist_t *a2c)
-{
-	int i;
-
-	array->pre_allocated_ranges = a2c->pre_allocated_ranges;
-	array->ranges_nb = a2c->ranges_nb;
-	array->array = gsh_malloc(array->pre_allocated_ranges *
-				  sizeof(nl_range_t));
-	for (i = 0; i < array->ranges_nb; i++) {
-		memcpy(((array->array) + i), ((a2c->array) + i),
-		       sizeof(nl_range_t));
-	}
-}
-
-void nl_rangelist_free_contents(nl_rangelist_t *array)
-{
-	array->pre_allocated_ranges = 0;
-	array->ranges_nb = 0;
-	gsh_free(array->array);
-	array->array = NULL;
-}
-
-void nl_rangelist_incremente_size(nl_rangelist_t *array)
-{
-	array->pre_allocated_ranges += DEFAULT_RANGELIST_INC_SIZE;
-	array->array = gsh_realloc(array->array, array->pre_allocated_ranges *
-				   sizeof(nl_range_t));
-}
-
-void nl_rangelist_add_range(nl_rangelist_t *array, nl_range_t *rin)
-{
-	int already_added_flag = 0;
-	long int id;
-
-	nl_range_t r;
-	nl_rangelist_t work_array;
-
-	memcpy(&r, rin, sizeof(nl_range_t));
-	if (array->ranges_nb == 0) {
-		memcpy(array->array, &r, sizeof(nl_range_t));
-		array->ranges_nb++;
-	} else {
-		/* test if range is already present */
-		for (id = 0; id < array->ranges_nb; id++) {
-			already_added_flag =
-			    nl_range_includes(&(array->array[id]), &r);
-			if (already_added_flag == 1)
-				break;
-			already_added_flag = 0;
-		}
-		/* add range if not already present */
-		if (!already_added_flag) {
-			/* initialize working ranges array */
-			nl_rangelist_init(&work_array);
-			/* process sequentially input ranges array 's ranges */
-			for (id = 0; id < array->ranges_nb; id++) {
-				/* if range to add doesn't intersect or is
-				 *  not contiguous to currently tested
-				 *  range of the input ranges array, we
-				 *   add it to working ranges array
-				 * otherwise, we merge it with current tested
-				 * range of the input ranges array and go
-				 * to the next range */
-				if (!nl_range_intersects
-				    (&(array->array[id]), &r)
-				    &&
-				    !nl_range_contiguous(&
-							       (array->
-								array[id]),
-							       &r)) {
-					if (work_array.ranges_nb ==
-					    work_array.pre_allocated_ranges)
-						nl_rangelist_incremente_size
-						    (&work_array);
-					memcpy(work_array.array +
-					       work_array.ranges_nb,
-					       &(array->array[id]),
-					       sizeof(nl_range_t));
-					work_array.ranges_nb++;
-				} else {
-					nl_range_union(&
-							     (array->array[id]),
-							     &r, &r);
-				}
-			}
-			/* add range to add (which may be bigger now ) */
-			if (work_array.ranges_nb ==
-			    work_array.pre_allocated_ranges)
-				nl_rangelist_incremente_size(&work_array);
-			memcpy(work_array.array + work_array.ranges_nb, &r,
-			       sizeof(nl_range_t));
-			work_array.ranges_nb++;
-			nl_rangelist_sort(&work_array);
-
-			nl_rangelist_free_contents(array);
-			nl_rangelist_init_by_copy(array, &work_array);
-		}
-	}
-}
-
-void nl_rangelist_add_rangelist(nl_rangelist_t *array, nl_rangelist_t *rlin)
-{
-	int i;
-
-	for (i = 0; i < rlin->ranges_nb; i++)
-		nl_rangelist_add_range(array, &(rlin->array[i]));
-}
-
-void nl_rangelist_remove_range(nl_rangelist_t *array, nl_range_t *rin)
-{
-	int intersects_flag = 0;
-	long int id;
-
-	nl_range_t *pr;
-	nl_range_t r;
-	nl_range_t wr1;
-	nl_rangelist_t work_array;
-
-	if (array->ranges_nb != 0) {
-		memcpy(&r, rin, sizeof(nl_range_t));
-		/* initialize working ranges array */
-		nl_rangelist_init(&work_array);
-		/* test if range intersects with this rangelist */
-		intersects_flag = 0;
-
-		for (id = 0; id < array->ranges_nb; id++) {
-			pr = &(array->array[id]);
-			intersects_flag = nl_range_intersects(pr, &r);
-			if (!intersects_flag) {
-				/* add this range to work array */
-				nl_rangelist_add_range(&work_array, pr);
-			} else {
-				/* extract any hypothetic non intersecting
-				 * part of the range and add them to
-				 * work_array range list */
-				if (pr->from != pr->to) {
-					/* check that second range doesn't
-					 *  include the first one */
-					if (nl_range_includes(&r, pr) != 1) {
-						/* [pr[r... */
-						if (pr->from < r.from) {
-							nl_range_set(&wr1,
-									   pr->
-									   from,
-									   r.
-									   from
-									   - 1);
-							nl_rangelist_add_range(
-							   &work_array, &wr1);
-						}
-						/* ...r]pr] */
-						if (pr->to > r.to) {
-							nl_range_set(&wr1,
-								     r.to + 1,
-								     pr->to);
-							nl_rangelist_add_range(
-							  &work_array, &wr1);
-						}
-
-					}
-				}
-			}
-		}
-
-		/* replace array with the new range list */
-		nl_rangelist_free_contents(array);
-		nl_rangelist_init_by_copy(array, &work_array);
-
-		nl_rangelist_free_contents(&work_array);
-	}
-}
-
-void nl_rangelist_remove_rangelist(nl_rangelist_t *array,
-					nl_rangelist_t *rlin)
-{
-	int i;
-
-	for (i = 0; i < rlin->ranges_nb; i++)
-		nl_rangelist_remove_range(array, &(rlin->array[i]));
-}
-
-int nl_rangelist_add_list(nl_rangelist_t *array, char *list)
-{
-	int fstatus = 0;
-	char *in_list;
-	size_t in_list_size;
-	char *work_buffer;
-	char *begin;
-	char *end;
-
-	long int start_val = 0;
-	long int value;
-	long int work_val;
-	int start_flag = 0;
-	int stop_flag = 0;
-
-	int padding = 0;
-
-	in_list = list;
-	in_list_size = strlen(in_list);
-
-	/* create working buffer */
-	work_buffer = gsh_malloc(in_list_size + 1);
-
-	/* set entry point */
-	begin = in_list;
-	if (*begin == '[')
-		begin++;
-	end = begin;
-
-	/* process input list */
-	while (end != '\0' && end < in_list + in_list_size + 1) {
-		while (isdigit(*end))
-			end++;
-
-		/* do something only if end was incremented */
-		if (end - begin) {
-			/* extract the read value */
-			strncpy(work_buffer, begin, (end - begin));
-			work_buffer[end - begin] = '\0';
-			/* get long int value and test its validity */
-			value = strtoll(work_buffer, NULL, 10);
-			if (value == LONG_MIN || value == LONG_MAX) {
-				fstatus = 2;
-				break;
-			}
-			/* try to get padding */
-			if (*work_buffer == '0') {
-				int max_length = strlen(work_buffer);
-
-				if (max_length > padding)
-					padding = max_length;
-			}
-
-			/* check how many value must be added */
-			if (*end == '\0' ||
-			    *end == ',' ||
-			    *end == ']') {
-				if (!start_flag) {
-					start_flag = 1;
-					start_val = value;
-				}
-				stop_flag = 1;
-			}
-			/* current lemme is a range */
-			else if (*end == '-') {
-				start_flag = 1;
-				start_val = value;
-			}
-			/* current lemme has a invalid format */
-			else {
-				fstatus = 3;
-				break;
-			}
-
-			/* test if value(s) must be added now */
-			if (start_flag && stop_flag) {
-				if (value < start_val) {
-					work_val = start_val;
-					start_val = value;
-					value = work_val;
-				}
-				/* add value(s) */
-				nl_range_t br;
-
-				nl_range_set(&br, start_val, value);
-				nl_rangelist_add_range(array, &br);
-				start_flag = 0;
-				stop_flag = 0;
-			}
-		}
-		/* go to next lemme */
-		end++;
-		begin = end;
-	}
-
-	/* free working buffer */
-	gsh_free(work_buffer);
-
-	/* at this point fstatus=0 if process was done succesfully, we
-	   may update it to padding value */
-	if (fstatus != 0)
-		fstatus = -1;
-	else
-		fstatus = padding;
-
-	return fstatus;
-}
-
-void nl_rangelist_sort(nl_rangelist_t *array)
-{
-	qsort(array->array, array->ranges_nb, sizeof(nl_range_t),
-	      _nl_range_compare);
-}
diff --git a/src/include/nodelist.h b/src/include/nodelist.h
deleted file mode 100644
index c69b897..0000000
--- a/src/include/nodelist.h
+++ /dev/null
@@ -1,484 +0,0 @@
-#ifndef _NODELIST_H
-#define _NODELIST_H
-
-#include "avltree.h"
-
-/* define a macro that make an advanced free on pointer */
-#define xfree(a)		\
-	do {			\
-		gsh_free(a);	\
-		a = NULL;	\
-	} while (0)
-
-/*! \addtogroup NODELIST_RANGE
- *  @{
- */
-/*!
- * \ingroup NODELIST_RANGE
- * \brief structure that represent a range of long int value
- */
-typedef struct nl_range {
-	long int from;
-	long int to;
-} nl_range_t;
-/*!
- * \ingroup NODELIST_RANGE
- * \brief set bridge range values
- *
- * \param r1 input range
- * \param v1 from value
- * \param v2 to value
- *
-*/
-void nl_range_set(nl_range_t *r1, long int v1, long int v2);
-
-/*!
- * \ingroup NODELIST_RANGE
- * \brief Indicate if the range is a valid one. That is to say if from value
- * is lower that to value
- *
- * \param r1 input range
- *
- * \retval  1 if the range is valid
- * \retval  0 if the range is not valid
-*/
-int nl_range_check(nl_range_t *r1);
-
-/*!
- * @ingroup NODELIST_RANGE
- * @brief Indicate if the first range equals, is placed before
- * or is placed after the second one
- *
- * \param r1 one of the two input ranges
- * \param r2 one of the two input ranges
- *
- * \retval  1 if the second one end before the start of the first one
- * \retval  0 if the two ranges are equals
- * \retval -1 if the second one start after the end of the first one
-*/
-int nl_range_compare(nl_range_t *r1, nl_range_t *r2);
-/*!
- * \ingroup NODELIST_RANGE
- * \brief Indicate if it exists an non empty intersection
- * between the two input ranges
- *
- * \param r1 one of the two input ranges
- * \param r2 one of the two input ranges
- *
- * \retval  1 an intersection exists
- * \retval  0 otherwise
-*/
-int nl_range_intersects(nl_range_t *r1, nl_range_t *r2);
-/*!
- * \ingroup NODELIST_RANGE
- * \brief Gives the range that is common to the two input ranges
- *
- * \param r1 one of the two input ranges
- * \param r2 one of the two input ranges
- * \param r3 output range
- *
- * \retval  0 operation successfully done
- * \retval -1 operation failed
-*/
-int nl_range_intersection(nl_range_t *r1, nl_range_t *r2,
-				nl_range_t *r3);
-/*!
- * \ingroup NODELIST_RANGE
- * \brief Indicate if the two input ranges are contiguous
- *
- * \param r1 one of the two input ranges
- * \param r2 one of the two input ranges
- *
- * \retval  0 if not continuous
- * \retval  1 if continuous and r1 is before r2
- * \retval  2 if continuous and r2 is before r1
-*/
-int nl_range_contiguous(nl_range_t *r1, nl_range_t *r2);
-/*!
- * \ingroup NODELIST_RANGE
- * \brief Indicate if one of the two input range is included in the other
- * one
- *
- * \param r1 one of the two input ranges
- * \param r2 one of the two input ranges
- *
- * \retval  0 if no inclusion detected
- * \retval  1 if r2 is included in r1 (r1 is the bigger one)
- * \retval  2 if r1 is included in r2 (r2 is the bigger one)
-*/
-int nl_range_includes(nl_range_t *r1, nl_range_t *r2);
-/**
- * *ingroup NODELIST_RANGE
- * brief Gives a nl_range that represent the union of the two nl_ranges
- * given in input. The two ranges must intersect or be continuous otherwise
- * operation will failed
- *
- * @param[in] r1 one of the two input ranges
- * @param[in] r2 one of the two input ranges
- * @param[out] rout output range
- *
- * @retval  0 operation successfully done
- * @retval -1 operation failed
-*/
-int nl_range_union(nl_range_t *r1, nl_range_t *r2,
-			 nl_range_t *rout);
-/*!
- * @}
-*/
-
-/*! \addtogroup NODELIST_RANGES_ARRAY
- *  @{
- */
-/*!
- * \ingroup NODELIST_RANGES_ARRAY
- * \brief structure that represent a range of long int value
- */
-typedef struct nl_rangelist {
-	long int ranges_nb;
-	nl_range_t *array;
-	size_t pre_allocated_ranges;
-} nl_rangelist_t;
-void nl_rangelist_init(nl_rangelist_t *array);
-void nl_rangelist_init_by_copy(nl_rangelist_t *array,  nl_rangelist_t *a2c);
-/*!
- * \ingroup BATCH_MANAGER
- * \brief Free a bridge ranges array structure contents
- *
- * \param array pointer on a bridge ranges array structure to finalize
- *
-*/
-void nl_rangelist_free_contents(nl_rangelist_t *array);
-/*!
- * \ingroup BATCH_MANAGER
- * \brief Increment a bridge ranges array storage zone
- *
- * \param array pointer on a bridge ranges array structure to increment
- *
-*/
-void nl_rangelist_incremente_size(nl_rangelist_t *array);
-/*!
- * \ingroup BATCH_MANAGER
- * \brief Add a range to a bridge ranges array
- * The range will be merge with already existing ranges if required
- * and resulting ranges will be sorted
- *
- * \param array pointer on a bridge ranges array structure to use for add-on
- * \param r range that will be add to the array
- *
-*/
-void nl_rangelist_add_range(nl_rangelist_t *array, nl_range_t *r);
-
-/*!
- * \ingroup BATCH_MANAGER
- * \brief Add a list of values to a bridge ranges array
- * The range will be merge with already existing ranges if required
- * and resulting ranges will be sorted
- *
- * \param array pointer on a bridge ranges array structure to use for add-on
- * \param list values list that must be added (pattern [*,*-*...])
- *
- * \retval  n padding if operation successfully done
- * \retval -1 operation failed
-*/
-int nl_rangelist_add_list(nl_rangelist_t *array, char *list);
-
-/*!
- * \ingroup BATCH_MANAGER
- * \brief Sort a bridge ranges array
- *
- * \param array pointer on a bridge ranges array structure to sort
- *
- */
-void nl_rangelist_sort(nl_rangelist_t *array);
-
-/*!
- * @}
-*/
-
-/*! \addtogroup NODELIST_IDS_LIST
- *  @{
- */
-/*!
- * \ingroup NODELIST_IDS_LIST
- * \brief structure that represent a range of long int value
- */
-typedef struct nl_idlist {
-
-	long int id_nb;
-
-	nl_rangelist_t rangelist;	/*!<
-					 * ranges array of this list
-					 */
-} nl_idlist_t;
-/*!
- * \ingroup NODELIST_IDLIST
- * \brief Initialize a bridge ids list structure
- *
- * \param idlist pointer on a bridge ids list structure to initialize
- * \param lists array of strings containing ids to add to this list
- * \param lists_nb quanity of string in the array
- *
- * \retval  0 operation successfully done
- * \retval -1 operation failed
-*/
-int nl_idlist_init(nl_idlist_t *idlist, char **lists,
-			 int lists_nb);
-/*!
- * \ingroup NODELIST_IDLIST
- * \brief Free a bridge ids list structure
- *
- * \param idlist pointer on a bridge ids list structure to finalize
- *
- * \retval  0 operation successfully done
- * \retval -1 operation failed
-*/
-int nl_idlist_free_contents(nl_idlist_t *idlist);
-/*!
- * \ingroup NODELIST_IDLIST
- * \brief Add a ids list to a bridge ids list structure
- *
- * \param idlist pointer on a bridge ids list structure
- * \param list ids list to add to this bridge ids list
- *
- * \retval  n padding length if operation successfully done
- * \retval -1 operation failed
-*/
-int nl_idlist_add_ids(nl_idlist_t *idlist, char *list);
-/*!
- * \ingroup NODELIST_IDLIST
- * \brief Get ids quantity
- *
- * \param idlist pointer on a bridge ids list structure
- *
- * \retval quantity of ids in this bridge ids list
-*/
-long int nl_idlist_ids_quantity(nl_idlist_t *idlist);
-/*!
- * \ingroup NODELIST_IDLIST
- * \brief Get extended ids string
- *
- * \param idlist pointer on a bridge ids list structure
- * \param p_string pointer on a string that will be allocated
- * and filled with ids names
- *
- * \retval  0 operation successfully done
- * \retval -1 operation failed
-*/
-int nl_idlist_get_extended_string(nl_idlist_t *idlist,
-					char **p_string);
-/*!
- * \ingroup NODELIST_IDLIST
- * \brief Get compacted ids string
- *
- * \param idlist pointer on a bridge ids list structure
- * \param p_string pointer on a string that will be allocated
- * and filled with compacted ids list
- *
- * \retval  0 operation successfully done
- * \retval -1 operation failed
-*/
-int nl_idlist_get_compacted_string(nl_idlist_t *idlist,
-					 char **p_string);
-/*!
- * @}
-*/
-
-/*! \addtogroup NODELIST_NODEPATTERN
- *  @{
- */
-/*!
- * \brief structure that represent a nodename pattern
- *
- * can be use for basic node or enumartion node (prefixXXXsuffix pattern)
- */
-typedef struct nl_nodepattern {
-	int padding;		/*!< padding length */
-	char *prefix;		/*!< nodename prefix */
-	char *suffix;		/*!< nodename suffix */
-	int basic;		/*!< basic node flag 0=no 1=yes */
-} nl_nodepattern_t;
-/*!
- * \brief Initialize a bridge node pattern structure
- *
- * by default, padding is set to 0, prefix and suffix to NULL
- * and the node pattern is basic
- *
- * \param np pointer on a bridge node pattern structure to initialize
- *
-*/
-void nl_nodepattern_init(nl_nodepattern_t *np);
-/*!
- * \brief Initialize a bridge node pattern structure by dumping an other one
- *
- * by default, padding is set to 0, prefix and suffix to NULL
- * and the node pattern is basic
- *
- * \param np pointer on a bridge node pattern structure to initialize
- * \param npin pointer on a bridge node pattern to copy
- *
-*/
-void nl_nodepattern_init_by_copy(nl_nodepattern_t *np, nl_nodepattern_t *npin);
-/*!
- * \brief Clean a bridge node pattern structure
- *
- * \param np pointer on a bridge node pattern structure to free
- *
-*/
-void nl_nodepattern_free_contents(nl_nodepattern_t *np);
-/*!
- * \brief Set bridge node pattern padding
- *
- * \param np pointer on a bridge node pattern structure to free
- * \param padding padding value of the pattern
- *
-*/
-static inline void nl_nodepattern_set_padding(nl_nodepattern_t *np, int padding)
-{
-	np->padding = padding;
-}
-
-/*!
- * \brief Set bridge node pattern prefix
- *
- * \param np pointer on a bridge node pattern structure
- * \param prefix node pattern prefix
- *
-*/
-static inline
-void nl_nodepattern_set_prefix(nl_nodepattern_t *np, char *prefix)
-{
-	if (prefix != NULL) {
-		gsh_free(np->prefix);
-		np->prefix = gsh_strdup(prefix);
-	}
-}
-
-/*!
- * \brief Set bridge node pattern suffix
- *
- * \param np pointer on a bridge node pattern structure
- * \param suffix node pattern suffix
- *
-*/
-static inline
-void nl_nodepattern_set_suffix(nl_nodepattern_t *np, char *suffix)
-{
-	if (suffix != NULL) {
-		gsh_free(np->suffix);
-		np->suffix = gsh_strdup(suffix);
-	}
-}
-
-int nl_nodepattern_equals(nl_nodepattern_t *np1,
-				nl_nodepattern_t *np2);
-/*!
- * @}
-*/
-
-/*! \addtogroup NODELIST_NODELIST
- *  @{
- */
-/*!
- * \ingroup NODELIST_NODELIST
- * \brief structure that represent a range of long int value
- */
-typedef struct nl_nodelist {
-	nl_nodepattern_t pattern;
-	nl_rangelist_t rangelist;
-	struct nl_nodelist *next;
-} nl_nl_t;
-/*!
- * \ingroup NODELIST_NODELIST
- * \brief Initialize a bridge nodes list structure
- *
- * \param nodelist pointer on a bridge nodes list structure to initialize
- * \param lists array of strings containing nodes to add to this list
- * \param lists_nb quanity of string in the array
- *
-*/
-void nl_nl_init(nl_nl_t *nodelist, char **lists, int lists_nb);
-/*!
- * \ingroup NODELIST_NODELIST
- * \brief Free a bridge nodes list structure
- *
- * \param nodelist pointer on a bridge nodes list structure to finalize
- *
-*/
-void nl_nl_free_contents(nl_nl_t *nodelist);
-
-/*!
- * \ingroup NODELIST_NODELIST
- * \brief Add a nodes list to a bridge nodes list structure
- *
- * \param nodelist pointer on a bridge nodes list structure
- * \param list nodes list to add to this bridge nodes list
- *
-*/
-void nl_nl_add_nodes(nl_nl_t *nodelist, char *list);
-
-#define VERSUS_OPERATION_INCLUDE         1
-#define VERSUS_OPERATION_INTERSECT       2
-
-/*!
- * \ingroup NODELIST_NODELIST
- * \brief Get nodes quantity
- *
- * \param nodelist pointer on a bridge nodes list structure
- *
- * \retval quantity of nodes in this bridge nodes list
-*/
-long int nl_nl_nodes_quantity(nl_nl_t *nodelist);
-
-/*!
- * \ingroup NODELIST_NODELIST
- * \brief Get an compacted nodes list based on a extended one
- *
- * \param src_list extended (or not) nodes list
- * \param p_dst_list compacted nodes list
- *
- * \retval  n nodes quantity if operation successfully done
- * \retval -1 operation failed
-*/
-
-/*!
- * @}
-*/
-
-/*!
- * \ingroup NODELIST_COMMON
- * \brief Get number of tokens included in a string
- *
- * \param string input string
- * \param separators_list string containing allowed token 's separators
- * \param p_token_nb pointer on an integer that will be set
- * to tokens quantity found in the string
- *
- * \retval  0 operation successfully done
- * \retval -1 operation failed
-*/
-int nl_common_string_get_tokens_quantity(char *string,
-					       char *separators_list,
-					       int *p_token_nb);
-
-/*!
- * \ingroup NODELIST_COMMON
- * \brief Get a specific token included in a string
- *
- * \param string input string
- * \param separators_list string containing allowed token 's separators
- * \param token id the id of the token in the list
- * \param p_token pointer on a string that will be
- * set according to the token value (must be free later)
- *
- * \retval  0 operation successfully done
- * \retval -1 operation failed
-*/
-int nl_common_string_get_token(char *string, char *separators_list,
-				     int token_id, char **p_token);
-
-int nl_map_condensed(char *src_list,
-		     int (*map_function)(char *, void *),
-		     void *otherparams);
-
-
-#endif
diff --git a/src/scripts/runcp.sh b/src/scripts/runcp.sh
index efcda40..34a7035 100755
--- a/src/scripts/runcp.sh
+++ b/src/scripts/runcp.sh
@@ -243,7 +243,7 @@
 
 NO_EXTERNAL=0
 
-IGNORE="config_parsing|Protocols/XDR|NodeList|include/nodelist.h"
+IGNORE="config_parsing|Protocols/XDR"
 IGNORE="$IGNORE|include/gsh_intrinsic.h"
 
 NO_IGNORE=0
diff --git a/src/support/exports.c b/src/support/exports.c
index 824e86f..b7e4789 100644
--- a/src/support/exports.c
+++ b/src/support/exports.c
@@ -38,7 +38,6 @@
 #include "nfs_dupreq.h"
 #include "config_parsing.h"
 #include "common_utils.h"
-#include "nodelist.h"
 #include <stdlib.h>
 #include <fnmatch.h>
 #include <sys/socket.h>
@@ -1614,9 +1613,6 @@
 	proto_cli = container_of(param_addr,
 				 struct exportlist_client_entry__,
 				 cle_list);
-#ifdef USE_NODELIST
-#error "Node list expansion goes here but not yet"
-#endif
 	LogMidDebug(COMPONENT_CONFIG, "Adding client %s", token);
 	rc = add_client(&proto_cli->cle_list,
 			token, type_hint,