return APR_SUCCESS;
}
+/*
+ * <!--#else -->
+ */
static apr_status_t handle_else(include_ctx_t *ctx, ap_filter_t *f,
apr_bucket_brigade *bb)
{
- char *tag = NULL;
- char *tag_val = NULL;
request_rec *r = f->r;
- if (!ctx->if_nesting_level) {
- ap_ssi_get_tag_and_value(ctx, &tag, &tag_val, SSI_VALUE_RAW);
- if (tag || tag_val) {
- ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
- "else directive does not take tags in %s", r->filename);
- if (ctx->flags & SSI_FLAG_PRINTING) {
- SSI_CREATE_ERROR_BUCKET(ctx, f, bb);
- }
- return APR_SUCCESS;
+ if (ctx->argc) {
+ ap_log_rerror(APLOG_MARK,
+ (!(ctx->if_nesting_level)) ? APLOG_ERR : APLOG_WARNING,
+ 0, r, "else directive does not take tags in %s",
+ r->filename);
+ }
+
+ if (ctx->if_nesting_level) {
+ return APR_SUCCESS;
+ }
+
+ if (ctx->argc) {
+ if (ctx->flags & SSI_FLAG_PRINTING) {
+ SSI_CREATE_ERROR_BUCKET(ctx, f, bb);
}
- else {
- LOG_COND_STATUS(ctx, f, bb, " else");
+
+ return APR_SUCCESS;
+ }
+
+ LOG_COND_STATUS(ctx, f, bb, " else");
- if (ctx->flags & SSI_FLAG_COND_TRUE) {
- ctx->flags &= SSI_FLAG_CLEAR_PRINTING;
- }
- else {
- ctx->flags |= (SSI_FLAG_PRINTING | SSI_FLAG_COND_TRUE);
- }
- return APR_SUCCESS;
- }
+ if (ctx->flags & SSI_FLAG_COND_TRUE) {
+ ctx->flags &= SSI_FLAG_CLEAR_PRINTING;
+ }
+ else {
+ ctx->flags |= (SSI_FLAG_PRINTING | SSI_FLAG_COND_TRUE);
}
return APR_SUCCESS;
}
+/*
+ * <!--#endif -->
+ */
static apr_status_t handle_endif(include_ctx_t *ctx, ap_filter_t *f,
apr_bucket_brigade *bb)
{
- char *tag = NULL;
- char *tag_val = NULL;
request_rec *r = f->r;
- if (!ctx->if_nesting_level) {
- ap_ssi_get_tag_and_value(ctx, &tag, &tag_val, SSI_VALUE_RAW);
- if (tag || tag_val) {
- ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
- "endif directive does not take tags in %s", r->filename);
- SSI_CREATE_ERROR_BUCKET(ctx, f, bb);
- return APR_SUCCESS;
- }
- else {
- LOG_COND_STATUS(ctx, f, bb, "endif");
- ctx->flags |= (SSI_FLAG_PRINTING | SSI_FLAG_COND_TRUE);
- return APR_SUCCESS;
- }
+ if (ctx->argc) {
+ ap_log_rerror(APLOG_MARK,
+ (!(ctx->if_nesting_level)) ? APLOG_ERR : APLOG_WARNING,
+ 0, r, "endif directive does not take tags in %s",
+ r->filename);
}
- else {
- ctx->if_nesting_level--;
+
+ if (ctx->if_nesting_level) {
+ --(ctx->if_nesting_level);
return APR_SUCCESS;
}
+
+ if (ctx->argc) {
+ SSI_CREATE_ERROR_BUCKET(ctx, f, bb);
+ return APR_SUCCESS;
+ }
+
+ LOG_COND_STATUS(ctx, f, bb, "endif");
+ ctx->flags |= (SSI_FLAG_PRINTING | SSI_FLAG_COND_TRUE);
+
+ return APR_SUCCESS;
}
static apr_status_t handle_set(include_ctx_t *ctx, ap_filter_t *f,