summaryrefslogtreecommitdiff
path: root/usr/src/lib/libkmsagent/common/KMSAgent_direct.h
diff options
context:
space:
mode:
authorJohn Sonnenschein <johns@joyent.com>2012-05-17 18:26:57 +0000
committerJohn Sonnenschein <johns@joyent.com>2012-05-17 18:26:57 +0000
commit04b244dd661c24b510ac22936decfc0972d202d3 (patch)
tree3ebfef98afc303fddf3415d6fba64e8682f495e8 /usr/src/lib/libkmsagent/common/KMSAgent_direct.h
parenteac250589e41f1b705e1b7427b02b3379aac9f9e (diff)
parenta69187741b83640a90dd8586195456dd50c016a8 (diff)
downloadillumos-joyent-20120517.tar.gz
Merge git.joyent.com:illumos-joyent20120517
Diffstat (limited to 'usr/src/lib/libkmsagent/common/KMSAgent_direct.h')
-rw-r--r--usr/src/lib/libkmsagent/common/KMSAgent_direct.h942
1 files changed, 0 insertions, 942 deletions
diff --git a/usr/src/lib/libkmsagent/common/KMSAgent_direct.h b/usr/src/lib/libkmsagent/common/KMSAgent_direct.h
deleted file mode 100644
index e33322a5dd..0000000000
--- a/usr/src/lib/libkmsagent/common/KMSAgent_direct.h
+++ /dev/null
@@ -1,942 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
- */
-
-/**
- * \file direct.h
- *
- * This file is included in KMSAgentStorage.cpp to provide file handling
- * hooks. It also contains our EEPROM file handling functions.
- *
- * HISTORY:
- * 8/6/07 BJB Added code for 9840D encryption sectors
- * 4/7/08 BJB Changed to remove 'file is junk' message - EVT
- * didn't like it.
- * 4/24/08 BJB Added function call back to T10000/9840D code
- * to lookup eeprom address -
- * so it isn't a hardcoded value.
- * 05/09/08 BJB Added being more conservative about EEPROM so as to change
- * frequency of 32CA problems
- *
- */
-
-
-#ifndef KMSAGENT_DIRECT_H
-#define KMSAGENT_DIRECT_H
-
-#include <stdio.h>
-#include <string.h>
-
-#ifdef WIN32
-#include <direct.h>
-#endif
-
-#define my_unlink(a) unlink(a)
-#define my_rmdir(a) rmdir(a)
-
-#ifndef METAWARE
-
-#define myFILE FILE
-
-#else // METAWARE
-
-#include "SYSCommon.h"
-#include "debug.h"
-#include <snprintf.h>
-
-extern "C" void ecpt_trace_msg(ECPT_TRACE_ENTRY*,const char*,...);
-
-extern char st[256];
-
-
-#ifndef I_KNOW_REAL_NAMES
-#undef fopen
-#undef fclose
-#undef fputs
-#undef fgets
-#undef fwrite
-#undef fread
-#undef unlink
-#undef rmdir
-
-#define fopen my_eeprom_fopen
-#define fclose my_eeprom_fclose
-#define fputs my_eeprom_fputs
-#define fwrite my_eeprom_fwrite
-#define fread my_eeprom_fread
-#define fgets my_eeprom_fgets
-#define unlink my_eeprom_unlink
-#define rmdir my_eeprom_rmdir
-
-#define my_eeprom_rmdir(a) (1)
-
-#endif
-
-
-#include "KMSClientProfile.h"
-extern char KMSAgent_Version[KMS_MAX_VERSION_LENGTH];
-
-unsigned char volatile* eeprom_addr_lookup_FILESYSTEM_START_ADDR(void);
-unsigned int EEPROM_Sector_size(void);
-
-#define FILESYSTEM_SECTOR (eeprom_addr_lookup_FILESYSTEM_START_ADDR())
-// was ((unsigned char volatile*)0xf20000) on 9840
-// was ((unsigned char volatile*)0x41dc0000) on T10000
-
-#define FILESYSTEM_SECTOR_SIZE (EEPROM_Sector_size())
-// was hardcoded 0x20000
-
-#define EEPROM_ERASED_BYTE 0xFF
-
-/* size of a file allowed (not counting the name) */
-#define EEPROM_FILE_SECT_SIZE 0x1800
-
-/* size of a file name allowed (+ the null) */
-#define EEPROM_FNAME_SIZE 0x80
-
-// 1000h = 4096d
-#define EEPROM_BLOCK_SIZE (EEPROM_FILE_SECT_SIZE - EEPROM_FNAME_SIZE - 4)
-
-/* number of 'files' available */
-#define FTABLE_SIZE 0x5
-
-
-#define UCHAR8 unsigned char
-#define UINT32 unsigned long
-
-
-extern "C" unsigned long
-EEPROM_Sector_Erase( unsigned char volatile *sector_address );
-
-extern "C" unsigned long
-Flash_Write( UCHAR8 *destinationP,
- UCHAR8 *sourceP,
- UINT32 byteCount);
-
-extern "C" unsigned long
-Flash_Read( UCHAR8 *dstP,
- UCHAR8 *srcP,
- UINT32 byteCount);
-
-/* a eeprom file */
-struct eepromBlockStruct
-{
- unsigned long fsize;
- char fname[EEPROM_FNAME_SIZE];
- unsigned char fdata[EEPROM_BLOCK_SIZE];
-};
-
-
-struct fileSystem
-{
- struct eepromBlockStruct ftable[FTABLE_SIZE];
- /* what level of toolkit wrote this - for
- future compatibility */
- char writingversion[KMS_MAX_VERSION_LENGTH+1];
-};
-
-
-#define MODE_WRITE 0x01
-#define MODE_READ 0x02
-
-#define MYFILE_CLOSED 0x0
-#define MYFILE_OPEN_READ 0x1
-#define MYFILE_OPEN_WRITE 0x2
-
-
-/* an open file */
-typedef struct fileStruct
-{
- unsigned char *readptr;
- unsigned long readsize;
- unsigned char *writeptr;
- struct eepromBlockStruct *memptr;
- unsigned long mode;
- unsigned long file_number;
-} myFILE;
-
-
-extern "C" myFILE *my_eeprom_fopen (const char *filename, const char *mode);
-extern "C" int my_eeprom_fclose (myFILE *stream);
-extern "C" int my_eeprom_fputs (const char *s, myFILE *stream);
-extern "C" int my_eeprom_fwrite (const char *s, int size, int nobj, myFILE *f);
-extern "C" int my_eeprom_fread (char *s, int size, int nobj, myFILE *f);
-extern "C" char *my_eeprom_fgets (char *s, int n, myFILE *stream);
-extern "C" int my_eeprom_unlink (const char *filename);
-extern "C" int my_eeprom_fsys_erase(void);
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifdef DEFINE_STORAGE
-/* ram copy of the file system */
-struct fileSystem ramFileSystem;
-int file_read = FALSE;
-
-/* file state - open/closed/etc */
-unsigned long fstate[FTABLE_SIZE] = {MYFILE_CLOSED,
- MYFILE_CLOSED,
- MYFILE_CLOSED,
- MYFILE_CLOSED,
- MYFILE_CLOSED};
-#else
-/* ram copy of the file system */
-extern struct fileSystem ramFileSystem;
-extern int file_read;
-
-/* file state - open/closed/etc */
-extern unsigned long fstate[FTABLE_SIZE];
-
-#endif
-
-
-
-#ifdef DEFINE_STORAGE
-
-
-extern "C" unsigned long
-
-
-/* UNIT TEST */
-int TESTV = 0;
-
-/* UNIT TEST */
-#define MY_FLASH_READ(a,b,c) \
- Flash_Read(a,b,c); \
- if (TESTV++ < 5) { \
- ramFileSystem.ftable[0].fname[0] = EEPROM_ERASED_BYTE; \
- ramFileSystem.ftable[1].fsize = EEPROM_BLOCK_SIZE+1; \
- }
-
-
-
-/**
- * my_eeprom_fopen()
- * my filesystem fileopen
- */
-extern "C" myFILE *my_eeprom_fopen(const char *filename, const char *mode)
-{
- int i;
- myFILE *file;
- int open_for_write = TRUE;
- static int Firsttime = TRUE;
- int retries = 100;
-
- ECPT_TRACE_ENTRY *trace = NULL;
- ECPT_TRACE( trace, my_eeprom_fopen ) ;
- ecpt_trace_msg( trace, "file %s", (char*)filename);
-
- FATAL_ASSERT(filename);
- FATAL_ASSERT(mode);
-
- if ( (strcmp(mode,"wb") == 0) ||
- (strcmp(mode,"w") == 0))
- {
- // write
- open_for_write = TRUE;
- }
- else if ( (strcmp(mode,"r") == 0) ||
- (strcmp(mode,"rb") == 0) )
- {
- // read binary
- open_for_write = FALSE;
- }
- else
- {
- FATAL_APPLICATION_STATE("my_eeprom_fopen : Illegal mode");
- }
-
- /* read the file table from eeprom? */
- if (!file_read)
- {
- RETRY:
-
- MY_FLASH_READ((unsigned char *)&ramFileSystem,
- (unsigned char *)FILESYSTEM_SECTOR,
- sizeof(ramFileSystem));
-
- /* Audit the filesystem - if it looks junked, reclaim bad files */
-
- for (i=0; i < FTABLE_SIZE; i++)
- {
- if ( (ramFileSystem.ftable[i].fname[0] == EEPROM_ERASED_BYTE) ||
- (ramFileSystem.ftable[i].fsize > EEPROM_BLOCK_SIZE) )
- {
- /* if this looks bad, don't accept this outcome until
- 100 retries */
- if (retries-- > 0)
- {
- ecpt_trace_msg( trace, "file was junk - retrying %s", (char*)filename);
- log_error_printf(
- "KMSAgent_direct::fopen file %d is junk - (name %x, "
- "size %x, data %x) RETRYING \n",
- i,
- ramFileSystem.ftable[i].fname[0],
- ramFileSystem.ftable[i].fsize ,
- ramFileSystem.ftable[i].fdata[0]);
-
- goto RETRY;
- }
- else
- {
- ecpt_trace_msg( trace, "file was junk - formatting %s", (char*)filename);
- log_error_printf(
- "KMSAgent_direct::fopen file %d is junk - (name %x, "
- "size %x, data %x) formatting it\n",
- i,
- ramFileSystem.ftable[i].fname[0],
- ramFileSystem.ftable[i].fsize ,
- ramFileSystem.ftable[i].fdata[0]);
-
- /* set data to reasonable starting values */
- ramFileSystem.ftable[i].fname[0] = 0;
- ramFileSystem.ftable[i].fsize = 0;
- ramFileSystem.ftable[i].fdata[0] = 0;
- }
-
- }
-
- } /* for */
-
- file_read = TRUE;
-
- } /* !file read */
-
- /* read the file table */
- for (i=0; i < FTABLE_SIZE; i++)
- {
- /* compare filename to ram copy filename */
- if (strcmp(filename, (const char *)ramFileSystem.ftable[i].fname) == 0)
- {
-
- if (fstate[i] != MYFILE_CLOSED)
- {
- log_printf("KMSAgent_direct::fopen FN=%s file matches, "
- "FILE %d WAS ALREADY OPEN for %s with mode %s"
- "file size is %d \n",
- filename,
- i,
- (fstate[i] == MYFILE_OPEN_WRITE ? "WRITE": "READ"),
- mode,
- ramFileSystem.ftable[i].fsize);
- }
-
- /* create a new ramfile handle */
- file = malloc(sizeof(myFILE));
-
- /* since file is being rewritten, it is now size 0 */
- if (open_for_write)
- ramFileSystem.ftable[i].fsize = 0;
-
- /* remember the file is open */
- fstate[i]= open_for_write ? MYFILE_OPEN_WRITE : MYFILE_OPEN_READ;
-
-
- /* if filename matches, set file pointers to it */
- file->writeptr = file->readptr = ramFileSystem.ftable[i].fdata;
- file->memptr = &ramFileSystem.ftable[i];
- file->readsize = 0;
- file->mode = open_for_write ? MODE_WRITE : MODE_READ;
- file->file_number = i;
-
-
- log_printf("KMSAgent_direct::fopen FN=%s file matches, "
- "opening existing file number %d with mode %s"
- "file size is %d \n",
- filename,
- i,
- mode,
- ramFileSystem.ftable[i].fsize);
-
- break;
- }
-
- }
-
- /* if no existing entry was found, assign a new entry to this filename */
- if (i == FTABLE_SIZE)
- {
- /* couldn't find an old file and opened for read so return NULL */
- if (open_for_write == FALSE)
- {
-
-
- log_printf("KMSAgent_direct::fopen FN=%s no file match, "
- "file opened for read so return NULL %d\n",
- filename,
- i);
-
-
- return NULL;
- }
-
- /* find a free file pointer */
- for (i=0; i < FTABLE_SIZE ; i++)
- {
- /* empty data will be 0xffffffff since it was copied
- straight from EEPROM */
- if (ramFileSystem.ftable[i].fname[0] == '\0')
- {
- log_printf("KMSAgent_direct::fopen FN=%s no file match, "
- "opening new file %d\n",
- filename,
- i);
-
- /* give it a filename - marks this as in use */
- strcpy ((char *)ramFileSystem.ftable[i].fname, filename);
-
- /* set filesize to zero */
- ramFileSystem.ftable[i].fsize = 0;
-
- /* remember the file is open */
- fstate[i]= open_for_write ? MYFILE_OPEN_WRITE : MYFILE_OPEN_READ;
-
-
- /* create a new ramfile handle */
- file = malloc(sizeof(myFILE));
-
- /* if filename matches, set file pointers to it */
- file->writeptr = file->readptr = ramFileSystem.ftable[i].fdata;
- file->memptr = &ramFileSystem.ftable[i];
- file->readsize = 0;
- file->mode = open_for_write ? MODE_WRITE : MODE_READ;
- file->file_number = i;
-
- break;
- }
-
- }
-
- if (i == FTABLE_SIZE)
- {
- log_error_printf("KMSAgent_direct::fopen FN=%s no free files \n",
- filename);
- /* no free entries - bail */
- return NULL;
- }
-
- }
-
- /* return pointer to the myFILE struct created */
- return file;
-
-}
-
-/**
- * my_eeprom_fclose()
- * my filesystem fileclose
- */
-extern "C" int my_eeprom_fclose(myFILE *f)
-{
- ECPT_TRACE_ENTRY *trace = NULL;
- ECPT_TRACE( trace, my_eeprom_fclose ) ;
- ecpt_trace_msg( trace, "entered");
-
- FATAL_ASSERT(f);
-
-#ifdef DEBUG
- log_printf("KMSAgent_direct::fclose FN=%s, "
- "FILE %d "
- "file size is %d \n",
- ramFileSystem.ftable[f->file_number].fname,
- f->file_number,
- ramFileSystem.ftable[f->file_number].fsize);
-#endif
-
- if (fstate[f->file_number] == MYFILE_CLOSED)
- {
- log_error_printf("KMSAgent_direct::fclose FN=%s, "
- "FILE %d WAS ALREADY CLOSED "
- "file size is %d \n",
- ramFileSystem.ftable[f->file_number].fname,
- f->file_number,
- ramFileSystem.ftable[f->file_number].fsize);
- }
-
- /* remember the file is closed */
- fstate[f->file_number]= MYFILE_CLOSED;
-
- /* don't rewrite eeprom unless file was opened for writing */
- if (f->mode == MODE_WRITE)
- {
- /* Erase the sector we are rewriting */
- EEPROM_Sector_Erase( (unsigned char*)FILESYSTEM_SECTOR ) ;
-
- /* remember the version of toolkit that wrote this filesystem
- (for any future compatibility problems). */
- strncpy(ramFileSystem.writingversion,
- KMSAgent_Version,
- sizeof(KMSAgent_Version));
-
- /* flush the memory indicated by myFILE * out to EEPROM */
- /* see boot_eeprom.c for details on Flash_Write */
- Flash_Write ((unsigned char*)FILESYSTEM_SECTOR,
- (unsigned char*)&ramFileSystem,
- FILESYSTEM_SECTOR_SIZE);
- }
-
- /* delete the placeholder file */
- free(f);
-
- return 0;
-}
-
-/**
- * my_eeprom_fputs()
- * my filesystem put string
- */
-extern "C" int my_eeprom_fputs(const char *s, myFILE *f)
-{
- /* put the string to the memory indicated by myFILE */
- int i;
- ECPT_TRACE_ENTRY *trace = NULL;
- ECPT_TRACE( trace, my_eeprom_fputs ) ;
-
- ecpt_trace_msg (trace, "\nmy_eeprom_fputs : Entered");
-
-#ifdef DEBUG
- log_printf(
- "\nKMSAgent_direct::my_eeprom_fputs "
- "f->writeptr =%x "
- "f->readptr=%x "
- "f->readsize=%x "
- "f->memptr=%x"
- "f->memptr->fsize=%x\n",
- f->writeptr,
- f->readptr,
- f->readsize,
- f->memptr,
- f->memptr->fsize);
-
-#endif
-
- FATAL_ASSERT(s);
- FATAL_ASSERT(f);
-
- for (i=0;;i++)
- {
- /* end of input string? quit */
- if (*s == '\0')
- break;
-
- /* end of max file memory, quit */
- if ((unsigned char*)s >=
- (unsigned char*)(f->memptr + sizeof(struct eepromBlockStruct)))
- break;
-
- /* copy */
- *(f->writeptr) = *s++;
- f->writeptr++;
-
- /* increment the filesize */
- f->memptr->fsize += 1;
-
- }
-
-#ifdef DEBUG
- log_printf(
- "\nKMSAgent_direct::fputs wrote %d chars, "
- "filesize is %d\n",
- i,
- f->memptr->fsize );
-#endif
-
- /* return how many chars were written */
- return i;
-}
-
-
-/**
- * my_eeprom_fwrite()
- * my filesystem put string
- */
-extern "C" int my_eeprom_fwrite(const char *s,
- int size,
- int nobj,
- myFILE *f)
-{
- /* put the string to the memory indicated by myFILE */
- int i,j;
-
- ECPT_TRACE_ENTRY *trace = NULL;
- ECPT_TRACE( trace, my_eeprom_fwrite ) ;
- ecpt_trace_msg ( trace, "Entered");
-
- log_printf(
- "\nKMSAgent_direct::my_eeprom_fputs "
- "f->writeptr =%x "
- "f->readptr=%x "
- "f->readsize=%x "
- "f->memptr=%x"
- "f->memptr->fsize=%x\n",
- f->writeptr,
- f->readptr,
- f->readsize,
- f->memptr,
- f->memptr->fsize);
-
- FATAL_ASSERT(s);
- FATAL_ASSERT(f);
- FATAL_ASSERT((size*nobj) > 0);
-
- for (i=0; i<nobj; i++)
- {
- for (j=0; j<size; j++)
- {
- /* end of max file memory, quit */
- if ((unsigned char*)s >=
- (unsigned char*)(f->memptr + sizeof(struct eepromBlockStruct)))
- goto DONE;
-
- /* copy */
- *(f->writeptr) = *s++;
- f->writeptr++;
-
- /* increment the filesize */
- f->memptr->fsize += 1;
- }
-
- }
-
- DONE:
-
-
-#ifdef DEBUG
- log_printf(
- "\nKMSAgent_direct::fwrite wrote %d chars, "
- "filesize is %d\n",
- i,
- f->memptr->fsize );
-#endif
-
- /* return how many objects were written */
- return i;
-}
-
-
-
-/**
- * my_eeprom_fgets()
- * my filesystem getstring
- */
-extern "C" char *my_eeprom_fgets(char *s, int n, myFILE *f)
-{
- /* put the string to the memory indicated by myFILE */
- int i;
- char *tmp = s;
-
- ECPT_TRACE_ENTRY *trace = NULL;
- ECPT_TRACE( trace, my_eeprom_fgets ) ;
- ecpt_trace_msg (trace, "entered");
-
- FATAL_ASSERT(s);
- FATAL_ASSERT(n > 0);
- FATAL_ASSERT(f);
-
-#ifdef DEBUG
- log_printf(
- "\nKMSAgent_direct::my_eeprom_fgets from file %s "
- "fileptr %x "
- "readptr = %x "
- "readsize = %d "
- "filesize = %d \n",
- f->memptr->fname,
- f,
- f->readptr,
- f->readsize,
- f->memptr->fsize);
-#endif
-
- /* get up to n-1 (and a \0) chars */
- for (i=0; i < n; i++)
- {
- /* end of read line? quit */
- if (*f->readptr == '\n')
- {
- /* increment the number of bytes read */
- f->readptr++;
- f->readsize++;
- break;
- }
-
- /* trying to read beyond what was written? quit */
- if (f->readsize >
- f->memptr->fsize)
- {
-#ifdef DEBUG
- log_printf(
- "\nKMSAgent_direct::fgets eof after %d chars, "
- "readsize is %d "
- "filesize is %d\n",
- i,
- f->readsize,
- f->memptr->fsize);
-#endif
- return NULL;
- }
-
- /* trying to read beyond max file memory, quit */
- if ((unsigned char*)f->readptr >=
- (unsigned char*)(f->memptr + sizeof(struct eepromBlockStruct)))
- {
-#ifdef DEBUG
- log_printf(
- "\nKMSAgent_direct::fgets end of max file after %d chars "
- "readsize is %d "
- "filesize is %d\n",
- i,
- f->readsize,
- f->memptr->fsize);
-#endif
- /* EOF or error is signalled by NULL return */
- return NULL;
- }
-
- /* copy a char */
- *tmp++ = *f->readptr;
-
- /* increment the number of bytes read */
- f->readptr++;
- f->readsize++;
-
- } /* for */
-
- /* terminate the returned string with a 0, but not a \n */
- *tmp='\0';
-
-#ifdef DEBUG
- /* terminate returned string after a non-absurd number of chars
- */
- log_printf(
- "\nKMSAgent_direct::fgets string [%s] "
- "end of line after %d chars "
- "readsize is %d "
- "filesize is %d\n",
- s,
- i,
- f->readsize,
- f->memptr->fsize);
-#endif
-
- /* on success, return the original pointer */
- return s;
-}
-
-
-
-
-/**
- * my_eeprom_fread()
- * my filesystem read a file
- */
-extern "C" int my_eeprom_fread(char *s, int size, int nobj, myFILE *f)
-{
- /* put the string to the memory indicated by myFILE */
- int i,j;
-
- ECPT_TRACE_ENTRY *trace = NULL;
- ECPT_TRACE( trace, my_eeprom_fread ) ;
- ecpt_trace_msg (trace, "entered");
-
- FATAL_ASSERT(s);
- FATAL_ASSERT(f);
- FATAL_ASSERT((size*nobj) > 0);
-
- for (i=0; i<nobj; i++)
- {
- for (j=0; j<size; j++)
- {
- /* end of written file memory, quit */
- if ( (unsigned char*) s >=
- (unsigned char*) (f->memptr + f->memptr->fsize) )
- goto DONE;
-
- /* copy */
- *s++ = *(f->readptr);
- f->readptr++;
- }
-
- }
-
- DONE:
-
-#ifdef DEBUG
- log_printf(
- "\nKMSAgent_direct::fread read %d chars, "
- "filesize is %d\n",
- i,
- f->memptr->fsize );
-#endif
-
- /* return how many objects were written */
- return i;
-
-}
-
-
-
-
-
-
-/**
- * my_eeprom_unlink() - delete the file named
- */
-extern "C" int my_eeprom_unlink(const char *filename)
-{
- int i;
-
- ECPT_TRACE_ENTRY *trace = NULL;
- ECPT_TRACE( trace, my_eeprom_fgets ) ;
- ecpt_trace_msg (trace, "Entered fn=%s", (char*)filename);
-
- /* assume the file is closed */
- FATAL_ASSERT(filename);
-
- /* read the file table */
- for (i=0; i < FTABLE_SIZE; i++)
- {
-
- if (fstate[i] != MYFILE_CLOSED)
- {
- log_error_printf("KMSAgent_direct::unlink FN=%s file matches, "
- "FILE %d WAS STILL OPEN for %s"
- "file size is %d \n",
- filename,
- i,
- (fstate[i] == MYFILE_OPEN_WRITE ? "WRITE": "READ"),
- ramFileSystem.ftable[i].fsize);
- }
-
- /* compare input filename to ram copy filename */
- if (strcmp(filename, (const char*)ramFileSystem.ftable[i].fname) == 0)
- {
- /* if filename matches, zero it out to delete the file */
- ramFileSystem.ftable[i].fname[0] = '\0';
- ramFileSystem.ftable[i].fsize = 0;
- ramFileSystem.ftable[i].fdata[0] = 1;
-
- /* remember the file is closed */
- fstate[i]= MYFILE_CLOSED;
-
- EEPROM_Sector_Erase( FILESYSTEM_SECTOR ) ;
-
- /* remember the version of toolkit that wrote this filesystem
- (for any future compatibility problems). */
- strncpy(ramFileSystem.writingversion,
- KMSAgent_Version,
- sizeof(KMSAgent_Version));
-
- /* flush the memory indicated by myFILE * out to EEPROM */
- Flash_Write ((unsigned char*)FILESYSTEM_SECTOR,
- (unsigned char*)&ramFileSystem,
- FILESYSTEM_SECTOR_SIZE);
-
- break;
- }
-
- }
-
-#ifdef DEBUG
- log_printf ("my_eeprom_unlink : returning");
-#endif
-
- if (i == FTABLE_SIZE)
- return -1;
-
- /* success */
- return 0;
-}
-
-
-/**
- * my_eeprom_fsys_erase() - delete all files
- */
-extern "C" int my_eeprom_fsys_erase(void)
-{
- int i;
-
- ECPT_TRACE_ENTRY *trace = NULL;
- ECPT_TRACE( trace, my_eeprom_fread ) ;
- ecpt_trace_msg (trace, "my_eeprom_fsys_erase : entering ");
-
- /* read the file table */
- for (i=0; i < FTABLE_SIZE; i++)
- {
- if (fstate[i] != MYFILE_CLOSED)
- {
- log_error_printf("KMSAgent_direct::fsys_erase FN=%s file "
- "FILE %d WAS STILL OPEN for %s "
- "file size is %d \n",
- ramFileSystem.ftable[i].fname,
- i,
- (fstate[i] == MYFILE_OPEN_WRITE ? "WRITE": "READ"),
- ramFileSystem.ftable[i].fsize);
- }
-
- /* zero filename out to delete the file */
- ramFileSystem.ftable[i].fname[0] = '\0';
- ramFileSystem.ftable[i].fsize = 0;
- ramFileSystem.ftable[i].fdata[0] = 2;
-
- /* remember the file is closed */
- fstate[i]= MYFILE_CLOSED;
-
- EEPROM_Sector_Erase( FILESYSTEM_SECTOR ) ;
-
- /* remember the version of toolkit that wrote this filesystem
- (for any future compatibility problems). */
- strncpy(ramFileSystem.writingversion,
- KMSAgent_Version,
- sizeof(KMSAgent_Version));
-
- /* flush the memory indicated by myFILE * out to EEPROM */
- Flash_Write ((unsigned char*)FILESYSTEM_SECTOR,
- (unsigned char*)&ramFileSystem,
- FILESYSTEM_SECTOR_SIZE);
-
-
- }
-
-#ifdef DEBUG
- log_printf ("\nmy_eeprom_fsys_erase : returning");
-#endif
-
- if (i == FTABLE_SIZE)
- return -1;
-
- /* success */
- return 0;
-}
-
-
-
-
-#endif // DEFINE_STORAGE
-#endif // METAWARE
-#endif
-