13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/
23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* module:          List of SyncML Instances                             */
33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*                                                                       */
43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* file:            mgrinstancelist.c                                    */
53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* target system:   all                                                  */
63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* target OS:       all                                                  */
73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*                                                                       */
83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Description:                                                          */
93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* This module handles an element list of type InstanceInfo. Each        */
103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* element is identified by the InstanceID. There are functions provided */
113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* to add, find and remove InstanceInfo elements.                        */
123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* This file is private to the core module. The InstanceInfo list is     */
133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* used by the Modules MGR, MGRCmdDispatcher, MGRCmdBuilder              */
143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* and MGRInstanceMgr.                                                   */
153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/
163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*
183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright Notice
193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright (c) Ericsson, IBM, Lotus, Matsushita Communication
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Industrial Co., Ltd., Motorola, Nokia, Openwave Systems, Inc.,
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Palm, Inc., Psion, Starfish Software, Symbian, Ltd. (2001).
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * All Rights Reserved.
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Implementation of all or part of any Specification may require
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * licenses under third party intellectual property rights,
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * including without limitation, patent rights (such a third party
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * may or may not be a Supporter). The Sponsors of the Specification
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * are not responsible and shall not be held responsible in any
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * manner for identifying or failing to identify any or all such
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * third party intellectual property rights.
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * THIS DOCUMENT AND THE INFORMATION CONTAINED HEREIN ARE PROVIDED
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * ON AN "AS IS" BASIS WITHOUT WARRANTY OF ANY KIND AND ERICSSON, IBM,
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO. LTD, MOTOROLA,
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * NOKIA, PALM INC., PSION, STARFISH SOFTWARE AND ALL OTHER SYNCML
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * SPONSORS DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * SHALL ERICSSON, IBM, LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO.,
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * LTD, MOTOROLA, NOKIA, PALM INC., PSION, STARFISH SOFTWARE OR ANY
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * OTHER SYNCML SPONSOR BE LIABLE TO ANY PARTY FOR ANY LOSS OF
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PROFITS, LOSS OF BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * BUSINESS, OR FOR DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL,
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PUNITIVE OR CONSEQUENTIAL DAMAGES OF ANY KIND IN CONNECTION WITH
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * THIS DOCUMENT OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * The above notice and this paragraph must be included on all copies
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * of this document that are made.
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *  Definitions
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *************************************************************************/
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Include Headers */
623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <smlerr.h>
633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "libmem.h"
643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "liblock.h"
653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "mgr.h"
663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef __SML_LITE__  /* Only ONE instance is supported in the Toolkit lite version */
683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef NOWSM /* only need if we are using workspace manager */
703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Used external functions */
733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySyncMLInfoPtr_t mgrGetSyncMLAnchor(void);
743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyInstanceInfoPtr_t mgrGetInstanceListAnchor(void);
753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid mgrSetInstanceListAnchor(InstanceInfoPtr_t newListAnchor);
763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* SyncML internal function prototypes */
793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t addInfo(InstanceInfoPtr_t pInfo);
803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyInstanceInfoPtr_t findInfo(InstanceID_t id);
813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t removeInfo(InstanceID_t id);
823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Private function prototypes */
853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************
923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *  SyncML internal functions
933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *************************************************************************/
943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION:
983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Adds a new element to the list
993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:        InstanceInfoPtr_t
1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *            pointer to the structure to be be added to list
1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:    Return value,
1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *            SML_ERR_OK if element was added successfully
1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t addInfo(InstanceInfoPtr_t pInfo)
1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (pInfo!=NULL)
1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    InstanceInfoPtr_t _pTmp;
1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    LOCKTOOLKIT("addInfo");
1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    /* Remember old beginning of the list */
1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    _pTmp=mgrGetInstanceListAnchor();
1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    /* insert element immediately after anchor */
1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    mgrSetInstanceListAnchor(pInfo);      // anchor of list points now to new info element
1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pInfo->nextInfo=_pTmp;                // Next info element is the prior first one.
1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    RELEASETOOLKIT("addInfo");
1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SML_ERR_OK;
1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    } else {                              // Invalid InstanceInfo pointer was used (NULL)
1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SML_ERR_MGR_INVALID_INSTANCE_INFO;
1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION:
1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Searches an element with the given InstanceID in the list
1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:        InstanceID_t
1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *            ID of the InstanceInfo structure to be retrieved
1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:    InstanceInfoPtr_t
1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *            Pointer to the InstanceInfo structure with the given ID
1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *            NULL, if no InstanceInfo with the given ID has been found
1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyInstanceInfoPtr_t findInfo(InstanceID_t id)
1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  InstanceInfoPtr_t _pTmp;                // A helper pointer
1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* go through the list until end */
1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  LOCKTOOLKIT("findInfo");
1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  for (_pTmp=mgrGetInstanceListAnchor(); _pTmp!=NULL; _pTmp=_pTmp->nextInfo)
1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  {
1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (_pTmp->id == id) {
1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      RELEASETOOLKIT("findInfo");
1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      return _pTmp;                       // STOP, we've found the info, return!
1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  RELEASETOOLKIT("findInfo");
1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return NULL;                            // Info was not found, return NULL
1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION:
1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Removes an element with the given InstanceID from the list
1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:        InstanceID_t
1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *            ID of the InstanceInfo structure to be removed
1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:    Return value,
1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *            SML_ERR_OK if element was removed successfully
1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t removeInfo(InstanceID_t id)
1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  InstanceInfoPtr_t _pTmp;               // A helper pointer
1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  InstanceInfoPtr_t _pRemember;          // A helper pointer
1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  LOCKTOOLKIT("removeInfo");
1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* Remember current anchor */
1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  _pRemember=mgrGetInstanceListAnchor();
1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* special check, if list is empty */
1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (_pRemember==NULL ) {
1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    RELEASETOOLKIT("removeInfo");
1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SML_ERR_MGR_INVALID_INSTANCE_INFO;
1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* special check, if first element should be removed */
1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (_pRemember->id == id)
1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // It's the first element, update anchor!
1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    mgrSetInstanceListAnchor(_pRemember->nextInfo);
2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    //freeInfo(_pRemember); // Delete structure, free memory
2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    RELEASETOOLKIT("removeInfo");
2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SML_ERR_OK;                    // return
2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* go through the list until end */
2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  for (_pTmp=_pRemember->nextInfo; _pTmp!=NULL; _pTmp=_pTmp->nextInfo)
2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (_pTmp->id == id)                  // STOP, we've found the info
2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      {
2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      _pRemember->nextInfo=_pTmp->nextInfo;
2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      //freeInfo(_pTmp);  // Delete structure, free memory
2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      RELEASETOOLKIT("removeInfo");
2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      return SML_ERR_OK;                  // return
2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      } else {
2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      _pRemember=_pTmp;                   // update helper pointer
2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      }
2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  RELEASETOOLKIT("removeInfo");
2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return SML_ERR_MGR_INVALID_INSTANCE_INFO;  // Info wasn't found
2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif // !defined(NOWSM)
2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
234