00001
00002
00003
00004
00005
00006
00007 #ifdef USE_STD
00008 #include <string>
00009 using namespace std;
00010 #else
00011 #include <string.h>
00012 #endif
00013
00014 #include "DCFutility.h"
00015
00016 void inttohex( int num, char* ptc, int len ) {
00017 const char* hexdigit="0123456789ABCDEF";
00018 char* pttmp=(char*)(&num);
00019 unsigned char c;
00020 int j=0;
00021
00022 for(int i = 0; i < min( len, int(sizeof(int) ) ); i++ ) {
00023 #ifdef STORM_RS6000_AIX
00024 c=pttmp[ sizeof(int) - len + i ];
00025 #endif
00026 #ifdef STORM_x86_LINUX
00027 c=pttmp[ len - 1 - i ];
00028 #endif
00029 #ifdef STORM_SGI_IRIX
00030 c=pttmp[ sizeof(int) - len + i ];
00031 #endif
00032 ptc[j++] = hexdigit[ int( ( c & 0xF0 ) >> 4 ) ];
00033 ptc[j++] = hexdigit[ int( ( c & 0x0F ) ) ];
00034 }
00035
00036 ptc[j]='\0';
00037 };
00038
00039 void dcfsbfilename(
00040 int const superblocknum,
00041 string& filenamebase,
00042 string& filenamesb
00043 )
00044 {
00045 char *ctmp = new char[2*2+1];
00046 inttohex( superblocknum, ctmp, 2 );
00047 filenamesb = filenamebase + ".sb" + ctmp + ".dcf";
00048 };
00049
00050 void dcfmbfilename(
00051 const int blocknum,
00052 const int m,
00053 const string& filenamebase,
00054 string& mbfilename
00055 )
00056 {
00057 char *ctmp1 = new char[2*2+1];
00058 char *ctmp2 = new char[2*1+1];
00059 inttohex( blocknum, ctmp1, 2 );
00060 inttohex( m, ctmp2, 1 );
00061 mbfilename = filenamebase + ".mb" + ctmp1 + "." + ctmp2 + ".dcf";
00062 };
00063
00064 void dcfdbfilename(
00065 const int blocknum,
00066 const string& filenamebase,
00067 string& dbfilename
00068 )
00069 {
00070 char *ctmp = new char[2*2+1];
00071 inttohex( blocknum, ctmp, 2 );
00072 dbfilename = filenamebase + ".db" + ctmp + ".dcf";
00073 };
00074
00075
00076 void dcflogfilename(
00077 const string& filenamebase,
00078 string& filenamelog
00079 )
00080 {
00081 filenamelog = filenamebase + ".log.dcf";
00082 }
00083