/* 
   Copyright (C) 1994 Free Software Foundation

   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License as
   published by the Free Software Foundation; either version 2, or (at
   your option) any later version.

   This program is distributed in the hope that it will be useful, but
   WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */

#include "trans.h"

/* Implement fshelp_translator_iterate.  See <hurd/fshelp.h> for the
   description of the arguments.  */
void
fshelp_translator_iterate (void (*func)(struct trans_link *, void *),
			   void *arg)
{
  struct item {struct trans_link *l; struct item *next;} *list = 0, *item;
  struct trans_link *link;

  spin_lock (&_fshelp_translistlock);
  for (link = _fshelp_translist; link; link = link->next)
    {
      item = alloca (sizeof (struct item));
      item->l = link;
      item->next = list;
      list = item;
    }
  spin_unlock (&_fshelp_translistlock);
  
  for (item = list; item; item = item->next)
    (*func)(item->l, arg);
}

	       
