Mercurial > hg > xemacs-beta
view netinstall/site.cc @ 5050:6f2158fa75ed
Fix quick-build, use asserts() in place of ABORT()
-------------------- ChangeLog entries follow: --------------------
ChangeLog addition:
2010-02-20 Ben Wing <ben@xemacs.org>
* configure.ac (XE_COMPLEX_ARG):
Correct doc of --quick-build: It also doesn't check for Lisp shadows.
src/ChangeLog addition:
2010-02-20 Ben Wing <ben@xemacs.org>
* EmacsFrame.c:
* EmacsFrame.c (EmacsFrameRecomputeCellSize):
* alloca.c (i00afunc):
* buffer.c:
* buffer.c (MARKED_SLOT):
* buffer.c (complex_vars_of_buffer):
* cm.c:
* cm.c (cmcheckmagic):
* console.c:
* console.c (MARKED_SLOT):
* device-x.c:
* device-x.c (x_get_visual_depth):
* emacs.c (sort_args):
* eval.c (throw_or_bomb_out):
* event-stream.c:
* event-stream.c (Fadd_timeout):
* event-stream.c (Fadd_async_timeout):
* event-stream.c (Frecent_keys):
* events.c:
* events.c (Fdeallocate_event):
* events.c (event_pixel_translation):
* extents.c:
* extents.c (process_extents_for_insertion_mapper):
* fns.c (Fbase64_encode_region):
* fns.c (Fbase64_encode_string):
* fns.c (Fbase64_decode_region):
* fns.c (Fbase64_decode_string):
* font-lock.c:
* font-lock.c (find_context):
* frame-x.c:
* frame-x.c (x_wm_mark_shell_size_user_specified):
* frame-x.c (x_wm_mark_shell_position_user_specified):
* frame-x.c (x_wm_set_shell_iconic_p):
* frame-x.c (x_wm_set_cell_size):
* frame-x.c (x_wm_set_variable_size):
* frame-x.c (x_wm_store_class_hints):
* frame-x.c (x_wm_maybe_store_wm_command):
* frame-x.c (x_initialize_frame_size):
* frame.c (delete_frame_internal):
* frame.c (change_frame_size_1):
* free-hook.c (check_free):
* free-hook.c (note_block_input):
* free-hook.c (log_gcpro):
* gccache-gtk.c (gc_cache_lookup):
* gccache-x.c:
* gccache-x.c (gc_cache_lookup):
* glyphs-gtk.c:
* glyphs-gtk.c (init_image_instance_from_gdk_pixmap):
* glyphs-x.c:
* glyphs-x.c (extract_xpm_color_names):
* insdel.c:
* insdel.c (move_gap):
* keymap.c:
* keymap.c (keymap_lookup_directly):
* keymap.c (keymap_delete_inverse_internal):
* keymap.c (accessible_keymaps_mapper_1):
* keymap.c (where_is_recursive_mapper):
* lisp.h:
* lstream.c (make_lisp_buffer_stream_1):
* macros.c:
* macros.c (pop_kbd_macro_event):
* mc-alloc.c (remove_page_from_used_list):
* menubar-x.c:
* menubar-x.c (set_frame_menubar):
* ralloc.c:
* ralloc.c (obtain):
* ralloc.c (relinquish):
* ralloc.c (relocate_blocs):
* ralloc.c (resize_bloc):
* ralloc.c (r_alloc_free):
* ralloc.c (r_re_alloc):
* ralloc.c (r_alloc_thaw):
* ralloc.c (init_ralloc):
* ralloc.c (Free_Addr_Block):
* scrollbar-x.c:
* scrollbar-x.c (x_update_scrollbar_instance_status):
* sunplay.c (init_device):
* unexnt.c:
* unexnt.c (read_in_bss):
* unexnt.c (map_in_heap):
* window.c:
* window.c (real_window):
* window.c (window_display_lines):
* window.c (window_display_buffer):
* window.c (set_window_display_buffer):
* window.c (unshow_buffer):
* window.c (Fget_lru_window):
if (...) ABORT(); ---> assert();
More specifically:
if (x == y) ABORT (); --> assert (x != y);
if (x != y) ABORT (); --> assert (x == y);
if (x > y) ABORT (); --> assert (x <= y);
etc.
if (!x) ABORT (); --> assert (x);
if (x) ABORT (); --> assert (!x);
DeMorgan's Law's applied and manually simplified:
if (x && !y) ABORT (); --> assert (!x || y);
if (!x || y >= z) ABORT (); --> assert (x && y < z);
Checked to make sure that assert() of an expression with side
effects ensures that the side effects get executed even when
asserts are disabled, and add a comment about this being a
requirement of any "disabled assert" expression.
* depend:
* make-src-depend:
* make-src-depend (PrintDeps):
Fix broken code in make-src-depend so it does what it was always
supposed to do, which was separate out config.h and lisp.h and
all the files they include into separate variables in the
depend part of Makefile so that quick-build can turn off the
lisp.h/config.h/text.h/etc. dependencies of the source files, to
speed up recompilation.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Sat, 20 Feb 2010 05:05:54 -0600 |
parents | 3078fd1074e8 |
children |
line wrap: on
line source
/* * Copyright (c) 2000, Red Hat, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * A copy of the GNU General Public License can be found at * http://www.gnu.org/ * * Written by DJ Delorie <dj@cygnus.com> * */ /* The purpose of this file is to get the list of mirror sites and ask the user which mirror site they want to download from. */ #include "win32.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include "dialog.h" #include "resource.h" #include "state.h" #include "geturl.h" #include "msg.h" #include "concat.h" #include "regedit.h" #include "reginfo.h" #include "log.h" #include "port.h" #define NO_IDX (-1) #define OTHER_IDX (-2) typedef struct { char *url; char *displayed_url; char *sort_key; } site_list_type; static site_list_type *site_list = 0; static int list_idx = NO_IDX; static int mirror_idx = NO_IDX; static void check_if_enable_next (HWND h) { EnableWindow (GetDlgItem (h, IDOK), (mirror_idx != NO_IDX) ? 1 : 0); } static void load_dialog (HWND h) { HWND listbox = GetDlgItem (h, IDC_URL_LIST); SendMessage (listbox, LB_SETCURSEL, list_idx, 0); check_if_enable_next (h); } static void save_dialog (HWND h) { HWND listbox = GetDlgItem (h, IDC_URL_LIST); list_idx = SendMessage (listbox, LB_GETCURSEL, 0, 0); if (list_idx == LB_ERR) { mirror_site = 0; mirror_idx = NO_IDX; list_idx = NO_IDX; } else { mirror_idx = SendMessage (listbox, LB_GETITEMDATA, list_idx, 0); if (mirror_idx == OTHER_IDX) mirror_site = 0; else mirror_site = site_list[mirror_idx].url; } } static void get_root_dir () { int issystem, isnative; if (root_dir) return; root_dir = find_root_location (&issystem, &isnative); } void save_site_url () { if (! MIRROR_SITE) return; get_root_dir (); if (! root_dir) return; FILE *f = fopen (concat (root_dir, XEMACS_SETUP_DIR, "last-mirror", 0), "wb"); if (!f) return; fprintf (f, "%s\n", MIRROR_SITE); fclose (f); } static BOOL dialog_cmd (HWND h, int id, HWND hwndctl, UINT code) { switch (id) { case IDC_URL_LIST: save_dialog (h); check_if_enable_next (h); break; case IDOK: save_dialog (h); if (mirror_idx == OTHER_IDX) NEXT (IDD_OTHER_URL); else { other_url = 0; save_site_url (); NEXT (IDD_S_LOAD_INI); } break; case IDC_BACK: save_dialog (h); NEXT (IDD_NET); break; case IDCANCEL: NEXT (0); break; } return FALSE; } static BOOL CALLBACK dialog_proc (HWND h, UINT message, WPARAM wParam, LPARAM lParam) { int i, j; HWND listbox; switch (message) { case WM_INITDIALOG: listbox = GetDlgItem (h, IDC_URL_LIST); for (i=0; site_list[i].url; i++) { j = SendMessage (listbox, LB_ADDSTRING, 0, (LPARAM)site_list[i].displayed_url); SendMessage (listbox, LB_SETITEMDATA, j, i); } j = SendMessage (listbox, LB_ADDSTRING, 0, (LPARAM)"Other URL"); SendMessage (listbox, LB_SETITEMDATA, j, OTHER_IDX); load_dialog (h); return FALSE; case WM_COMMAND: return HANDLE_WM_COMMAND (h, wParam, lParam, dialog_cmd); } return FALSE; } static int CDECL site_sort (const void *va, const void *vb) { site_list_type *a = (site_list_type *)va; site_list_type *b = (site_list_type *)vb; return strcmp (a->sort_key, b->sort_key); } static int get_site_list (HINSTANCE h) { char mirror_url[1000]; if (LoadString (h, IDS_MIRROR_LST, mirror_url, sizeof (mirror_url)) <= 0) return 1; char *mirrors = get_url_to_string (mirror_url); dismiss_url_status_dialog (); if (!mirrors) return 1; char *bol, *eol, *nl; /* null plus account for possibly missing NL plus account for "Other URL" from previous run. */ int nmirrors = 3; for (bol=mirrors; *bol; bol++) if (*bol == '\n') nmirrors ++; site_list = (site_list_type *) malloc (nmirrors * sizeof (site_list_type)); nmirrors = 0; nl = mirrors; while (*nl) { bol = nl; for (eol = bol; *eol && *eol != '\n'; eol++) ; if (*eol) nl = eol+1; else nl = eol; while (eol > bol && eol[-1] == '\r') eol--; *eol = 0; if (bol[0] != '#' && bol[0] > ' ') { char *semi = strchr (bol, ';'); if (semi) *semi = 0; site_list[nmirrors].url = _strdup (bol); site_list[nmirrors].displayed_url = _strdup (bol); char *dot = strchr (site_list[nmirrors].displayed_url, '.'); if (dot) { dot = strchr (dot, '/'); if (dot) *dot = 0; } site_list[nmirrors].sort_key = (char *) malloc (2*strlen (bol) + 3); dot = site_list[nmirrors].displayed_url; dot += strlen (dot); char *dp = site_list[nmirrors].sort_key; while (dot != site_list[nmirrors].displayed_url) { if (*dot == '.' || *dot == '/') { char *sp; if (dot[3] == 0) *dp++ = '~'; /* sort .com/.edu/.org together */ for (sp=dot+1; *sp && *sp != '.' && *sp != '/';) *dp++ = *sp++; *dp++ = ' '; } dot--; } *dp++ = ' '; strcpy (dp, site_list[nmirrors].displayed_url); nmirrors++; } } site_list[nmirrors].url = 0; qsort (site_list, nmirrors, sizeof (site_list_type), site_sort); return 0; } /* List of machines that should not be used by default when saved in "last-mirror". */ #define NOSAVE1 "ftp://ftp.xemacs.org/" #define NOSAVE1_LEN (sizeof ("ftp://ftp.xemacs.org/") - 1) static void get_initial_list_idx () { get_root_dir (); if (! root_dir) return; FILE *f = fopen (concat (root_dir, XEMACS_SETUP_DIR, "last-mirror", 0), "rt"); if (!f) return; char site[1000]; site[0]='\0'; char * fg_ret = fgets (site, 1000, f); fclose (f); if (! fg_ret) return; char *eos = site + strlen (site) - 1; while (eos >= site && (*eos == '\n' || *eos == '\r')) *eos-- = '\0'; if (eos < site) return; int i; for (i = 0; site_list[i].url; i++) if (strcmp (site_list[i].url, site) == 0) break; if (! site_list[i].url) { /* Don't default to certain machines ever since they suffer from bandwidth limitations. */ if (strnicmp (site, NOSAVE1, NOSAVE1_LEN) == 0) return; site_list[i].displayed_url = site_list[i].url = _strdup (site); site_list[i+1].url = 0; } mirror_idx = list_idx = i; } void do_site (HINSTANCE h) { int rv = 0; if (site_list == 0) if (get_site_list (h)) { NEXT (IDD_NET); return; } get_initial_list_idx (); rv = DialogBox (h, MAKEINTRESOURCE (IDD_SITE), 0, dialog_proc); if (rv == -1) fatal (IDS_DIALOG_FAILED); if (mirror_idx != OTHER_IDX) log (0, "site: %s", mirror_site); }