1 /* 2 * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 #include <stdio.h> 27 #include <string.h> 28 #include <stdlib.h> 29 30 #include "jni.h" 31 32 #include "npt.h" 33 34 #include "utf.h" 35 36 static int 37 version_check(char *version) 38 { 39 if ( version==NULL || strcmp(version, NPT_VERSION)!=0 ) { 40 return 1; 41 } 42 return 0; 43 } 44 45 JNIEXPORT void JNICALL 46 nptInitialize(NptEnv **pnpt, char *nptVersion, char *options) 47 { 48 NptEnv *npt; 49 50 (*pnpt) = NULL; 51 52 if ( version_check(nptVersion) ) { 53 NPT_ERROR("NPT version doesn't match"); 54 return; 55 } 56 57 npt = (NptEnv*)calloc(sizeof(NptEnv), 1); 58 if ( npt == NULL ) { 59 NPT_ERROR("Cannot allocate calloc space for NptEnv*"); 60 return; 61 } 62 63 if ( options != NULL ) { 64 npt->options = strdup(options); 65 } 66 npt->utfInitialize = &utfInitialize; 67 npt->utfTerminate = &utfTerminate; 68 npt->utf8ToPlatform = &utf8ToPlatform; 69 npt->utf8FromPlatform = &utf8FromPlatform; 70 npt->utf8ToUtf16 = &utf8ToUtf16; 71 npt->utf16ToUtf8m = &utf16ToUtf8m; 72 npt->utf16ToUtf8s = &utf16ToUtf8s; 73 npt->utf8sToUtf8mLength = &utf8sToUtf8mLength; 74 npt->utf8sToUtf8m = &utf8sToUtf8m; 75 npt->utf8mToUtf8sLength = &utf8mToUtf8sLength; 76 npt->utf8mToUtf8s = &utf8mToUtf8s; 77 78 (*pnpt) = npt; 79 } 80 81 JNIEXPORT void JNICALL 82 nptTerminate(NptEnv* npt, char *options) 83 { 84 85 /* FIXUP: options? Check memory or something? */ 86 if ( npt->options != NULL ) { 87 (void)free(npt->options); 88 } 89 (void)free(npt); 90 } 91