OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [java/] [net/] [natVMURLConnection.cc] - Rev 758

Compare with Previous | Blame | View Log

/* Copyright (C) 2006, 2007  Free Software Foundation
 
   This file is part of libgcj.
 
This software is copyrighted work licensed under the terms of the
Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
details.  */
 
#include <config.h>
 
#include <java/net/VMURLConnection.h>
#include <gcj/cni.h>
#include <java/lang/UnsupportedOperationException.h>
#include <stdio.h>
 
#if defined (HAVE_MAGIC_T) && defined (HAVE_MAGIC_H) && defined (USE_LTDL)
 
#include <magic.h>
#include <ltdl.h>
 
static magic_t cookie;
 
static magic_t (*p_magic_open)(int flags);
static int (*p_magic_load)(magic_t cookie, const char *filename);
static void (*p_magic_close)(magic_t cookie);
static const char * (*p_magic_buffer) (magic_t cookie, const void *buffer,
				       size_t length);
 
#endif /* HAVE_MAGIC_T && HAVE_MAGIC_H && defined (USE_LTDL) */
 
void
java::net::VMURLConnection::init ()
{
#if defined (HAVE_MAGIC_T) && defined (HAVE_MAGIC_H) && defined (USE_LTDL)
  lt_dlhandle handle = lt_dlopenext ("libmagic.so");
  if (!handle)
    return;
 
  p_magic_open = (typeof (p_magic_open))lt_dlsym(handle, "magic_open");
  if (p_magic_open == NULL)
    return;
  p_magic_buffer = (typeof (p_magic_buffer))lt_dlsym(handle, "magic_buffer");
  if (p_magic_buffer == NULL)
    return;
  p_magic_close = (typeof (p_magic_close))lt_dlsym(handle, "magic_close");
  if (p_magic_close == NULL)
    return;
  p_magic_load = (typeof (p_magic_load))lt_dlsym(handle, "magic_load");
  if (p_magic_load == NULL)
    return;
 
  cookie = p_magic_open (MAGIC_MIME);
  if (cookie == (magic_t) NULL)
    return;
  if (p_magic_load (cookie, NULL) == -1)
    {
      p_magic_close (cookie);
      cookie = (magic_t) NULL;
    }
#endif /* HAVE_MAGIC_T && HAVE_MAGIC_H  && defined (USE_LTDL) */
}
 
::java::lang::String *
java::net::VMURLConnection::guessContentTypeFromBuffer (jbyteArray bytes __attribute__ ((unused)),
							jint valid __attribute__ ((unused)))
{
#if defined (HAVE_MAGIC_T) && defined (HAVE_MAGIC_H) && defined (USE_LTDL)
  const char *result;
 
  if (cookie == (magic_t) NULL)
    return NULL;
 
  result = p_magic_buffer (cookie, elements(bytes), valid);
 
  if (result == NULL)
    return NULL;
  return _Jv_NewStringUTF (result);
#else
  return NULL;
#endif /* HAVE_MAGIC_T && HAVE_MAGIC_H  && defined (USE_LTDL) */
}
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.