public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: scox@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Add test for Environ. Date: Thu, 08 May 2008 15:54:00 -0000 [thread overview] Message-ID: <20080508155435.3327.qmail@sourceware.org> (raw) The branch, master has been updated via b43f15763a7f3a1a2582e3bb48e3e5e6d980e0ea (commit) from 877c48d4c0643b1841a1f9a962389807d793018f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit b43f15763a7f3a1a2582e3bb48e3e5e6d980e0ea Author: Stan Cox <scox@redhat.com> Date: Thu May 8 11:52:01 2008 -0400 Add test for Environ. * Environ.java (Environ(long)): New. (getEnvHash): New. * cni/Environ.cxx (getEnvironment(long)): New. (putEnvironment): Fix off by one error. * TestEnviron.java: New. ----------------------------------------------------------------------- Summary of changes: frysk-sys/frysk/sys/ChangeLog | 8 +++ frysk-sys/frysk/sys/Environ.java | 20 +++++++- .../sys/{cni/Environ.cxx => TestEnviron.java} | 55 ++++++++++---------- frysk-sys/frysk/sys/cni/Environ.cxx | 12 ++++- 4 files changed, 65 insertions(+), 30 deletions(-) copy frysk-sys/frysk/sys/{cni/Environ.cxx => TestEnviron.java} (68%) First 500 lines of diff: diff --git a/frysk-sys/frysk/sys/ChangeLog b/frysk-sys/frysk/sys/ChangeLog index 7478218..8de64b6 100644 --- a/frysk-sys/frysk/sys/ChangeLog +++ b/frysk-sys/frysk/sys/ChangeLog @@ -1,3 +1,11 @@ +2008-05-08 Stan Cox <scox@redhat.com> + + * Environ.java (Environ(long)): New. + (getEnvHash): New. + * cni/Environ.cxx (getEnvironment(long)): New. + (putEnvironment): Fix off by one error. + * TestEnviron.java: New. + 2008-05-07 Andrew Cagney <cagney@redhat.com> * jni/AuditLibs.cxx: Include jni.hxx; fully qualify jnixx::env. diff --git a/frysk-sys/frysk/sys/Environ.java b/frysk-sys/frysk/sys/Environ.java index 328eab1..ffbec15 100644 --- a/frysk-sys/frysk/sys/Environ.java +++ b/frysk-sys/frysk/sys/Environ.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2007 Red Hat Inc. +// Copyright 2008 Red Hat Inc. // // FRYSK is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by @@ -58,6 +58,23 @@ public class Environ } /** + * Construct an environment hash given an existing environ. Used for testing + */ + Environ (long environ) + { + env = new HashMap(); + getEnvironment(environ); + } + + /** + * Get the environment hash. Used for testing + * @return the array of environment values. + */ + HashMap getEnvHash() { + return env; + } + + /** * Get an environment variable. * @param name is the environment variable name. * @return the value of the variable. @@ -106,5 +123,6 @@ public class Environ } native void getEnvironment(); + native void getEnvironment(long environ); native long putEnvironment(Object[] envs); } diff --git a/frysk-sys/frysk/sys/cni/Environ.cxx b/frysk-sys/frysk/sys/TestEnviron.java similarity index 68% copy from frysk-sys/frysk/sys/cni/Environ.cxx copy to frysk-sys/frysk/sys/TestEnviron.java index 9772dfd..4a5e050 100644 --- a/frysk-sys/frysk/sys/cni/Environ.cxx +++ b/frysk-sys/frysk/sys/TestEnviron.java @@ -37,37 +37,36 @@ // version and license this file solely under the GPL without // exception. -#include <gcj/cni.h> +package frysk.sys; -#include "frysk/sys/Environ.h" +import java.util.HashMap; +import java.util.Iterator; +import java.util.Set; +import frysk.junit.TestCase; -void -frysk::sys::Environ::getEnvironment() -{ - extern char **environ; - int env_idx; +/** + * Test environ support + */ +public class TestEnviron extends TestCase { - for (env_idx = 0; environ[env_idx]; env_idx++) - frysk::sys::Environ::addEnviron (JvNewStringUTF (environ[env_idx])); -} - -char **new_environ; - -jlong -frysk::sys::Environ::putEnvironment(jobjectArray envs) -{ - jstring* env_member = (jstring*)elements(envs); - int envs_length = JvGetArrayLength(envs); - new_environ = (char**)JvMalloc(sizeof(void*) * envs_length); - for (int i = 0; i < envs_length; i++) - { - int sym_len = env_member[i]->length (); - char *sym = (char*)JvMalloc(sym_len + 1); - JvGetStringUTFRegion (env_member[i], 0, sym_len, sym); - sym[sym_len] = '\0'; - new_environ[i] = sym; + public void testEnviron() { + Environ env1 = new Environ(); + // Grab the environment hash table + HashMap env1Hash = env1.getEnvHash(); + Set env1Keys = env1Hash.keySet(); + // Load the environment from the environment hash table + long environ = env1.putEnviron(); + // Create a new environment hash table from that environment + Environ env2 = new Environ(environ); + HashMap env2Hash = env2.getEnvHash(); + + // Ensure that both environment hash tables match + Iterator iterator = env1Keys.iterator(); + while(iterator.hasNext()){ + String key = (String) iterator.next(); + assertTrue ("env value test fails for key=" + key, + ((String)env1Hash.get(key)).compareTo((String)env2Hash.get(key)) == 0); + } } - new_environ[envs_length] = NULL; - return (jlong)new_environ; } diff --git a/frysk-sys/frysk/sys/cni/Environ.cxx b/frysk-sys/frysk/sys/cni/Environ.cxx index 9772dfd..839a861 100644 --- a/frysk-sys/frysk/sys/cni/Environ.cxx +++ b/frysk-sys/frysk/sys/cni/Environ.cxx @@ -52,6 +52,16 @@ frysk::sys::Environ::getEnvironment() frysk::sys::Environ::addEnviron (JvNewStringUTF (environ[env_idx])); } +void +frysk::sys::Environ::getEnvironment(jlong environ_p) +{ + int env_idx; + char ** environ = (char **) environ_p; + + for (env_idx = 0; environ[env_idx]; env_idx++) + frysk::sys::Environ::addEnviron (JvNewStringUTF (environ[env_idx])); +} + char **new_environ; jlong @@ -59,7 +69,7 @@ frysk::sys::Environ::putEnvironment(jobjectArray envs) { jstring* env_member = (jstring*)elements(envs); int envs_length = JvGetArrayLength(envs); - new_environ = (char**)JvMalloc(sizeof(void*) * envs_length); + new_environ = (char**)JvMalloc(sizeof(void*) * (envs_length + 1)); for (int i = 0; i < envs_length; i++) { int sym_len = env_member[i]->length (); hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2008-05-08 15:54 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20080508155435.3327.qmail@sourceware.org \ --to=scox@sourceware.org \ --cc=frysk-cvs@sourceware.org \ --cc=frysk@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).