]> arthur.barton.de Git - netatalk.git/commitdiff
Removed unused files.
authorsrittau <srittau>
Tue, 28 Jan 2003 15:14:31 +0000 (15:14 +0000)
committersrittau <srittau>
Tue, 28 Jan 2003 15:14:31 +0000 (15:14 +0000)
libatalk/pap/Makefile.am [deleted file]
libatalk/pap/pap_child.h [deleted file]
libatalk/pap/pap_close.c [deleted file]
libatalk/pap/pap_init.c [deleted file]
libatalk/pap/pap_open.c [deleted file]
libatalk/pap/pap_read.c [deleted file]
libatalk/pap/pap_sendstatus.c [deleted file]
libatalk/pap/pap_slinit.c [deleted file]
libatalk/pap/pap_tickle.c [deleted file]

diff --git a/libatalk/pap/Makefile.am b/libatalk/pap/Makefile.am
deleted file mode 100644 (file)
index 6670e27..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# Makefile.am for libatalk/pap/
-
-noinst_LTLIBRARIES = libpap.la
-
-libpap_la_SOURCES = pap_close.c pap_init.c pap_open.c pap_read.c pap_sendstatus.c pap_slinit pap_tickle.c
-
-noinst_HEADERS = pap_child.h
diff --git a/libatalk/pap/pap_child.h b/libatalk/pap/pap_child.h
deleted file mode 100644 (file)
index 02c76a9..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * $Id: pap_child.h,v 1.2 2001-06-29 14:14:47 rufustfirefly Exp $
- *
- * Copyright (c) 1990,1991 Regents of The University of Michigan.
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of The University
- * of Michigan not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. This software is supplied as is without expressed or
- * implied warranties of any kind.
- *
- *     Research Systems Unix Group
- *     The University of Michigan
- *     c/o Mike Clark
- *     535 W. William Street
- *     Ann Arbor, Michigan
- *     +1-313-763-0525
- *     netatalk@itd.umich.edu
- */
-
-#ifndef _PAP_CHILD_H
-#define _PAP_CHILD_H 1
-
-struct pap_child {
-    int                        ac_pid;
-    int                        ac_state;
-    struct sockaddr_at ac_sat;
-};
-
-#define ACSTATE_DEAD   0
-#define ACSTATE_OK     1
-#define ACSTATE_BAD    7
-
-#endif /* _PAP_CHILD_H */
diff --git a/libatalk/pap/pap_close.c b/libatalk/pap/pap_close.c
deleted file mode 100644 (file)
index e0ca200..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * $Id: pap_close.c,v 1.4 2002-01-04 04:45:48 sibaz Exp $
- *
- * close the connection
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-int pap_close(PAP pap)
-{
-  struct atp_block atpb;
-  struct iovec iov;
-  unsigned char buf[PAP_HDRSIZ];
-  int err = -1;
-
-  buf[ 0 ] = pap->pap_connid;
-  buf[ 1 ] = PAP_CLOSE;
-  buf[ 2 ] = buf[ 3 ] = 0;
-
-  atpb.atp_saddr = &pap->pap_sat;
-  atpb.atp_sreqdata = buf;
-  atpb.atp_sreqdlen = sizeof(buf);     /* bytes in CloseConn request */
-  atpb.atp_sreqto = 2;                 /* retry timer */
-  atpb.atp_sreqtries = 5;              /* retry count */
-  if (atp_sreq( atp, &atpb, 1, ATP_XO ) < 0) {
-    goto close_done;
-  }
-
-  /* check for CloseConnReply */
-  iov.iov_base = pap->pap_data;
-  iov.iov_len = sizeof( pap->pap_data );
-  atpb.atp_rresiov = &iov;
-  atpb.atp_rresiovcnt = 1;
-  if ( atp_rresp( pap->pap_atp, &atpb ) < 0 ) {
-    goto close_done;
-  }
-  
-  /* sanity */
-  if ( iov.iov_len != 4 || pap->pap_data[ 0 ] != pap->pap_connid ||
-       pap->pap_data[ 1 ] != PAP_CLOSEREPLY ) {
-    LOG(log_error, logtype_default, "pap_close: Bad response!");
-    goto close_done;
-  }
-  err = 0;
-
-close_done:
-  atp_close(pap->pap_atp);
-  free(pap);
-  return err;
-}
diff --git a/libatalk/pap/pap_init.c b/libatalk/pap/pap_init.c
deleted file mode 100644 (file)
index 5118097..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * $Id: pap_init.c,v 1.3 2001-06-29 14:14:47 rufustfirefly Exp $
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-PAP pap_init(ATP atp)
-{
-    PAP pap;
-
-    if ((pap = (struct PAP *) calloc(1, sizeof(struct PAP))) == NULL)
-      return NULL;
-
-    pap->pap_atp = atp;
-#ifdef BSD4_4
-    pap->pap_sat.sat_len = sizeof(struct sockaddr_at);
-#endif /* BSD4_4 */
-    pap->pap_sat.sat_family = AF_APPLETALK;
-    pap->pap_sat.sat_addr.s_net = ATADDR_ANYNET;
-    pap->pap_sat.sat_addr.s_node = ATADDR_ANYNODE;
-    pap->pap_sat.sat_port = ATADDR_ANYPORT;
-    pap->pap_status = NULL;
-    pap->pap_slen = 0;
-    pap->pap_sid = 0;
-    pap->pap_flags = PAPFL_SLS;
-    pap->cmdlen = pap->datalen = 0;
-    pap->read_count = pap->write_count = 0;
-
-    return( pap );
-}
diff --git a/libatalk/pap/pap_open.c b/libatalk/pap/pap_open.c
deleted file mode 100644 (file)
index 1094136..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * $Id: pap_open.c,v 1.4 2002-01-04 04:45:48 sibaz Exp $
- *
- * moved over from bin/pap/pap.c
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-static struct {
-  PAP pap;
-  int tickle;
-  pid_t pid;
-} client;
-
-static void tickle_handler()
-{
-  if (client.tickle++ < 4)
-    pap_tickle(client.pap, client.pap->pap_connid, &client.pap->pap_sat);
-  else {
-    kill(client.pid, SIGTERM);
-    LOG(log_error, logtype_default, "pap_alarm: connection timed out.");
-    exit(1);
-  }
-}
-
-
-PAP pap_open(PAP pap, struct nbpnve *nn, u_int8_t quantum, int flags)
-{
-    struct atp_block atpb;
-    struct timeval stv, tv;
-    u_int16_t waiting;
-    pid_t pid;
-
-    if (!pap->inited) {
-      pap->pap_connid = getpid() & 0xff;
-      pap->cmdbuf[ 0 ] = pap->pap_connid;
-      pap->cmdbuf[ 1 ] = PAP_OPEN;
-      pap->cmdbuf[ 2 ] = pap->cmdbuf[ 3 ] = 0;
-      pap->cmdbuf[ 4 ] = atp_sockaddr( pap->pap_atp )->sat_port;
-      pap->cmdbuf[ 5 ] = quantum;      /* flow quantum */
-      
-      if ( gettimeofday( &stv, NULL ) < 0 ) {
-       perror( "gettimeofday" );
-       return NULL;
-      }
-      
-      for (;;) {
-       if ( flags & PAPFLAG_CUTS ) {
-         waiting = 0xffff;
-       } else {
-         if ( gettimeofday( &tv, NULL ) < 0 ) {
-           perror( "gettimeofday" );
-           return NULL;
-         }
-         waiting = htons( tv.tv_sec - stv.tv_sec );
-       }
-       
-       memcpy(pap->cmdbuf + 6, &waiting, sizeof( waiting ));
-       atpb.atp_saddr = &nn->nn_sat;
-       atpb.atp_sreqdata = pap->cmdbuf;
-       atpb.atp_sreqdlen = 8;          /* bytes in OpenConn request */
-       atpb.atp_sreqto = 2;            /* retry timer */
-       atpb.atp_sreqtries = 5;         /* retry count */
-       if ( atp_sreq( atp, &atpb, 1, ATP_XO ) < 0 ) {
-         perror( "atp_sreq" );
-         return NULL;
-       }
-       
-       iov.iov_base = pap->data;
-       iov.iov_len = sizeof( rbuf );
-       atpb.atp_rresiov = &iov;
-       atpb.atp_rresiovcnt = 1;
-       if ( atp_rresp( atp, &atpb ) < 0 ) {
-         perror( "atp_rresp" );
-         if ( connattempts-- <= 0 ) {
-           fprintf( stderr, "Can't connect!\n" );
-           return NULL;
-         }
-         continue;
-       }
-       
-       /* sanity */
-       if ( iov.iov_len < 8 || pap->data[ 0 ] != pap->pap_connid ||
-            pap->data[ 1 ] != PAP_OPENREPLY ) {
-         fprintf( stderr, "Bad response!\n" );
-         continue;     /* This is weird, since TIDs must match... */
-       }
-       
-       if ( isatty( 1 )) {
-         printf( "%.*s\n", iov.iov_len - 9, iov.iov_base + 9 );
-       }
-       updatestatus( iov.iov_base + 9, iov.iov_len - 9 );
-       
-       bcopy( &rbuf[ 6 ], &result, sizeof( result ));
-       if ( result != 0 ) {
-         sleep( 2 );
-       } else {
-         memcpy(&pap->pap_sat, &nn.nn_sat, sizeof( struct sockaddr_at ));
-         pap->pap_sat.sat_port = rbuf[ 4 ];
-         pap->pap_quantum = rbuf[ 5 ];
-         break;
-       }
-      }
-      
-      if ( isatty( 1 )) {
-       printf( "Connected to %.*s:%.*s@%.*s.\n",
-               nn.nn_objlen, nn.nn_obj,
-               nn.nn_typelen, nn.nn_type,
-               nn.nn_zonelen, nn.nn_zone );
-      }
-
-    /* open a second atp connection */
-    if (( atp = atp_open( 0 )) == NULL ) {
-       perror( "atp_open" );
-       return NULL;
-    }
-
-    client.pap = pap;
-    client.pid = pid;
-    pap->inited = 1;
-    }
-
-    /* wait around for tickles */
-    
-}
diff --git a/libatalk/pap/pap_read.c b/libatalk/pap/pap_read.c
deleted file mode 100644 (file)
index ac8faab..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * $Id: pap_read.c,v 1.3 2001-06-29 14:14:47 rufustfirefly Exp $
- *
- * taken from bin/pap/pap.c
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-int pap_read(PAP pap)
-{
-    struct atp_block atpb;
-    u_int16_t seq;
-
-    pap->cmdbuf[0] = pap->pap_connid;
-    pap->cmdbuf[1] = PAP_READ;
-    if ( ++pap->pap_seq == 0 ) 
-      pap->pap_seq = 1;
-
-    seq = htons( pap->pap_seq );
-    memcpy(pap->cmdbuf + 2, &seq, sizeof(seq));
-    atpb.atp_saddr = &pap->pap_sat;
-    atpb.atp_sreqdata = pap->cmdbuf;
-    atpb.atp_sreqdlen = sizeof(pap->cmdbuf);   /* bytes in SendData request */
-    atpb.atp_sreqto = 15;              /* retry timer */
-    atpb.atp_sreqtries = ATP_TRIES_INFINITE;   /* retry count */
-    if ( atp_sreq( pap->pap_atp, &atpb, pap->oquantum, ATP_XO ) < 0 ) {
-      return -1;
-    }
-
-    return 0;
-}
diff --git a/libatalk/pap/pap_sendstatus.c b/libatalk/pap/pap_sendstatus.c
deleted file mode 100644 (file)
index cd4b7c3..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * $Id: pap_sendstatus.c,v 1.3 2001-06-29 14:14:47 rufustfirefly Exp $
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-int pap_sendstatus(PAP pap)
-{
-  struct atp_block atpb; 
-  u_int8_t buf[PAP_HDRSIZ];
-  
-  buf[ 0 ] = 0;
-  buf[ 1 ] = PAP_SENDSTATUS;
-  buf[ 2 ] = buf[ 3 ] = 0;
-  atpb.atp_saddr =&pap->pap_sat;
-  atpb.atp_sreqdata = buf;
-  atpb.atp_sreqdlen = 4;       /* bytes in SendStatus request */
-  atpb.atp_sreqto = 2;         /* retry timer */
-  atpb.atp_sreqtries = 5;              /* retry count */
-  if ( atp_sreq( satp, &atpb, 1, 0 ) < 0 ) {
-    return -1;
-  }
-
-  return 0;
-}
diff --git a/libatalk/pap/pap_slinit.c b/libatalk/pap/pap_slinit.c
deleted file mode 100644 (file)
index d85dab3..0000000
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- * $Id: pap_slinit.c,v 1.5 2002-01-04 04:45:48 sibaz Exp $
- *
- * Copyright (c) 1990,1996 Regents of The University of Michigan.
- * All Rights Reserved.  See COPYRIGHT.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <atalk/logger.h>
-#include <errno.h>
-#include <sys/signal.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-
-/* POSIX.1 sys/wait.h check */
-#include <sys/types.h>
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif /* HAVE_SYS_WAIT_H */
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
-#endif /* ! WEXITSTATUS */
-#ifndef WIFEXITED
-#define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif /* ! WIFEXITED */
-
-#include <sys/socket.h>
-#include <sys/param.h>
-#include <netatalk/at.h>
-#include <atalk/compat.h>
-#include <atalk/atp.h>
-#include <atalk/pap.h>
-
-#include <atalk/server_child.h>
-#include "pap_child.h"
-
-static PAP server_pap;
-static struct server_child *children = NULL;
-static struct pap_child    **pap_ac = NULL;
-
-/* send tickles and check tickle status of connections */
-static void tickle_handler()
-{
-  int sid;
-  
-  /* check status */
-  for (sid = 0; sid < children->nsessions; sid++) {
-    if (pap_ac[sid] == NULL || pap_ac[sid]->ac_state == ACSTATE_DEAD) 
-      continue;
-    
-    if (++pap_ac[sid]->ac_state >= ACSTATE_BAD) {
-      /* kill. if already dead, just continue */
-      if (kill( pap_ac[ sid ]->ac_pid, SIGTERM) == 0)
-       LOG(log_info, logtype_default, "pap_alrm: %d timed out",
-               pap_ac[ sid ]->ac_pid );
-
-      pap_ac[ sid ]->ac_state = ACSTATE_DEAD;
-      continue;
-    }
-
-    /* send off a tickle */
-    pap_tickle(server_pap, sid, &pap_ac[sid]->ac_sat);
-  }
-}
-
-static void child_cleanup(const pid_t pid)
-{
-  int i;
-
-  for (i = 0; i < children->nsessions; i++)
-    if (pap_ac[i] && (pap_ac[i]->ac_pid == pid)) {
-      pap_ac[i]->ac_state = ACSTATE_DEAD;
-      break;
-    }
-}
-
-
-/* kill children */
-void pap_kill(int sig)
-{
-  if (children) 
-    server_child_kill(children, CHILD_PAPFORK, sig);
-}
-
-
-/*
- * This call handles open, tickle, and getstatus requests. On a
- * successful open, it forks a child process. 
- * It returns an PAP to the child and parent and NULL if there is
- * an error.
- */
-PAP pap_slinit(PAP pap, server_child *server_children, 
-              const int tickleval)
-{
-    struct sigaction action;
-    struct itimerval timer;
-    struct sockaddr_at sat;
-    struct atp_block   atpb;
-    ATP                 atp;
-    struct iovec       iov[ 8 ];
-    pid_t               pid;
-    int                        i, sid;
-    u_short            paperr;
-
-    if (!pap->inited) {
-      if (!(children = server_children))
-       return NULL;
-
-      if ((pap_ac = (struct pap_child **) 
-          calloc(server_children->nsessions, sizeof(struct pap_child *)))
-          == NULL)
-       return NULL;
-
-      server_pap = pap;
-
-      /* install cleanup pointer */
-      server_child_setup(children, CHILD_PAPFORK, child_cleanup);
-
-      /* install tickle handler */
-      action.sa_handler = tickle_handler;
-      sigemptyset(&action.sa_mask);
-      action.sa_flags = SA_RESTART;
-
-      timer.it_interval.tv_sec = timer.it_value.tv_sec = tickleval;
-      timer.it_interval.tv_usec = timer.it_value.tv_usec = 0;
-      if ((setitimer(ITIMER_REAL, &timer, NULL) < 0) ||
-         (sigaction(SIGALRM, &action, NULL) < 0)) {
-       exit(1);
-      }
-
-      pap->inited = 1;
-    }
-                   
-    memset( &sat, 0, sizeof( struct sockaddr_at ));
-#ifdef BSD4_4
-    sat.sat_len = sizeof( struct sockaddr_at );
-#endif /* BSD4_4 */
-    sat.sat_family = AF_APPLETALK;
-    sat.sat_addr.s_net = ATADDR_ANYNET;
-    sat.sat_addr.s_node = ATADDR_ANYNODE;
-    sat.sat_port = ATADDR_ANYPORT;
-    atpb.atp_saddr = &sat;
-    atpb.atp_rreqdata = pap->cmdbuf;
-    atpb.atp_rreqdlen = sizeof( pap->cmdbuf );
-    while ( atp_rreq( pap->pap_atp, &atpb ) < 0 ) {
-      if ( errno == EINTR || errno == EAGAIN ) {
-       continue;
-      }
-      return( NULL );
-    }
-    
-    switch ( pap->cmdbuf[ 0 ] ) {
-    case PAPFUNC_TICKLE:
-      sid = pap->cmdbuf[1];
-      if ((pap_ac[sid] != NULL) && (pap_ac[sid]->ac_state != ACSTATE_DEAD))
-       pap_ac[sid]->ac_state = ACSTATE_OK;
-      break;
-
-    case PAPFUNC_STAT:
-#ifdef EBUG
-      printf( "pap stat\n" );
-#endif /* EBUG */
-      if ( pap->pap_slen > 0 ) {
-       pap->cmdbuf[0] = 0;
-       bcopy( pap->pap_status, pap->cmdbuf + 4, pap->pap_slen );
-       iov[ 0 ].iov_base = pap->cmdbuf;
-       iov[ 0 ].iov_len = 4 + pap->pap_slen;
-       atpb.atp_sresiov = iov;
-       atpb.atp_sresiovcnt = 1;
-       atp_sresp( pap->pap_atp, &atpb );
-      }
-      break;
-
-    case PAPFUNC_OPEN :
-      if (children->count < children->nsessions) {
-
-       /* find a slot */
-       for (sid = 0; sid < children->nsessions; sid++) {
-         if (pap_ac[sid] == NULL)
-           break;
-
-         if (pap_ac[sid]->ac_state == ACSTATE_DEAD) {
-           free(pap_ac[sid]);
-           pap_ac[sid] = NULL;
-           break;
-         }
-       }
-
-       if ((atp = atp_open(0)) == NULL) 
-         return NULL;
-
-       switch (pid = fork()) {
-       case 0 : /* child */
-         signal(SIGTERM, SIG_DFL);
-         signal(SIGHUP, SIG_DFL);
-         /* free/close some things */
-         for (i = 0; i < children->nsessions; i++ ) {
-           if ( pap_ac[i] != NULL )
-             free( pap_ac[i] );
-         }
-         free(pap_ac);
-         
-         server_child_free(children);
-         children = NULL;
-         atp_close(pap->pap_atp);
-
-         pap->child = 1;
-         pap->pap_atp = atp;
-         pap->pap_sat = sat;
-         pap->pap_wss = pap->cmdbuf[1];
-         pap->pap_seq = 0;
-         pap->pap_sid = sid;
-         pap->pap_flags = PAPFL_SSS;
-         return pap;
-         
-       case -1 : /* error */
-         pap->cmdbuf[ 0 ] = 0;
-         pap->cmdbuf[ 1 ] = 0;
-         paperr = PAPERR_SERVBUSY;
-         break;
-         
-       default : /* parent process */
-         switch (server_child_add(children, CHILD_PAPFORK, pid)) {
-         case 0: /* added child */
-           if (pap_ac[sid] = (struct pap_child *) 
-               malloc(sizeof(struct pap_child))) {
-             pap_ac[sid]->ac_pid = pid;
-             pap_ac[sid]->ac_state = ACSTATE_OK;
-             pap_ac[sid]->ac_sat = sat;
-             pap_ac[sid]->ac_sat.sat_port = pap->cmdbuf[1];
-             
-             pap->cmdbuf[0] = atp_sockaddr(atp)->sat_port;
-             pap->cmdbuf[1] = sid;
-             paperr = PAPERR_OK;
-             break;
-           } /* fall through if malloc fails */
-         case -1: /* bad error */
-           kill(pid, SIGQUIT); 
-           break;
-         default: /* non-fatal error */
-           break;
-         }
-         atp_close(atp);
-         break;
-       }
-       
-      } else {
-       pap->cmdbuf[0] = pap->cmdbuf[1] = 0;
-       paperr = PAPERR_SERVBUSY;
-      }
-
-      bcopy( &paperr, pap->cmdbuf + 2, sizeof( u_short ));
-      iov[ 0 ].iov_base = pap->cmdbuf;
-      iov[ 0 ].iov_len = 4;
-      atpb.atp_sresiov = iov;
-      atpb.atp_sresiovcnt = 1;
-      atp_sresp( pap->pap_atp, &atpb );
-      break;
-
-    default:
-      LOG(log_info, logtype_default, "PAPUnknown %d", pap->cmdbuf[0]);
-      break;
-    }
-
-    return pap;
-}
diff --git a/libatalk/pap/pap_tickle.c b/libatalk/pap/pap_tickle.c
deleted file mode 100644 (file)
index f3a89ff..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * $Id: pap_tickle.c,v 1.4 2002-01-04 04:45:48 sibaz Exp $
- *
- * send a tickle
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-void pap_tickle(PAP pap, const u_int8_t connid, struct sockaddr_at *sat)
-{
-  struct atp_block atpb; 
-  u_int8_t buf[PAP_HDRSIZ];
-
-  buf[ 0 ] = connid;
-  buf[ 1 ] = PAP_TICKLE;
-  buf[ 2 ] = buf[ 3 ] = 0;
-
-  atpb.atp_saddr = sat;
-  atpb.atp_sreqdata = buf;
-  atpb.atp_sreqdlen = sizeof(buf);     /* bytes in Tickle request */
-  atpb.atp_sreqto = 0;         /* retry timer */
-  atpb.atp_sreqtries = 1;      /* retry count */
-  if ( atp_sreq( pap->pap_atp, &atpb, 0, 0 ) < 0 ) {
-    LOG(log_error, logtype_default, "atp_sreq: %m");
-  }
-}