⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fdf.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
			facenr = FDFNormalAP;			break;	}	err = FDFSetAP(fdf, Z_STRVAL_PP(fieldname), facenr, NULL, Z_STRVAL_PP(filename), (ASInt32) Z_LVAL_PP(pagenr));	/* This should be made more intelligent, ie. use switch() with the 	   possible errors this function can return. Or create global error handler function.	 */	if(err != FDFErcOK) {		FDF_FAILURE(err);	}	FDF_SUCCESS;}/* }}} *//* {{{ proto bool fdf_get_ap(resource fdfdoc, string fieldname, int face, string filename) 	 Gets the appearance of a field and creates a PDF document out of it. */PHP_FUNCTION(fdf_get_ap) {	zval *r_fdf;	char *fieldname, *filename;	int fieldname_len, filename_len;	long face;	FDFDoc fdf;	FDFErc err;	FDFAppFace facenr;	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsls",							 &r_fdf, &fieldname, &fieldname_len,							 &face, &filename, &filename_len) 	   == FAILURE) {		return;	}	ZEND_FETCH_RESOURCE(fdf, FDFDoc *, &r_fdf, -1, "fdf", le_fdf);	if (php_check_open_basedir(filename TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(filename, "wb+", CHECKUID_CHECK_MODE_PARAM))) {		RETURN_FALSE;	}	switch(face) {		case 1:			facenr = FDFNormalAP;			break;		case 2:			facenr = FDFRolloverAP;			break;		case 3:			facenr = FDFDownAP;			break;		default:			facenr = FDFNormalAP;			break;	}	err = FDFGetAP(fdf, fieldname, facenr, filename);	/* This should be made more intelligent, ie. use switch() with the 	   possible errors this function can return. Or create global error handler function.	 */	if(err != FDFErcOK) {		FDF_FAILURE(err);	}	FDF_SUCCESS;	}/* }}} *//* {{{ proto string fdf_get_encoding(resource fdf)    Gets FDF file encoding scheme */PHP_FUNCTION(fdf_get_encoding) {	zval *r_fdf;	FDFDoc fdf;	FDFErc err;	char buffer[32];	ASInt32 len;	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r",							 &r_fdf) == FAILURE) {		return;	}	ZEND_FETCH_RESOURCE(fdf, FDFDoc *, &r_fdf, -1, "fdf", le_fdf);	err = FDFGetEncoding(fdf, buffer, 32, &len);	/* This should be made more intelligent, ie. use switch() with the 	   possible errors this function can return. Or create global error handler function.	 */	if(err != FDFErcOK) {		FDF_FAILURE(err);	}		FDF_G(error) = FDFErcOK;	RETURN_STRINGL(buffer, (size_t)len, 1);}/* }}} *//* {{{ proto bool fdf_set_status(resource fdfdoc, string status)   Sets the value of /Status key */PHP_FUNCTION(fdf_set_status) {	zval **fdfp, **status;	FDFDoc fdf;	FDFErc err;	if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &fdfp, &status) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(fdf, FDFDoc *, fdfp, -1, "fdf", le_fdf);	convert_to_string_ex(status);	err = FDFSetStatus(fdf, Z_STRVAL_PP(status));	if(err != FDFErcOK) {		FDF_FAILURE(err);	}	FDF_SUCCESS;}/* }}} *//* {{{ proto string fdf_get_status(resource fdfdoc)   Gets the value of /Status key */PHP_FUNCTION(fdf_get_status) {	zval **fdfp;	ASInt32 nr, size = 256;	char *buf;	FDFDoc fdf;	FDFErc err;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &fdfp) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(fdf, FDFDoc *, fdfp, -1, "fdf", le_fdf);	buf = emalloc(size);	err = FDFGetStatus(fdf, buf, size-1,  &nr);	if(err == FDFErcBufTooShort && nr > 0 ) {		buf = erealloc(buf, nr+1); 		err = FDFGetStatus(fdf, buf, size-1,  &nr);	}		if(err != FDFErcOK) {		efree(buf);		FDF_FAILURE(err);	}	RETVAL_STRING(buf, 1);	efree(buf);}/* }}} *//* {{{ proto bool fdf_set_file(resource fdfdoc, string filename [, string target_frame])   Sets the value of /F key */PHP_FUNCTION(fdf_set_file) {	zval *r_fdf;	char *filename, *target_frame= NULL;	int filename_len, target_frame_len;	FDFDoc fdf;	FDFErc err;	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|s", &r_fdf, 							 &filename, &filename_len,							 &target_frame, &target_frame_len)	   == FAILURE) {		return;	}	if (php_check_open_basedir(filename TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(filename, "wb+", CHECKUID_CHECK_MODE_PARAM))) {		RETURN_FALSE;	}	ZEND_FETCH_RESOURCE(fdf, FDFDoc *, &r_fdf, -1, "fdf", le_fdf);	err = FDFSetFile(fdf, filename);	if(err != FDFErcOK) {		FDF_FAILURE(err);	}	if(target_frame) {#ifdef HAVE_FDFTK_5		err = FDFSetTargetFrame(fdf, target_frame);		if(err != FDFErcOK) {			FDF_FAILURE(err);		}#else		php_error_docref(NULL TSRMLS_CC, E_WARNING, "setting the target frame is only possible with FDF toolkit 5.0 and above, ignoring it for now");#endif	}	FDF_SUCCESS;}/* }}} *//* {{{ proto string fdf_get_file(resource fdfdoc)   Gets the value of /F key */PHP_FUNCTION(fdf_get_file) {	zval **fdfp;	ASInt32 nr, size = 256;	char *buf;	FDFDoc fdf;	FDFErc err;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &fdfp) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(fdf, FDFDoc *, fdfp, -1, "fdf", le_fdf);	buf = emalloc(size);	err = FDFGetFile(fdf, buf, size-1,  &nr);	if(err == FDFErcBufTooShort && nr > 0 ) {		buf = erealloc(buf, nr+1); 		err = FDFGetFile(fdf, buf, size-1,  &nr);	}		if(err != FDFErcOK) {		efree(buf);		FDF_FAILURE(err);	}	RETVAL_STRING(buf, 1);	efree(buf);}/* }}} *//* {{{ proto mixed fdf_save(resource fdfdoc [, string filename])   Writes out the FDF file */PHP_FUNCTION(fdf_save) {	zval *r_fdf;	char *filename = NULL;	int filename_len;	FDFDoc fdf;	FDFErc err;	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|s", &r_fdf, &filename, &filename_len)	   == FAILURE) {		return;	}	ZEND_FETCH_RESOURCE(fdf, FDFDoc *, &r_fdf, -1, "fdf", le_fdf);	if(filename) {		if (php_check_open_basedir(filename TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(filename, "wb+", CHECKUID_CHECK_MODE_PARAM))) {			RETURN_FALSE;		}		err = FDFSave(fdf, filename);		} else {		FILE *fp;		char *temp_filename;		fp = php_open_temporary_file(PG(upload_tmp_dir), "php", &temp_filename TSRMLS_CC);		if(!fp) {			err = FDFErcFileSysErr;		} else {			fclose(fp);			err = FDFSave(fdf, temp_filename);			if(err == FDFErcOK) {				php_stream *stream = php_stream_open_wrapper(temp_filename, "rb", 0, NULL);				if (stream)	{					php_stream_passthru(stream);					php_stream_close(stream);				} else {					err = FDFErcFileSysErr;				}				}		}		if(temp_filename) {			unlink(temp_filename);			efree(temp_filename);		}	}	if(err != FDFErcOK) {		FDF_FAILURE(err);	}		FDF_SUCCESS;} /* }}} *//* {{{ proto mixed fdf_save_string(resource fdfdoc)   Returns the FDF file as a string */PHP_FUNCTION(fdf_save_string) {	zval *r_fdf;	FDFDoc fdf;	FDFErc err;	FILE *fp;	char *temp_filename = NULL;	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &r_fdf)	   == FAILURE) {		return;	}	ZEND_FETCH_RESOURCE(fdf, FDFDoc *, &r_fdf, -1, "fdf", le_fdf);	fp = php_open_temporary_file(PG(upload_tmp_dir), "php", &temp_filename TSRMLS_CC);	if(!fp) {		err = FDFErcFileSysErr;	} else {		fclose(fp);		err = FDFSave(fdf, temp_filename);		if(err == FDFErcOK) {			fp = fopen(temp_filename, "rb");			if (fp)	{				struct stat stat;				char *buf;				if (fstat(fileno(fp), &stat) == -1) {					RETVAL_FALSE;					goto err;				}				buf = safe_emalloc(1, stat.st_size, 1);				fread(buf, stat.st_size, 1, fp);				buf[stat.st_size] = '\0';				fclose(fp);				unlink(temp_filename);				efree(temp_filename);				RETURN_STRINGL(buf, stat.st_size, 0);			} else {				err = FDFErcFileSysErr;			}			}	}	if(err != FDFErcOK) {		FDF_FAILURE(err);	}err:	if(temp_filename) {		unlink(temp_filename);		efree(temp_filename);	}	return;} /* }}} *//* {{{ proto bool fdf_add_template(resource fdfdoc, int newpage, string filename, string template, int rename)   Adds a template into the FDF document */PHP_FUNCTION(fdf_add_template) {	zval **fdfp, **newpage, **filename, **template, **rename;	FDFDoc fdf;	FDFErc err;	pdfFileSpecRec filespec;	if (ZEND_NUM_ARGS() != 5 || zend_get_parameters_ex(5, &fdfp, &newpage, &filename, &template, &rename) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(fdf, FDFDoc *, fdfp, -1, "fdf", le_fdf);	convert_to_long_ex(newpage);	convert_to_string_ex(filename);	convert_to_string_ex(template);	convert_to_long_ex(rename);	if (php_check_open_basedir(Z_STRVAL_PP(filename) TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(Z_STRVAL_PP(filename), "wb+", CHECKUID_CHECK_MODE_PARAM))) {		RETURN_FALSE;	}	filespec.FS = NULL;	filespec.F = Z_STRVAL_PP(filename);	filespec.Mac = NULL;	filespec.DOS = NULL;	filespec.Unix = NULL;	filespec.ID[0] = NULL;	filespec.ID[1] = NULL;	filespec.bVolatile = false;	err = FDFAddTemplate(fdf, (unsigned short)(Z_LVAL_PP(newpage)), &filespec, Z_STRVAL_PP(template), (unsigned short)(Z_LVAL_PP(rename)));	if(err != FDFErcOK) {		FDF_FAILURE(err);	}	FDF_SUCCESS;}/* }}} *//* {{{ proto bool fdf_set_flags(resource fdfdoc, string fieldname, int whichflags, int newflags)   Sets flags for a field in the FDF document */PHP_FUNCTION(fdf_set_flags) {	zval **fdfp, **fieldname, **flags, **newflags;	FDFDoc fdf;	FDFErc err;	if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &fdfp, &fieldname, &flags, &newflags) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(fdf, FDFDoc *, fdfp, -1, "fdf", le_fdf);	convert_to_string_ex(fieldname);	convert_to_long_ex(flags);	convert_to_long_ex(newflags);		err=FDFSetFlags(fdf, Z_STRVAL_PP(fieldname), Z_LVAL_PP(flags), Z_LVAL_PP(newflags));	if(err != FDFErcOK) {		FDF_FAILURE(err);	}	FDF_SUCCESS;}/* }}} *//* {{{ proto int fdf_get_flags(resorce fdfdoc, string fieldname, int whichflags)    Gets the flags of a field */PHP_FUNCTION(fdf_get_flags) { 	zval *r_fdf;	char *fieldname;	int fieldname_len;	long whichflags;	FDFDoc fdf;	FDFErc err;	ASUns32 flags;	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsl",							 &r_fdf, &fieldname, &fieldname_len,							 &whichflags) 	   == FAILURE) {		return;	}	ZEND_FETCH_RESOURCE(fdf, FDFDoc *, &r_fdf, -1, "fdf", le_fdf);	err = FDFGetFlags(fdf, fieldname, (FDFItem)whichflags, &flags);	if(err != FDFErcOK) {		FDF_FAILURE(err);	}	RETURN_LONG((long)flags);}/* }}} *//* {{{ proto bool fdf_set_opt(resource fdfdoc, string fieldname, int element, string value, string name)   Sets a value in the opt array for a field */PHP_FUNCTION(fdf_set_opt){	zval **fdfp, **fieldname, **element, **value, **name;	FDFDoc fdf;	FDFErc err;		if (ZEND_NUM_ARGS() != 5 || zend_get_parameters_ex(5, &fdfp, &fieldname, &element, &value, &name) == FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(fdf, FDFDoc *, fdfp, -1, "fdf", le_fdf);	convert_to_string_ex(fieldname);	convert_to_long_ex(element);	convert_to_string_ex(value);	convert_to_string_ex(name);	err = FDFSetOpt(fdf, Z_STRVAL_PP(fieldname), Z_LVAL_PP(element), Z_STRVAL_PP(value), Z_STRVAL_PP(name));	if(err != FDFErcOK) {		FDF_FAILURE(err);	}	FDF_SUCCESS;}/* }}} *//* {{{ proto mixed fdf_get_opt(resource fdfdof, string fieldname [, int element])   Gets a value from the opt array of a field */PHP_FUNCTION(fdf_get_opt) { 	zval *r_fdf;	char *fieldname;	int fieldname_len;	long element = -1;	FDFDoc fdf;	FDFErc err;	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l",							 &r_fdf, &fieldname, &fieldname_len,							 &element) 	   == FAILURE) {		return;	}	ZEND_FETCH_RESOURCE(fdf, FDFDoc *, &r_fdf, -1, "fdf", le_fdf);	if(element == -1) {		ASInt32 elements;		err = FDFGetOpt(fdf, fieldname, (ASInt32)-1, NULL, NULL, 0, &elements);		if(err != FDFErcOK) {			FDF_FAILURE(err);		}		RETURN_LONG((long)elements);	} else {		ASInt32 bufSize, nRet;		char *buf1, *buf2;		bufSize = 1024; 		buf1 = emalloc(bufSize);		buf2 = emalloc(bufSize);		err = FDFGetOpt(fdf, fieldname, (ASInt32)element, buf1, buf2, bufSize, &nRet);		if(err == FDFErcBufTooShort) {			efree(buf1);			efree(buf2);			buf1 = emalloc(nRet);			buf2 = emalloc(nRet);			bufSize = nRet;			err = FDFGetOpt(fdf, fieldname, (ASInt32)element, buf1, buf2, bufSize, &nRet);		}		if(err != FDFErcOK) {			FDF_FAILURE(err);		}		array_init(return_value);		add_next_index_stringl(return_value, buf1, strlen(buf1), 1);		add_next_index_stringl(return_value, buf2, strlen(buf2), 1);		efree(buf1);		efree(buf2);	}}/* }}} *//* {{{ proto bool fdf_set_submit_form_action(resource fdfdoc, string fieldname, int whichtrigger, string url, int flags)   Sets the submit form action for a field */PHP_FUNCTION(fdf_set_submit_form_action) {	zval **fdfp, **fieldname, **trigger, **url, **flags;	FDFDoc fdf;	FDFErc err;		if (ZEND_NUM_ARGS() != 5 || zend_get_parameters_ex(5, &fdfp, &fieldname, &trigger, &url, &flags) == FAILURE) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -