SAPI_API void sapi_get_default_content_type_header(sapi_header_struct *default_header) { uint32_t len; default_header->header = get_default_content_type(sizeof("Content-type: ")-1, &len); default_header->header_len = len; memcpy(default_header->header, "Content-type: ", sizeof("Content-type: ") - 1); }
static void gedit_document_init (GeditDocument *doc) { GeditDocumentPrivate *priv; GtkSourceStyleScheme *style_scheme; gedit_debug (DEBUG_DOCUMENT); doc->priv = gedit_document_get_instance_private (doc); priv = doc->priv; priv->editor_settings = g_settings_new ("org.gnome.gedit.preferences.editor"); priv->untitled_number = get_untitled_number (); priv->content_type = get_default_content_type (); priv->readonly = FALSE; priv->language_set_by_user = FALSE; priv->empty_search = TRUE; g_get_current_time (&doc->priv->time_of_last_save_or_load); priv->file = gtk_source_file_new (); g_signal_connect_object (priv->file, "notify::location", G_CALLBACK (on_location_changed), doc, 0); g_settings_bind (priv->editor_settings, GEDIT_SETTINGS_MAX_UNDO_ACTIONS, doc, "max-undo-levels", G_SETTINGS_BIND_GET); g_settings_bind (priv->editor_settings, GEDIT_SETTINGS_BRACKET_MATCHING, doc, "highlight-matching-brackets", G_SETTINGS_BIND_GET); style_scheme = get_default_style_scheme (priv->editor_settings); if (style_scheme != NULL) { gtk_source_buffer_set_style_scheme (GTK_SOURCE_BUFFER (doc), style_scheme); } g_signal_connect (doc, "notify::content-type", G_CALLBACK (on_content_type_changed), NULL); }
static void set_content_type_no_guess (GeditDocument *doc, const gchar *content_type) { GeditDocumentPrivate *priv; gchar *dupped_content_type; gedit_debug (DEBUG_DOCUMENT); priv = gedit_document_get_instance_private (doc); if (priv->content_type != NULL && content_type != NULL && g_str_equal (priv->content_type, content_type)) { return; } g_free (priv->content_type); /* For compression types, we try to just guess from the content */ if (gedit_utils_get_compression_type_from_content_type (content_type) != GTK_SOURCE_COMPRESSION_TYPE_NONE) { dupped_content_type = get_content_type_from_content (doc); } else { dupped_content_type = g_strdup (content_type); } if (dupped_content_type == NULL || g_content_type_is_unknown (dupped_content_type)) { priv->content_type = get_default_content_type (); g_free (dupped_content_type); } else { priv->content_type = dupped_content_type; } g_object_notify (G_OBJECT (doc), "content-type"); }
SAPI_API int sapi_send_headers(void) { int retval; int ret = FAILURE; if (SG(headers_sent) || SG(request_info).no_headers) { return SUCCESS; } /* Success-oriented. We set headers_sent to 1 here to avoid an infinite loop * in case of an error situation. */ if (SG(sapi_headers).send_default_content_type && sapi_module.send_headers) { uint32_t len = 0; char *default_mimetype = get_default_content_type(0, &len); if (default_mimetype && len) { sapi_header_struct default_header; SG(sapi_headers).mimetype = default_mimetype; default_header.header_len = sizeof("Content-type: ") - 1 + len; default_header.header = emalloc(default_header.header_len + 1); memcpy(default_header.header, "Content-type: ", sizeof("Content-type: ") - 1); memcpy(default_header.header + sizeof("Content-type: ") - 1, SG(sapi_headers).mimetype, len + 1); sapi_header_add_op(SAPI_HEADER_ADD, &default_header); } else { efree(default_mimetype); } SG(sapi_headers).send_default_content_type = 0; } if (Z_TYPE(SG(callback_func)) != IS_UNDEF) { zval cb; ZVAL_COPY_VALUE(&cb, &SG(callback_func)); ZVAL_UNDEF(&SG(callback_func)); sapi_run_header_callback(&cb); zval_ptr_dtor(&cb); } SG(headers_sent) = 1; if (sapi_module.send_headers) { retval = sapi_module.send_headers(&SG(sapi_headers)); } else { retval = SAPI_HEADER_DO_SEND; } switch (retval) { case SAPI_HEADER_SENT_SUCCESSFULLY: ret = SUCCESS; break; case SAPI_HEADER_DO_SEND: { sapi_header_struct http_status_line; char buf[255]; if (SG(sapi_headers).http_status_line) { http_status_line.header = SG(sapi_headers).http_status_line; http_status_line.header_len = (uint32_t)strlen(SG(sapi_headers).http_status_line); } else { http_status_line.header = buf; http_status_line.header_len = slprintf(buf, sizeof(buf), "HTTP/1.0 %d X", SG(sapi_headers).http_response_code); } sapi_module.send_header(&http_status_line, SG(server_context)); } zend_llist_apply_with_argument(&SG(sapi_headers).headers, (llist_apply_with_arg_func_t) sapi_module.send_header, SG(server_context)); if(SG(sapi_headers).send_default_content_type) { sapi_header_struct default_header; sapi_get_default_content_type_header(&default_header); sapi_module.send_header(&default_header, SG(server_context)); sapi_free_header(&default_header); } sapi_module.send_header(NULL, SG(server_context)); ret = SUCCESS; break; case SAPI_HEADER_SEND_FAILED: SG(headers_sent) = 0; ret = FAILURE; break; } sapi_send_headers_free(); return ret; }
SAPI_API char *sapi_get_default_content_type(void) { uint32_t len; return get_default_content_type(0, &len); }