зеркало из https://github.com/mozilla/gecko-dev.git
164 строки
3.3 KiB
C
164 строки
3.3 KiB
C
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
|
|
#include "npapi.h"
|
|
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <stdarg.h>
|
|
#include <string.h>
|
|
|
|
#if defined(__sun)
|
|
# include "sunos4.h"
|
|
#endif /* __sun */
|
|
|
|
#ifdef DEBUG
|
|
extern int np_debug;
|
|
static void
|
|
nptrace (const char* message, ...)
|
|
{
|
|
int len;
|
|
char buf[2048];
|
|
va_list stack;
|
|
|
|
va_start (stack, message);
|
|
len = vsprintf (buf, message, stack);
|
|
va_end (stack);
|
|
len = strlen(buf);
|
|
fwrite("\t\tjp: ", 1, 6, stderr);
|
|
fwrite(buf, 1, len, stderr);
|
|
if (buf[len-1] != '\n')
|
|
fwrite("\n", 1, 1, stderr);
|
|
}
|
|
#define NPTRACE(l,t) { if(np_debug>l){nptrace t;}}
|
|
#else
|
|
#define NPTRACE(l,t) {}
|
|
#endif
|
|
|
|
#include "npupp.h"
|
|
extern NPNetscapeFuncs *np_nfuncs;
|
|
|
|
static int inum = 1;
|
|
|
|
static NPError
|
|
javap_new(void *j, NPP npp, uint16 mode, int16 argc, char *argn[], char *argv[], NPSavedData *saved)
|
|
{
|
|
if(mode==NP_EMBED) {
|
|
NPTRACE(0,("new embed"));
|
|
} else {
|
|
NPTRACE(0,("new full"));
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static NPError
|
|
javap_destroy(NPP instance, NPSavedData **save)
|
|
{
|
|
NPTRACE(0,("destroy"));
|
|
return 0;
|
|
}
|
|
|
|
static NPError
|
|
javap_setwindow(NPP instance, NPWindow *window)
|
|
{
|
|
NPTRACE(0,("setwindow x %d y %d w %d h %d", window->x, window->y, window->width, window->height));
|
|
return 0;
|
|
}
|
|
|
|
static NPError
|
|
javap_newstream(NPP instance, NPMIMEType type, NPStream *stream, NPBool seekable, uint16 *stype)
|
|
{
|
|
NPTRACE(0,("new stream"));
|
|
|
|
switch(inum)
|
|
{
|
|
case 1:
|
|
{
|
|
NPByteRange a, b;
|
|
*stype = NP_SEEK;
|
|
a.offset = 0;
|
|
a.length = 60;
|
|
b.offset = 252525;
|
|
b.length = 10;
|
|
a.next = &b;
|
|
b.next = 0;
|
|
np_nfuncs->requestread(stream, &a);
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
*stype = NP_ASFILE;
|
|
break;
|
|
|
|
case 3:
|
|
{
|
|
np_nfuncs->geturl(instance, "about:", "_current");
|
|
}
|
|
break;
|
|
}
|
|
inum++;
|
|
|
|
np_nfuncs->status(instance, "wow");
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int32
|
|
javap_write(NPP instance, NPStream *stream, int32 offset, int32 len, void *buffer)
|
|
{
|
|
char buf[64];
|
|
NPTRACE(0,("got %d bytes at %d", len, offset));
|
|
|
|
return 0;
|
|
strncpy(buf, (const char *)buffer, 63);
|
|
buf[63]=0;
|
|
NPTRACE(0,("\"%s\"", (char *)buf));
|
|
fwrite(buffer, len, 1, stream->pdata);
|
|
return 0;
|
|
}
|
|
|
|
static NPError
|
|
javap_closestream(NPP instance, NPStream *stream, NPError reason)
|
|
{
|
|
NPTRACE(0,("sclose"));
|
|
pclose(stream->pdata);
|
|
return 0;
|
|
}
|
|
|
|
static void
|
|
javap_asfile(NPP instance, NPStream *stream, const char *fname)
|
|
{
|
|
NPTRACE(0,("fname: \"%s\"", fname));
|
|
}
|
|
|
|
|
|
NPPluginFuncs javap_funcs = {
|
|
javap_new,
|
|
javap_destroy,
|
|
javap_setwindow,
|
|
javap_newstream,
|
|
javap_closestream,
|
|
javap_asfile,
|
|
NULL,
|
|
javap_write,
|
|
NULL,
|
|
NULL
|
|
};
|
|
|
|
NPPluginFuncs *j_pfncs = &javap_funcs;
|