Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Модуль на C++ - во зможно?
On Mon, Mar 03, 2008 at 03:58:27PM +0300, Sergey Samokhin wrote:
> Скажите пожалуйста, существует ли возможность писать модули к nginx на
> C++? Например, следующий код не собирается под g++ 4.2.2:
>
> // ----------------------------------
> #include <ngx_core.h>
>
> int main()
> {
> ngx_str_t str;
> }
> // ----------------------------------
>
> ругаясь так:
>
> // --------------------------------------------
> g++ -o ngx_http_foo_module -I../src/nginx-0.6.26/src/core
> -I../src/nginx-0.6.26/objs -I../src/nginx-0.6.26/src/os/unix *.c
> In file included from ../src/nginx-0.6.26/src/core/ngx_core.h:57,
> from ngx_http_foo_module.c:2:
> ../src/nginx-0.6.26/src/core/ngx_file.h:66: error: expected
> unqualified-id before 'delete'
> make: *** [ngx_madbanner] Error 1
> // --------------------------------------------
>
> Этот же код отлично собирается с помощью gcc.
>
> Спасибо =)
>
> nginx 0.6.26
> gcc/g++ 4.2.2
Прилагаемый патч лечит.
Кроме того, все инклуды должны идти после nginx'овских
extern "C" {
#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_event.h>
#include <ngx_http.h>
}
иначе на Линуске и Солярисе возможны проблемы с размерностью off_t.
--
Игорь Сысоев
http://sysoev.ru
Index: src/http/modules/ngx_http_dav_module.c
===================================================================
--- src/http/modules/ngx_http_dav_module.c (revision 1228)
+++ src/http/modules/ngx_http_dav_module.c (working copy)
@@ -248,7 +248,7 @@
ext.access = dlcf->access;
ext.time = -1;
ext.create_path = dlcf->create_full_put_path;
- ext.delete = 1;
+ ext.delete_file = 1;
ext.log = r->connection->log;
if (r->headers_in.date) {
Index: src/core/ngx_file.c
===================================================================
--- src/core/ngx_file.c (revision 1228)
+++ src/core/ngx_file.c (working copy)
@@ -554,7 +554,7 @@
failed:
- if (ext->delete) {
+ if (ext->delete_file) {
if (ngx_delete_file(src->data) == NGX_FILE_ERROR) {
ngx_log_error(NGX_LOG_CRIT, ext->log, ngx_errno,
ngx_delete_file_n " \"%s\" failed", src->data);
Index: src/core/ngx_file.h
===================================================================
--- src/core/ngx_file.h (revision 1228)
+++ src/core/ngx_file.h (working copy)
@@ -63,7 +63,7 @@
ngx_fd_t fd;
unsigned create_path:1;
- unsigned delete:1;
+ unsigned delete_file:1;
ngx_log_t *log;
} ngx_ext_rename_file_t;
|