remove trailing whitespace
authorLove Hornquist Astrand <lha@h5l.org>
Sat, 21 May 2011 18:57:31 +0000 (11:57 -0700)
committerLove Hornquist Astrand <lha@h5l.org>
Sat, 21 May 2011 18:57:31 +0000 (11:57 -0700)
539 files changed:
admin/add.c
admin/change.c
admin/get.c
admin/ktutil.8
admin/ktutil.c
admin/list.c
appl/afsutil/afslog.1
appl/afsutil/pagsh.1
appl/dceutils/k5dcecon.c
appl/ftp/ftp/cmds.c
appl/ftp/ftp/cmdtab.c
appl/ftp/ftp/ftp.c
appl/ftp/ftp/gssapi.c
appl/ftp/ftp/main.c
appl/ftp/ftp/security.c
appl/ftp/ftpd/ftpcmd.y
appl/ftp/ftpd/ftpd.c
appl/ftp/ftpd/klist.c
appl/ftp/ftpd/logwtmp.c
appl/ftp/ftpd/ls.c
appl/ftp/ftpd/popen.c
appl/gssmask/gssmaestro.c
appl/gssmask/gssmask.c
appl/kf/kf.1
appl/kf/kfd.8
appl/kx/common.c
appl/kx/krb5.c
appl/kx/kx.1
appl/kx/kx.c
appl/kx/kxd.8
appl/kx/kxd.c
appl/kx/rxtelnet.1
appl/kx/rxterm.1
appl/kx/tenletxr.1
appl/login/limits_conf.c
appl/login/login.1
appl/login/login.access.5
appl/login/login.c
appl/otp/otp.1
appl/otp/otpprint.1
appl/popper/pop_debug.c
appl/popper/pop_dele.c
appl/popper/pop_dropinfo.c
appl/popper/pop_init.c
appl/popper/pop_pass.c
appl/popper/popper.8
appl/push/pfrom.1
appl/push/push.c
appl/rcp/rcp.1
appl/rcp/rcp.c
appl/rsh/common.c
appl/rsh/rsh.1
appl/rsh/rsh.c
appl/rsh/rshd.8
appl/rsh/rshd.c
appl/su/su.1
appl/su/su.c
appl/telnet/libtelnet/encrypt.c
appl/telnet/libtelnet/genget.c
appl/telnet/libtelnet/kerberos5.c
appl/telnet/telnet/commands.c
appl/telnet/telnet/main.c
appl/telnet/telnet/telnet.c
appl/telnet/telnet/utilities.c
appl/telnet/telnetd/state.c
appl/telnet/telnetd/sys_term.c
appl/telnet/telnetd/telnetd.c
appl/telnet/telnetd/utility.c
appl/test/gssapi_client.c
appl/test/http_client.c
appl/test/nt_gss_common.c
appl/test/uu_server.c
appl/xnlock/xnlock.c
base/dict.c
base/heimbase.c
base/json.c
include/heim_threads.h
kadmin/cpw.c
kadmin/get.c
kadmin/kadmin.8
kadmin/kadmin.c
kadmin/kadmind.8
kadmin/kadmind.c
kadmin/load.c
kadmin/mod.c
kadmin/rpc.c
kadmin/stash.c
kcm/acquire.c
kcm/cache.c
kcm/client.c
kcm/config.c
kcm/connect.c
kcm/kcm.8
kcm/protocol.c
kcm/sessions.c
kdc/announce.c
kdc/config.c
kdc/connect.c
kdc/default_config.c
kdc/digest-service.c
kdc/digest.c
kdc/hprop.8
kdc/hprop.c
kdc/hpropd.8
kdc/hpropd.c
kdc/kdc-replay.c
kdc/kdc.8
kdc/kdc.h
kdc/kerberos5.c
kdc/krb5tgs.c
kdc/kstash.8
kdc/kstash.c
kdc/kx509.c
kdc/main.c
kdc/misc.c
kdc/mit_dump.c
kdc/pkinit.c
kdc/process.c
kdc/set_dbinfo.c
kdc/string2key.8
kdc/string2key.c
kdc/windc.c
kdc/windc_plugin.h
kpasswd/kpasswd.1
kpasswd/kpasswd.c
kpasswd/kpasswdd.8
kpasswd/kpasswdd.c
kuser/kcpytkt.c
kuser/kdeltkt.c
kuser/kdestroy.1
kuser/kdestroy.c
kuser/kdigest.8
kuser/kdigest.c
kuser/kgetcred.1
kuser/kgetcred.c
kuser/kimpersonate.8
kuser/kimpersonate.c
kuser/kinit.1
kuser/kinit.c
kuser/klist.1
kuser/klist.c
kuser/kswitch.1
kuser/kswitch.c
kuser/kverify.c
kuser/kvno.c
lib/asn1/asn1-common.h
lib/asn1/asn1_print.c
lib/asn1/asn1parse.y
lib/asn1/check-common.c
lib/asn1/der_cmp.c
lib/asn1/extra.c
lib/asn1/gen.c
lib/asn1/gen_free.c
lib/asn1/gen_template.c
lib/asn1/lex.l
lib/asn1/main.c
lib/asn1/template.c
lib/asn1/timegm.c
lib/com_err/com_err.3
lib/com_err/compile_et.c
lib/com_err/error.c
lib/com_err/parse.y
lib/gssapi/gssapi.3
lib/gssapi/gssapi/gssapi.h
lib/gssapi/gsstool.c
lib/gssapi/krb5/8003.c
lib/gssapi/krb5/accept_sec_context.c
lib/gssapi/krb5/acquire_cred.c
lib/gssapi/krb5/add_cred.c
lib/gssapi/krb5/aeap.c
lib/gssapi/krb5/arcfour.c
lib/gssapi/krb5/cfx.c
lib/gssapi/krb5/compat.c
lib/gssapi/krb5/context_time.c
lib/gssapi/krb5/copy_ccache.c
lib/gssapi/krb5/creds.c
lib/gssapi/krb5/encapsulate.c
lib/gssapi/krb5/import_name.c
lib/gssapi/krb5/init_sec_context.c
lib/gssapi/krb5/inquire_cred.c
lib/gssapi/krb5/inquire_names_for_mech.c
lib/gssapi/krb5/inquire_sec_context_by_oid.c
lib/gssapi/krb5/sequence.c
lib/gssapi/krb5/set_cred_option.c
lib/gssapi/krb5/set_sec_context_option.c
lib/gssapi/krb5/store_cred.c
lib/gssapi/krb5/test_acquire_cred.c
lib/gssapi/krb5/test_cfx.c
lib/gssapi/krb5/test_cred.c
lib/gssapi/krb5/test_kcred.c
lib/gssapi/mech/gss_accept_sec_context.c
lib/gssapi/mech/gss_add_oid_set_member.c
lib/gssapi/mech/gss_aeap.c
lib/gssapi/mech/gss_canonicalize_name.c
lib/gssapi/mech/gss_cred.c
lib/gssapi/mech/gss_decapsulate_token.c
lib/gssapi/mech/gss_delete_name_attribute.c
lib/gssapi/mech/gss_destroy_cred.c
lib/gssapi/mech/gss_display_name_ext.c
lib/gssapi/mech/gss_display_status.c
lib/gssapi/mech/gss_duplicate_name.c
lib/gssapi/mech/gss_encapsulate_token.c
lib/gssapi/mech/gss_export_name_composite.c
lib/gssapi/mech/gss_export_sec_context.c
lib/gssapi/mech/gss_get_name_attribute.c
lib/gssapi/mech/gss_import_name.c
lib/gssapi/mech/gss_import_sec_context.c
lib/gssapi/mech/gss_indicate_mechs.c
lib/gssapi/mech/gss_init_sec_context.c
lib/gssapi/mech/gss_inquire_name.c
lib/gssapi/mech/gss_mech_switch.c
lib/gssapi/mech/gss_names.c
lib/gssapi/mech/gss_oid_equal.c
lib/gssapi/mech/gss_release_name.c
lib/gssapi/mech/gss_set_cred_option.c
lib/gssapi/mech/gss_set_name_attribute.c
lib/gssapi/mech/gss_store_cred.c
lib/gssapi/mech/gss_wrap_size_limit.c
lib/gssapi/mech/mech.5
lib/gssapi/ntlm/accept_sec_context.c
lib/gssapi/ntlm/acquire_cred.c
lib/gssapi/ntlm/crypto.c
lib/gssapi/ntlm/display_name.c
lib/gssapi/ntlm/init_sec_context.c
lib/gssapi/ntlm/iter_cred.c
lib/gssapi/ntlm/kdc.c
lib/gssapi/spnego/accept_sec_context.c
lib/gssapi/test_acquire_cred.c
lib/gssapi/test_common.c
lib/gssapi/test_context.c
lib/gssapi/test_cred.c
lib/gssapi/test_kcred.c
lib/hcrypto/camellia-ntt.c
lib/hcrypto/des.c
lib/hcrypto/des.h
lib/hcrypto/destest.c
lib/hcrypto/dh-ltm.c
lib/hcrypto/dh-tfm.c
lib/hcrypto/ec.c
lib/hcrypto/ecdsa.h
lib/hcrypto/engine.c
lib/hcrypto/evp.c
lib/hcrypto/evp.h
lib/hcrypto/example_evp_cipher.c
lib/hcrypto/libtommath/bn_fast_mp_invmod.c
lib/hcrypto/libtommath/bn_fast_s_mp_mul_digs.c
lib/hcrypto/libtommath/bn_fast_s_mp_mul_high_digs.c
lib/hcrypto/libtommath/bn_fast_s_mp_sqr.c
lib/hcrypto/libtommath/bn_mp_2expt.c
lib/hcrypto/libtommath/bn_mp_abs.c
lib/hcrypto/libtommath/bn_mp_clamp.c
lib/hcrypto/libtommath/bn_mp_clear_multi.c
lib/hcrypto/libtommath/bn_mp_cmp.c
lib/hcrypto/libtommath/bn_mp_cmp_mag.c
lib/hcrypto/libtommath/bn_mp_cnt_lsb.c
lib/hcrypto/libtommath/bn_mp_count_bits.c
lib/hcrypto/libtommath/bn_mp_div.c
lib/hcrypto/libtommath/bn_mp_div_3.c
lib/hcrypto/libtommath/bn_mp_div_d.c
lib/hcrypto/libtommath/bn_mp_dr_setup.c
lib/hcrypto/libtommath/bn_mp_exch.c
lib/hcrypto/libtommath/bn_mp_exptmod.c
lib/hcrypto/libtommath/bn_mp_exptmod_fast.c
lib/hcrypto/libtommath/bn_mp_exteuclid.c
lib/hcrypto/libtommath/bn_mp_find_prime.c
lib/hcrypto/libtommath/bn_mp_fread.c
lib/hcrypto/libtommath/bn_mp_fwrite.c
lib/hcrypto/libtommath/bn_mp_gcd.c
lib/hcrypto/libtommath/bn_mp_get_int.c
lib/hcrypto/libtommath/bn_mp_init_multi.c
lib/hcrypto/libtommath/bn_mp_init_size.c
lib/hcrypto/libtommath/bn_mp_invmod_slow.c
lib/hcrypto/libtommath/bn_mp_is_square.c
lib/hcrypto/libtommath/bn_mp_isprime.c
lib/hcrypto/libtommath/bn_mp_karatsuba_mul.c
lib/hcrypto/libtommath/bn_mp_karatsuba_sqr.c
lib/hcrypto/libtommath/bn_mp_mul.c
lib/hcrypto/libtommath/bn_mp_mul_2.c
lib/hcrypto/libtommath/bn_mp_mul_2d.c
lib/hcrypto/libtommath/bn_mp_n_root.c
lib/hcrypto/libtommath/bn_mp_prime_fermat.c
lib/hcrypto/libtommath/bn_mp_prime_is_divisible.c
lib/hcrypto/libtommath/bn_mp_prime_miller_rabin.c
lib/hcrypto/libtommath/bn_mp_prime_random_ex.c
lib/hcrypto/libtommath/bn_mp_radix_size.c
lib/hcrypto/libtommath/bn_mp_read_radix.c
lib/hcrypto/libtommath/bn_mp_reduce.c
lib/hcrypto/libtommath/bn_mp_reduce_2k.c
lib/hcrypto/libtommath/bn_mp_reduce_2k_l.c
lib/hcrypto/libtommath/bn_mp_reduce_2k_setup.c
lib/hcrypto/libtommath/bn_mp_reduce_2k_setup_l.c
lib/hcrypto/libtommath/bn_mp_reduce_is_2k.c
lib/hcrypto/libtommath/bn_mp_reduce_is_2k_l.c
lib/hcrypto/libtommath/bn_mp_reduce_setup.c
lib/hcrypto/libtommath/bn_mp_rshd.c
lib/hcrypto/libtommath/bn_mp_set_int.c
lib/hcrypto/libtommath/bn_mp_sqr.c
lib/hcrypto/libtommath/bn_mp_sqrt.c
lib/hcrypto/libtommath/bn_mp_toom_mul.c
lib/hcrypto/libtommath/bn_mp_toradix_n.c
lib/hcrypto/libtommath/bn_s_mp_add.c
lib/hcrypto/libtommath/bn_s_mp_exptmod.c
lib/hcrypto/libtommath/bn_s_mp_mul_digs.c
lib/hcrypto/libtommath/bn_s_mp_sqr.c
lib/hcrypto/libtommath/bncore.c
lib/hcrypto/libtommath/demo/demo.c
lib/hcrypto/libtommath/etc/2kprime.c
lib/hcrypto/libtommath/etc/drprime.c
lib/hcrypto/libtommath/etc/mersenne.c
lib/hcrypto/libtommath/etc/mont.c
lib/hcrypto/libtommath/etc/tune.c
lib/hcrypto/libtommath/mtest/mpi-config.h
lib/hcrypto/libtommath/mtest/mpi.c
lib/hcrypto/libtommath/tommath.h
lib/hcrypto/libtommath/tommath_superclass.h
lib/hcrypto/mdtest.c
lib/hcrypto/pkcs12.c
lib/hcrypto/rand-egd.c
lib/hcrypto/rc2.c
lib/hcrypto/rsa-ltm.c
lib/hcrypto/rsa-tfm.c
lib/hcrypto/rsa.c
lib/hcrypto/sha256.c
lib/hcrypto/sha512.c
lib/hcrypto/test_bn.c
lib/hcrypto/test_cipher.c
lib/hcrypto/test_dh.c
lib/hcrypto/test_engine_dso.c
lib/hcrypto/test_hmac.c
lib/hcrypto/test_rand.c
lib/hcrypto/test_rsa.c
lib/hcrypto/ui.c
lib/hcrypto/validate.c
lib/hdb/common.c
lib/hdb/dbinfo.c
lib/hdb/hdb-keytab.c
lib/hdb/hdb-ldap.c
lib/hdb/hdb-mitdb.c
lib/hdb/hdb-sqlite.c
lib/hdb/hdb.c
lib/hdb/hdb.h
lib/hdb/keys.c
lib/hdb/keytab.c
lib/hdb/mkey.c
lib/hdb/test_mkey.c
lib/heimdal/dllmain.c
lib/hx509/ca.c
lib/hx509/cert.c
lib/hx509/char_map.h
lib/hx509/cms.c
lib/hx509/collector.c
lib/hx509/crypto.c
lib/hx509/file.c
lib/hx509/hxtool.c
lib/hx509/ks_dir.c
lib/hx509/ks_file.c
lib/hx509/ks_keychain.c
lib/hx509/ks_mem.c
lib/hx509/ks_p11.c
lib/hx509/ks_p12.c
lib/hx509/name.c
lib/hx509/print.c
lib/hx509/revoke.c
lib/hx509/sel.c
lib/hx509/softp11.c
lib/hx509/test_expr.c
lib/hx509/test_name.c
lib/hx509/test_soft_pkcs11.c
lib/ipc/client.c
lib/ipc/server.c
lib/ipc/tc.c
lib/ipc/ts-http.c
lib/ipc/ts.c
lib/kadm5/ad.c
lib/kadm5/chpass_s.c
lib/kadm5/context_s.c
lib/kadm5/create_s.c
lib/kadm5/default_keys.c
lib/kadm5/ent_setup.c
lib/kadm5/get_s.c
lib/kadm5/init_c.c
lib/kadm5/iprop-log.8
lib/kadm5/iprop.8
lib/kadm5/ipropd_master.c
lib/kadm5/ipropd_slave.c
lib/kadm5/marshall.c
lib/kadm5/password_quality.c
lib/kafs/afssys.c
lib/kafs/kafs.3
lib/krb5/acache.c
lib/krb5/acl.c
lib/krb5/addr_families.c
lib/krb5/aes-test.c
lib/krb5/aname_to_localname.c
lib/krb5/appdefault.c
lib/krb5/auth_context.c
lib/krb5/cache.c
lib/krb5/changepw.c
lib/krb5/config_file.c
lib/krb5/context.c
lib/krb5/creds.c
lib/krb5/crypto.c
lib/krb5/dll.c
lib/krb5/doxygen.c
lib/krb5/expand_path.c
lib/krb5/fcache.c
lib/krb5/get_cred.c
lib/krb5/get_default_principal.c
lib/krb5/get_for_creds.c
lib/krb5/get_in_tkt.c
lib/krb5/init_creds.c
lib/krb5/init_creds_pw.c
lib/krb5/kcm.c
lib/krb5/keyblock.c
lib/krb5/keytab.c
lib/krb5/keytab_file.c
lib/krb5/keytab_keyfile.c
lib/krb5/krb5.conf.5
lib/krb5/krb5_c_make_checksum.3
lib/krb5/krb5_check_transited.3
lib/krb5/krb5_create_checksum.3
lib/krb5/krb5_creds.3
lib/krb5/krb5_encrypt.3
lib/krb5/krb5_get_init_creds.3
lib/krb5/krb5_init_context.3
lib/krb5/krb5_mk_req.3
lib/krb5/krb5_principal.3
lib/krb5/krbhst.c
lib/krb5/kuserok.c
lib/krb5/log.c
lib/krb5/mcache.c
lib/krb5/misc.c
lib/krb5/mit_glue.c
lib/krb5/n-fold.c
lib/krb5/net_write.c
lib/krb5/pac.c
lib/krb5/pkinit.c
lib/krb5/plugin.c
lib/krb5/principal.c
lib/krb5/rd_cred.c
lib/krb5/rd_rep.c
lib/krb5/rd_req.c
lib/krb5/replay.c
lib/krb5/scache.c
lib/krb5/send_to_kdc.c
lib/krb5/store-test.c
lib/krb5/store.c
lib/krb5/store_fd.c
lib/krb5/test_acl.c
lib/krb5/test_ap-req.c
lib/krb5/test_cc.c
lib/krb5/test_config.c
lib/krb5/test_fx.c
lib/krb5/test_gic.c
lib/krb5/test_keytab.c
lib/krb5/test_pac.c
lib/krb5/test_pknistkdf.c
lib/krb5/test_plugin.c
lib/krb5/test_store.c
lib/krb5/test_x500.c
lib/krb5/ticket.c
lib/krb5/transited.c
lib/krb5/verify_init.c
lib/krb5/verify_user.c
lib/krb5/warn.c
lib/libedit/examples/fileman.c
lib/libedit/src/chared.c
lib/libedit/src/chartype.c
lib/libedit/src/chartype.h
lib/libedit/src/common.c
lib/libedit/src/editline/readline.h
lib/libedit/src/filecomplete.c
lib/libedit/src/histedit.h
lib/libedit/src/history.c
lib/libedit/src/key.c
lib/libedit/src/map.c
lib/libedit/src/prompt.h
lib/libedit/src/read.h
lib/libedit/src/readline.c
lib/libedit/src/refresh.c
lib/libedit/src/sys.h
lib/libedit/src/term.c
lib/libedit/src/unvis.c
lib/libedit/src/vi.c
lib/libedit/src/vis.c
lib/libedit/src/wcsdup.c
lib/ntlm/apop.c
lib/ntlm/digest.c
lib/ntlm/heim-auth.h
lib/ntlm/ntlm.c
lib/ntlm/test_commonauth.c
lib/otp/otp_md.c
lib/roken/concat.c
lib/roken/dirent-test.c
lib/roken/dirent.c
lib/roken/dlfcn_w32.c
lib/roken/ecalloc.3
lib/roken/fnmatch.c
lib/roken/get_window_size.c
lib/roken/getaddrinfo_hostspec.c
lib/roken/getarg.3
lib/roken/getcap.c
lib/roken/getifaddrs-test.c
lib/roken/getifaddrs.c
lib/roken/getifaddrs_w32.c
lib/roken/glob.c
lib/roken/hex.c
lib/roken/parse_time-test.c
lib/roken/parse_time.3
lib/roken/qsort.c
lib/roken/rename.c
lib/roken/resolve.c
lib/roken/rkpty.c
lib/roken/roken_gethostby.c
lib/roken/sendmsg.c
lib/roken/simple_exec_w32.c
lib/roken/sleep.c
lib/roken/snprintf.c
lib/roken/socket.c
lib/roken/socket_wrapper.c
lib/roken/sockstartup_w32.c
lib/roken/strftime.c
lib/roken/syslogc.c
lib/roken/test-mini_inetd.c
lib/roken/tsearch-test.c
lib/roken/unvis.c
lib/sl/sl.c
lib/sl/slc-gram.y
lib/sqlite/sqlite3.c
lib/sqlite/sqlite3.h
lib/sqlite/sqlite3ext.h
lib/wind/ldap.c
lib/wind/normalize.c
lib/wind/test-bidi.c
lib/wind/test-ldap.c
lib/wind/test-prohibited.c
lib/wind/utf8.c
tests/plugin/windc.c
tools/krb5-config.1

index 802782ffc35f5e0d7731daaaa44c8496d309f13f..3e8be9a8c404538722b3d0e263986bd3fcb9eca2 100644 (file)
@@ -104,7 +104,7 @@ kt_add(struct add_options *opt, int argc, char **argv)
        if (opt->hex_flag) {
            size_t len;
            void *data;
-       
+
            len = (strlen(opt->password_string) + 1) / 2;
 
            data = malloc(len);
index 1693c34979793b3fe897f9458c43426f39634f91..c390441f23dcd3ec9bc47a3ea2cb42135948334f 100644 (file)
@@ -73,7 +73,7 @@ change_entry (krb5_keytab keytab,
            free(conf.realm);
            krb5_set_error_message(context, ENOMEM, "malloc failed");
            return ENOMEM;
-       }       
+       }
        conf.mask |= KADM5_CONFIG_ADMIN_SERVER;
     }
 
index b4f808c281b55c5363f174b661fac06e2b64b8af..df294324bccf238cba226917bf2b0ff3309cad40 100644 (file)
@@ -157,7 +157,7 @@ kt_get(struct get_options *opt, int argc, char **argv)
            if(kadm_handle == NULL)
                break;
        }
-       
+
        ret = kadm5_create_principal(kadm_handle, &princ, mask, "x");
        if(ret == 0)
            created = 1;
@@ -174,7 +174,7 @@ kt_get(struct get_options *opt, int argc, char **argv)
            failed++;
            continue;
        }
-       
+
        ret = kadm5_get_principal(kadm_handle, princ_ent, &princ,
                              KADM5_PRINCIPAL | KADM5_KVNO | KADM5_ATTRIBUTES);
        if (ret) {
@@ -226,7 +226,7 @@ kt_get(struct get_options *opt, int argc, char **argv)
            }
            krb5_free_keyblock_contents(context, &keys[j]);
        }
-       
+
        kadm5_free_principal_ent(kadm_handle, &princ);
        krb5_free_principal(context, princ_ent);
     }
index 0b6e095cf54bb4c89c367f240013fde9bd4dd149..72a6c81725069844f7b8fec6dbbe11c79b3f5669 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1997-2004 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd April 14, 2005
index 5e154214a75463c5453c8edcf4e9b17482c17914..27d0d587023884774bcf363b32f728412524587e 100644 (file)
@@ -52,7 +52,7 @@ static struct getargs args[] = {
        NULL
     },
     {
-       "help", 
+       "help",
        'h',
        arg_flag,
        &help_flag,
@@ -60,7 +60,7 @@ static struct getargs args[] = {
        NULL
     },
     {
-       "keytab",       
+       "keytab",
        'k',
        arg_string,
        &keytab_string,
@@ -101,7 +101,7 @@ ktutil_open_keytab(void)
     }
     if (verbose_flag)
        fprintf (stderr, "Using keytab %s\n", keytab_string);
-       
+
     return keytab;
 }
 
index d2f082a9687ac88336d073c0124ab724b143f6ff..5491aaa1a534fe2baf8a8d933a569be7460bd3c1 100644 (file)
@@ -76,7 +76,7 @@ do_list(struct list_options *opt, const char *keytab_str)
     }
 
     printf ("%s:\n\n", keytab_str);
-       
+
     table = rtbl_create();
     rtbl_add_column_by_id(table, 0, "Vno", RTBL_ALIGN_RIGHT);
     rtbl_add_column_by_id(table, 1, "Type", 0);
@@ -129,12 +129,12 @@ do_list(struct list_options *opt, const char *keytab_str)
        if (entry.aliases) {
            unsigned int i;
            struct rk_strpool *p = NULL;
-           
+
            for (i = 0; i< entry.aliases->len; i++) {
                krb5_unparse_name_fixed(context, entry.principal, buf, sizeof(buf));
                rk_strpoolprintf(p, "%s%s", buf,
                                 i + 1 < entry.aliases->len ? ", " : "");
-               
+
            }
            rtbl_add_column_entry_by_id(table, 5, rk_strpoolcollect(p));
        }
index 8000158a44512f2ead5249b4b3bdd8be66b60ed3..891b29a61e0f2f58015580896feb2ff4c58a82a8 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2002 - 2007 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd November 26, 2002
@@ -70,7 +70,7 @@ obtains AFS tokens for a number of cells. What cells to get tokens for
 can either be specified as an explicit list, as file paths to get
 tokens for, or be left unspecified, in which case
 .Nm
-will use whatever magic 
+will use whatever magic
 .Xr krb_afslog 3
 decides upon.
 .Pp
@@ -131,22 +131,22 @@ Instead of using
 and
 .Fl p ,
 you may also pass a list of cells and file paths after any other
-options. These arguments are considered files if they are either 
+options. These arguments are considered files if they are either
 the strings
 .Do . Dc
 or
-.Dq .. 
+.Dq ..
 or they contain a slash, or if there exists a file by that name.
 .Sh EXAMPLES
-Assuming that there is no file called 
+Assuming that there is no file called
 .Dq openafs.org
-in the current directory, and that 
+in the current directory, and that
 .Pa /afs/openafs.org
 points to that cell, the follwing should be identical:
 .Bd -literal -offset indent
 $ afslog -c openafs.org
 $ afslog openafs.org
 $ afslog /afs/openafs.org/some/file
-.Ed 
+.Ed
 .Sh SEE ALSO
 .Xr krb_afslog 3
index f1956f334bace3f8d7fd0d73d142f43aba5a3dd6..7d5ac81428b14572ee96a269d5e8887cad670788 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2005 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd February 12, 2005
index c20eaae557268cdffa37f59a8a5ed2ad862c83cf..88cdf281fe7153193c7637d1663a2b3c70dec682 100644 (file)
@@ -601,7 +601,7 @@ int k5dcecreate(luid, luser, pname, krbtgt)
                                "Error while adding credentials for %s because %s\n",
                                username, err_string);
            goto abort;
-         }     
+         }
          DEEDEBUG("validating and certifying\n");
          /*
           * Now "validate" and certify the identity,
index 0c1355a8eee6c56f7f4952e389d04742e121d14c..dbd5d581ee3e0563ab39b18a6c2de6a5bf75335f 100644 (file)
@@ -987,7 +987,7 @@ setprompt(int argc, char **argv)
 void
 setglob(int argc, char **argv)
 {
-       
+
        doglob = !doglob;
        printf("Globbing %s.\n", onoff(doglob));
        code = doglob;
index d4483c510a5808481a6d6806948dbe5647c58c07..7b4c329425366d37f4be692639ddd736c829bae7 100644 (file)
@@ -196,7 +196,7 @@ struct cmd cmdtab[] = {
 #if defined(KRB5)
        { "afslog",     afsloghelp,     0,      1,      0,      afslog },
 #endif
-       
+
        { 0 },
 };
 
index 0f77f1d6884c601daf50c73802c02b457e730976..1cd2f46ebb43701323579ca216f0db80af50ae64 100644 (file)
@@ -89,7 +89,7 @@ hookup (const char *host, int port)
            strlcpy (hostnamebuf, a->ai_canonname, sizeof(hostnamebuf));
 
        memcpy (hisctladdr, a->ai_addr, a->ai_addrlen);
-       
+
        error = connect (s, a->ai_addr, a->ai_addrlen);
        if (error < 0) {
            char addrstr[256];
@@ -98,7 +98,7 @@ hookup (const char *host, int port)
                             addrstr, sizeof(addrstr),
                             NULL, 0, NI_NUMERICHOST) != 0)
                strlcpy (addrstr, "unknown address", sizeof(addrstr));
-                       
+
            warn ("connect %s", addrstr);
            close (s);
            s = -1;
@@ -622,7 +622,7 @@ copy_stream (FILE * from, FILE * to)
                    goto try_read;
                break;
            }
-               
+
            res = sec_write (fileno (to), chunk, len);
            if (msync (chunk, len, MS_ASYNC))
                warn ("msync");
index a9c1cc3d753b4999d2be10eaaa0e969201383fce..29be7641c965d1ac9e87e237658934077ac12b56 100644 (file)
@@ -158,7 +158,7 @@ sockaddr_to_gss_address (struct sockaddr *sa,
     }
     default :
        errx (1, "unknown address family %d", sa->sa_family);
-       
+
     }
 }
 
@@ -187,7 +187,7 @@ gss_adat(void *app_data, void *buf, size_t len)
        sockaddr_to_gss_address (ctrl_addr,
                                 &bindings->acceptor_addrtype,
                                 &bindings->acceptor_address);
-       
+
        bindings->application_data.length = 0;
        bindings->application_data.value = NULL;
     } else
@@ -302,7 +302,7 @@ import_name(const char *kname, const char *host, gss_name_t *target_name)
        OM_uint32 new_stat;
        OM_uint32 msg_ctx = 0;
        gss_buffer_desc status_string;
-       
+
        gss_display_status(&new_stat,
                           min_stat,
                           GSS_C_MECH_CODE,
@@ -337,7 +337,7 @@ gss_auth(void *app_data, char *host)
     OM_uint32 mech_flags = GSS_C_MUTUAL_FLAG | GSS_C_SEQUENCE_FLAG;
 
     const char *knames[] = { "ftp", "host", NULL }, **kname = knames;
-       
+
 
     if(import_name(*kname++, host, &target_name))
        return AUTH_ERROR;
@@ -349,14 +349,14 @@ gss_auth(void *app_data, char *host)
        bindings = malloc(sizeof(*bindings));
        if (bindings == NULL)
            errx(1, "out of memory");
-       
+
        sockaddr_to_gss_address (myctladdr,
                                 &bindings->initiator_addrtype,
                                 &bindings->initiator_address);
        sockaddr_to_gss_address (hisctladdr,
                                 &bindings->acceptor_addrtype,
                                 &bindings->acceptor_address);
-       
+
        bindings->application_data.length = 0;
        bindings->application_data.value = NULL;
     } else
@@ -397,7 +397,7 @@ gss_auth(void *app_data, char *host)
                }
                continue;
            }
-       
+
            if (bindings != GSS_C_NO_CHANNEL_BINDINGS)
                free(bindings);
 
@@ -490,7 +490,7 @@ gss_auth(void *app_data, char *host)
            gss_release_name(&min_stat, &targ_name);
        } else
            printf("Failed to get gss name of peer.\n");
-    }  
+    }
 
 
     return AUTH_OK;
index 8a45d10c98134f556d07fa69943a7af16c9c431d..5876f51dc4dd1c09d8a3f399281e86ecf0ca3c41 100644 (file)
@@ -142,7 +142,7 @@ main(int argc, char **argv)
        }
        if (argc > 0) {
            char *xargv[5];
-       
+
            if (setjmp(toplevel))
                exit(0);
            signal(SIGINT, intr);
@@ -217,7 +217,7 @@ tail(filename)
        char *filename;
 {
        char *s;
-       
+
        while (*filename) {
                s = strrchr(filename, '/');
                if (s == NULL)
index f186ab8189551d532a207d55def94e822d7cc56f..fe2f023091e1477bd393006cf0aec90e3f398933 100644 (file)
@@ -818,7 +818,7 @@ sec_login(char *host)
            return -1;
        }
        app_data = tmp;
-       
+
        if((*m)->init && (*(*m)->init)(app_data) != 0) {
            printf("Skipping %s...\n", (*m)->name);
            continue;
@@ -840,7 +840,7 @@ sec_login(char *host)
        }
 
        ret = (*(*m)->auth)(app_data, host);
-       
+
        if(ret == AUTH_CONTINUE)
            continue;
        else if(ret != AUTH_OK){
index 5fb8e8e2e9c2cf8e26b30b41e482eac91042cb3c..05ae7366bb465014c74587ea211ea454db2c21d3 100644 (file)
@@ -161,7 +161,7 @@ cmd
                                    socket_get_address(his_addr),
                                    socket_addr_size(his_addr)) != 0)) {
                            usedefault = 1;
-                           reply(500, "Illegal PORT range rejected.");                     
+                           reply(500, "Illegal PORT range rejected.");
                        } else {
                            usedefault = 0;
                            if (pdata >= 0) {
@@ -1013,7 +1013,7 @@ struct tab sitetab[] = {
        { "FIND", LOCATE, STR1, 1,      "<sp> globexpr" },
 
        { "URL",  URL,  ARGS, 1,        "?" },
-       
+
        { NULL,   0,    0,    0,        0 }
 };
 
index e97bb1d7949003145a60d4ea8fdc577483a2064a..257273699370f92b535fce3bf0033e33efb99386 100644 (file)
@@ -191,7 +191,7 @@ parse_auth_level(char *str)
        else
            warnx("bad value for -a: `%s'", p);
     }
-    return ret;        
+    return ret;
 }
 
 /*
@@ -277,7 +277,7 @@ main(int argc, char **argv)
 
     if(help_flag)
        usage(0);
-       
+
     if(version_flag) {
        print_version(NULL);
        exit(0);
@@ -288,7 +288,7 @@ main(int argc, char **argv)
     {
        char *p;
        long val = 0;
-       
+
        if(guest_umask_string) {
            val = strtol(guest_umask_string, &p, 8);
            if (*p != '\0' || val < 0)
@@ -319,7 +319,7 @@ main(int argc, char **argv)
            else
                warnx("bad value for -p");
     }
-               
+
     if (maxtimeout < ftpd_timeout)
        maxtimeout = ftpd_timeout;
 
@@ -401,7 +401,7 @@ main(int argc, char **argv)
     show_file(_PATH_FTPWELCOME, 220);
     /* reply(220,) must follow */
     gethostname(hostname, sizeof(hostname));
-       
+
     reply(220, "%s FTP server (%s"
 #ifdef KRB5
          "+%s"
@@ -947,7 +947,7 @@ pass(char *passwd)
        }
        if(!do_login(230, passwd))
          return;
-       
+
        /* Forget all about it... */
        end_login();
 }
@@ -983,7 +983,7 @@ retrieve(const char *cmd, char *name)
                    for(p = cmds; p->ext; p++){
                        char *tail = name + strlen(name) - strlen(p->ext);
                        char c = *tail;
-                       
+
                        if(strcmp(tail, p->ext) == 0 &&
                           (*tail  = 0) == 0 &&
                           access(name, R_OK) == 0){
@@ -1007,7 +1007,7 @@ retrieve(const char *cmd, char *name)
                                free(ext);
                            }
                        }
-                       
+
                    }
                    if(p->ext){
                        fin = ftpd_popen(line, "r", 0, 0);
@@ -1279,7 +1279,7 @@ dataconn(const char *name, off_t size, const char *mode)
 #if defined(IP_TOS) && defined(HAVE_SETSOCKOPT)
                {
                    int tos = IPTOS_THROUGHPUT;
-               
+
                    setsockopt(s, IPPROTO_IP, IP_TOS, (void *)&tos,
                               sizeof(tos));
                }
@@ -1373,7 +1373,7 @@ send_data(FILE *instr, FILE *outstr)
                goto data_err;
            reply(226, "Transfer complete.");
            return;
-               
+
        case TYPE_I:
        case TYPE_L:
 #if 0 /* XXX handle urg flag */
@@ -1557,13 +1557,13 @@ receive_data(FILE *instr, FILE *outstr)
        urgflag = 0;
        return (-1);
     }
-       
+
 data_err:
     transflag = 0;
     urgflag = 0;
     perror_reply(426, "Data Connection");
     return (-1);
-       
+
 file_err:
     transflag = 0;
     urgflag = 0;
@@ -1887,7 +1887,7 @@ dologout(int status)
     exit(status);
 #else
     _exit(status);
-#endif 
+#endif
 }
 
 void abor(void)
@@ -2097,7 +2097,7 @@ eprt(char *str)
        case 2 :
            data_dest->sa_family = AF_INET6;
            break;
-#endif         
+#endif
        case 1 :
            data_dest->sa_family = AF_INET;
                break;
@@ -2338,7 +2338,7 @@ out:
     transflag = 0;
     if (dout != NULL){
        sec_write(fileno(dout), buf, 0); /* XXX flush */
-       
+
        fclose(dout);
     }
     data = -1;
index b450a3db7b80e9d2a9b524f409da1e9180d36b72..5da107d29b0f8445a1ae464a4fb199ebbcbfe923 100644 (file)
@@ -101,7 +101,7 @@ print_tickets (krb5_context context,
                                     &cursor,
                                     &cred)) == 0) {
        if (print_cred(context, &cred))
-           return 500;         
+           return 500;
        krb5_free_cred_contents (context, &cred);
     }
     if (ret != KRB5_CC_END) {
@@ -137,7 +137,7 @@ klist5(void)
     else
        ret = krb5_cc_default (context, &ccache);
     if (ret) {
-       lreply(500, "krb5_cc_default: %d", ret);        
+       lreply(500, "krb5_cc_default: %d", ret);
        return 500;
     }
 
@@ -155,7 +155,7 @@ klist5(void)
 
     ret = krb5_cc_close (context, ccache);
     if (ret) {
-       lreply(500, "krb5_cc_close: %d", ret);  
+       lreply(500, "krb5_cc_close: %d", ret);
        exit_status = 500;
     }
 
index ccc6c72a717ade1b67e8cbf46344d76e29f6e2d1..59f45b205d7374315e76c7017a65ca073f895548 100644 (file)
@@ -179,10 +179,10 @@ ftpd_logwtmp_wtmp(char *line, char *name, char *host)
     if(fd >= 0) {
 #ifdef WTMP_FILE
        write(fd, &ut, sizeof(struct utmp)); /* XXX */
-#endif 
+#endif
 #ifdef WTMPX_FILE
        write(fdx, &utx, sizeof(struct utmpx));
-#endif 
+#endif
     }
 }
 
index 1abb37f89a2174dda52d365dfaeaf5ae2dee2ca5..a8366b91e773828b09af7cbc14a36b91f876d4bf 100644 (file)
@@ -425,19 +425,19 @@ lstat_file (const char *file, struct stat *sb)
        static ino_t       ino_counter = 0, ino_last = 0;
        int                ret;
        const int          maxsize = 2048;
-       
+
        path_bkp = strdup (file);
        if (path_bkp == NULL)
            return -1;
-       
+
        a_params.out = malloc (maxsize);
        if (a_params.out == NULL) {
            free (path_bkp);
            return -1;
        }
-       
+
        /* If path contains more than the filename alone - split it */
-       
+
        last = strrchr (path_bkp, '/');
        if (last != NULL) {
            if(last[1] == '\0')
@@ -457,10 +457,10 @@ lstat_file (const char *file, struct stat *sb)
            dir = ".";
            a_params.in = path_bkp;
        }
-       
+
        a_params.in_size  = strlen (a_params.in) + 1;
        a_params.out_size = maxsize;
-       
+
        ret = k_pioctl (dir, VIOC_AFS_STAT_MT_PT, &a_params, 0);
        free (a_params.out);
        if (ret < 0) {
@@ -602,7 +602,7 @@ list_files(FILE *out, const char **files, int n_files, int flags)
        max_inode = find_log10(max_inode);
        max_bsize = find_log10(max_bsize);
        max_n_link = find_log10(max_n_link);
-       
+
        if(n_print > 0)
            sec_fprintf2(out, "total %lu\r\n", (unsigned long)total_blocks);
        if(flags & LS_SORT_REVERSE)
index 916e32f758a8cce835fa69f87d819c045d9f77f7..5488472352ac5e2646ef31f2252ce7b8ce16ea59 100644 (file)
@@ -196,8 +196,8 @@ ftpd_popen(char *program, char *type, int do_stderr, int no_glob)
                close(pdes[0]);
        }
        pids[fileno(iop)] = pid;
-       
-pfree: 
+
+pfree:
        for (argc = 1; gargv[argc] != NULL; argc++)
            free(gargv[argc]);
 
index b38c1b8a57b7a842a427385028e6ac5418525b78..c972cada2621c9b038f8fe3ca07253dcab3aa2eb 100644 (file)
@@ -327,7 +327,7 @@ build_context(struct client *ipeer, struct client *apeer,
     krb5_data_zero(&itoken);
 
     while (!iDone || !aDone) {
-       
+
        if (iDone) {
            warnx("iPeer already done, aPeer want extra rtt");
            val = GSMERR_ERROR;
@@ -405,7 +405,7 @@ build_context(struct client *ipeer, struct client *apeer,
 out:
     return val;
 }
-                       
+
 static void
 test_mic(struct client *c1, int32_t hc1, struct client *c2, int32_t hc2)
 {
@@ -540,17 +540,17 @@ test_token(struct client *c1, int32_t hc1, struct client *c2, int32_t hc2, int w
            if (val) return val;
            val = test_wrap_ext(c2, hc2, c1, hc1, 1, 0);
            if (val) return val;
-           
+
            val = test_wrap_ext(c1, hc1, c2, hc2, 1, 1);
            if (val) return val;
            val = test_wrap_ext(c2, hc2, c1, hc1, 1, 1);
            if (val) return val;
-           
+
            val = test_wrap_ext(c1, hc1, c2, hc2, 0, 0);
            if (val) return val;
            val = test_wrap_ext(c2, hc2, c1, hc1, 0, 0);
            if (val) return val;
-           
+
            val = test_wrap_ext(c1, hc1, c2, hc2, 0, 1);
            if (val) return val;
            val = test_wrap_ext(c2, hc2, c1, hc1, 0, 1);
@@ -780,7 +780,7 @@ main(int argc, char **argv)
     if (password == NULL)
        errx(1, "password missing from %s", user);
     *password++ = 0;
-       
+
     if (slaves.num_strings == 0)
        errx(1, "no principals");
 
@@ -834,7 +834,7 @@ main(int argc, char **argv)
        int32_t hCred, val, delegCred;
        int32_t clientC, serverC;
        struct client *c = clients[i];
-       
+
        if (c->target_name == NULL)
            continue;
 
@@ -893,18 +893,18 @@ main(int argc, char **argv)
        int32_t hCred, val, delegCred = 0;
        int32_t clientC = 0, serverC = 0;
        struct client *client, *server;
-       
+
        p = list[i];
-       
+
        client = get_client(p[0]);
-       
+
        val = acquire_cred(client, user, password, 1, &hCred);
        if (val != GSMERR_OK)
            errx(1, "failed to acquire_cred: %d", (int)val);
 
        for (j = 1; j < num_clients + 1; j++) {
            server = get_client(p[j % num_clients]);
-       
+
            if (server->target_name == NULL)
                break;
 
@@ -921,11 +921,11 @@ main(int argc, char **argv)
                warnx("build_context failed: %d", (int)val);
                break;
            }
-       
+
            val = test_token(client, clientC, server, serverC, wrap_ext);
            if (val)
                break;
-       
+
            toast_resource(client, clientC);
            toast_resource(server, serverC);
            if (!delegCred) {
index 30eb01137a286888390b8e31857c38d6e0c388d2..916837b42de1e43dbe78bfc698f188f1abbe44d8 100644 (file)
@@ -229,7 +229,7 @@ acquire_cred(struct client *c,
                   "krb5_get_init_creds failed: %d", ret);
        return convert_krb5_to_gsm(ret);
     }
-       
+
     ret = krb5_cc_new_unique(context, "MEMORY", NULL, &id);
     if (ret)
        krb5_err (context, 1, ret, "krb5_cc_initialize");
@@ -358,7 +358,7 @@ HandleOP(InitContext)
        if (ctx)
            krb5_errx(context, 1, "initcreds, context not NULL, but first req");
     }
-       
+
     if ((flags & GSS_C_DELEG_FLAG) != 0)
        logmessage(c, __FILE__, __LINE__, 0, "init_sec_context delegating");
     if ((flags & GSS_C_DCE_STYLE) != 0)
@@ -484,7 +484,7 @@ HandleOP(AcceptContext)
        gss_release_cred(&min_stat, &deleg_cred);
        deleg_hcred = 0;
     }
-       
+
 
     gsm_error = convert_gss_to_gsm(maj_stat);
 
@@ -799,7 +799,7 @@ HandleOP(Unwrap)
 
     if (maj_stat != GSS_S_COMPLETE)
        errx(1, "gss_unwrap failed: %d/%d", maj_stat, min_stat);
-       
+
     krb5_data_free(&token);
     if (maj_stat == GSS_S_COMPLETE) {
        token.data = output_token.value;
@@ -1013,7 +1013,7 @@ HandleOP(UnwrapExt)
 
     if (maj_stat != GSS_S_COMPLETE)
        errx(1, "gss_unwrap failed: %d/%d", maj_stat, min_stat);
-       
+
     if (maj_stat == GSS_S_COMPLETE) {
        token.data = iov[1].buffer.value;
        token.length = iov[1].buffer.length;
@@ -1100,7 +1100,7 @@ create_client(int fd, int port, const char *moniker)
     {
        c->salen = sizeof(c->sa);
        getpeername(fd, (struct sockaddr *)&c->sa, &c->salen);
-       
+
        getnameinfo((struct sockaddr *)&c->sa, c->salen,
                    c->servername, sizeof(c->servername),
                    NULL, 0, NI_NUMERICHOST);
index 92261a8bfad1258026c783cd91e8c05a2696660a..c50349e015f4573a5a3926a00eee386c1de8162c 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2000 - 2001 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd July  2, 2000
index 244f3c8840ec18d68cf0872f3e8955eb1a2de5dd..8b98c2180bdda0c7a4c8ee1b365f535e74107a40 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2000 - 2002 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd July  2, 2000
index 9c3b20672a76092ae2da0ae77297c44d7c7eb47a..b19b685f30b112f06ba0107d8d5a625fb684985b 100644 (file)
@@ -693,7 +693,7 @@ replace_cookie(int xserver, int fd, char *filename, int cookiesp) /* XXX */
      if (f != NULL) {
         Xauth *auth = find_auth_cookie (f);
         u_char len[6] = {0, 0, 0, 0, 0, 0};
-       
+
         fclose (f);
 
         if (auth != NULL) {
index b29cd025d87ed530728e5c880128c8c253205c20..eeb62a2d2694f758ea213faf279d53e15e3da755 100644 (file)
@@ -256,7 +256,7 @@ copy_out (kx_context *kc, int from_fd, int to_fd)
     }
     return krb5_write (kc, to_fd, buf, len);
 }
-       
+
 /*
  * Copy from the socket `from_fd' decrypting to `to_fd'.
  * Return 0, -1 or len.
index 4020c7e35a3eb5c0277f0af9bf1d6292e0dfbf2d..2f5e35cecdf90eb9e219ee7739edb941f78cb98f 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1996 - 1997 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd September 27, 1996
index 641683b00942901239c30c8efd9646a0ca6b44a0..ffc2e85b58c16f418f72daa3dbc363d67b4982ca 100644 (file)
@@ -182,7 +182,7 @@ status_output (int debugp)
        printf ("%u\t%s\t%s\n", (unsigned)getpid(), display, xauthfile);
     else {
        pid_t pid;
-       
+
        pid = fork();
        if (pid < 0) {
            err(1, "fork");
@@ -279,7 +279,7 @@ doit_passive (kx_context *kc)
             p++;
             p += kx_get_int (p, &tmp, 4, 0);
         }
-       
+
         ++nchild;
         child = fork ();
         if (child < 0) {
@@ -292,7 +292,7 @@ doit_passive (kx_context *kc)
             close (otherside);
 
             socket_set_port(kc->thataddr, htons(tmp));
-               
+
             fd = socket (kc->thataddr->sa_family, SOCK_STREAM, 0);
             if (fd < 0)
                 err(1, "socket");
index a2fe3ab6856d54f6034dfbec73529110f378902f..4a0101ec2d47b35fb8352e8df1c5d36142338a10 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1996 - 1997, 2001 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd September 27, 1996
index be36cd4f24f877ad7adbe218aacc08167cdb276b..8598fb1672a6f264d27847277a9bcdbfc5824f20 100644 (file)
@@ -424,7 +424,7 @@ close_connection(int fd, const char *message)
     p += mlen;
     while((p - buf) % 4)               /* pad to multiple of 4 bytes */
        *p++ = 0;
-       
+
     /* now fill in length of additional data */
     if(lsb) {
        buf[6] = (p - buf - 8) / 4;
@@ -502,7 +502,7 @@ doit_passive (kx_context *kc,
     memcpy (p, xauthfile, len);
     p += len;
     rem -= len;
-       
+
     if(kx_write (kc, sock, msg, p - msg) < 0) {
        syslog (LOG_ERR, "write: %m");
        cleanup(nsockets, sockets);
@@ -515,7 +515,7 @@ doit_passive (kx_context *kc,
        int i;
        int ret;
        int cookiesp = TRUE;
-       
+
        FD_ZERO(&fds);
        if (sock >= FD_SETSIZE) {
            syslog (LOG_ERR, "fd too large");
@@ -640,7 +640,7 @@ doit_active (kx_context *kc,
 
     p = msg;
     *p++ = ACK;
-       
+
     if(kx_write (kc, sock, msg, p - msg) < 0) {
        syslog (LOG_ERR, "write: %m");
        return 1;
@@ -648,7 +648,7 @@ doit_active (kx_context *kc,
     for (;;) {
        pid_t child;
        int len;
-       
+
        len = kx_read (kc, sock, msg, sizeof(msg));
        if (len < 0) {
            syslog (LOG_ERR, "read: %m");
index 63478a201f82042ac0f5b8df4ce11cd89209507b..8cdb5ae8022d685f03e649bdd52b52ccf148d6fe 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1996 - 1998, 2001 - 2002 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd March  7, 2004
index d010d757e5f90ff4273c2e75718b5c2c7df6474d..a7e848c6e6c15580c701807ca91681309584612d 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1996 - 1997, 2001 - 2003 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd April 11, 2003
index 58acc05443679c80731e298d1d453e3b8d2be105..e030d1534cd46dfcb58e67a7eb4e047083830303 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1997, 2001 - 2002 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd March 31, 1997
index 8420c3b829c5daff4e863fef23f2908c8f53f60e..1068b967014fa0314afe5be7b13086aacb76f3ec 100644 (file)
@@ -192,7 +192,7 @@ read_limits_conf(const char *file, const struct passwd *pwd)
                continue;
            l->has_limit = level;
        }
-       
+
        /* XXX unclear: if you soft to more than default hard, should
            we set hard to soft? this code doesn't. */
        if(strcasecmp(args[1], "soft") == 0 || strcmp(args[1], "-") == 0)
index 46912c1d66e4aa5ac059b526c923d9ab5efdd49c..b01e7872a6d89d7a08f7eba6eb629db894db2572 100644 (file)
@@ -1,5 +1,5 @@
 .\" $Id$
-.\" 
+.\"
 .Dd April 22, 2005
 .Dt LOGIN 1
 .Os HEIMDAL
@@ -13,8 +13,8 @@
 .Op Fl h Ar hostname
 .Ar [username]
 .Sh DESCRIPTION
-This manual page documents  the 
-.Nm login 
+This manual page documents  the
+.Nm login
 program distributed with the Heimdal Kerberos 5 implementation, it may
 differ in important ways from your system version.
 .Pp
@@ -22,7 +22,7 @@ The
 .Nm login
 programs logs users into the system. It is intended to be run by
 system daemons like
-.Xr getty 8 
+.Xr getty 8
 or
 .Xr telnetd 8 .
 If you are already logged in, but want to change to another user, you
@@ -32,16 +32,16 @@ should use
 A username can be given on the command line, else one will be prompted
 for.
 .Pp
-A password is required to login, unless the 
+A password is required to login, unless the
 .Fl f
 option is given (indicating that the calling program has already done
 proper authentication). With
 .Fl f
-the user will be logged in without further questions. 
+the user will be logged in without further questions.
 .Pp
 For password authentication Kerberos 5, Kerberos 4 (if compiled in),
 OTP (if compiled in) and local
-.No ( Pa /etc/passwd ) 
+.No ( Pa /etc/passwd )
 passwords are supported. OTP will be used if the the user is
 registered to use it, and
 .Nm login
@@ -70,7 +70,7 @@ to preserve all environment variables. If not given, only the
 and
 .Dv TZ
 variables are preserved. It could be a security risk to pass random
-variables to 
+variables to
 .Nm login
 or the user shell, so the calling daemon should make sure it only
 passes
@@ -90,12 +90,12 @@ Then various system parameters are set up, like changing the owner of
 the tty to the user, setting up signals, setting the group list, and
 user and group id. Also various machine specific tasks are performed.
 .Pp
-Next 
+Next
 .Nm login
-changes to the users home directory, or if that fails, to 
+changes to the users home directory, or if that fails, to
 .Pa / .
 The environment is setup, by adding some required variables (such as
-.Dv PATH ) , 
+.Dv PATH ) ,
 and also authentication related ones (such as
 .Dv KRB5CCNAME ) .
 If an environment file exists
@@ -107,31 +107,31 @@ If one or more login message files are configured, their contents is
 printed to the terminal.
 .Pp
 If a login time command is configured, it is executed. A logout time
-command can also be configured, which makes 
+command can also be configured, which makes
 .Nm login
 fork, and wait for the user shell to exit, and then run the command.
 This can be used to clean up user credentials.
 .Pp
 Finally, the user's shell is executed. If the user logging in is root,
-and root's login shell does not exist, a default shell (usually 
+and root's login shell does not exist, a default shell (usually
 .Pa /bin/sh )
 is also tried before giving up.
 .Sh ENVIRONMENT
-These environment variables are set by login (not including ones set by 
+These environment variables are set by login (not including ones set by
 .Pa /etc/environment ) :
 .Pp
 .Bl -tag -compact -width USERXXLOGNAME
 .It Dv PATH
 the default system path
 .It Dv HOME
-the user's home directory (or possibly 
+the user's home directory (or possibly
 .Pa / )
 .It Dv USER , Dv LOGNAME
 both set to the username
 .It Dv SHELL
 the user's shell
 .It Dv TERM , Dv TZ
-set to whatever is passed to 
+set to whatever is passed to
 .Nm login
 .It Dv KRB5CCNAME
 if the password is verified via Kerberos 5, this will point to the
@@ -144,7 +144,7 @@ ticket file
 .Bl -tag -compact -width Ds
 .It Pa /etc/environment
 Contains a set of environment variables that should be set in addition
-to the ones above. It should contain sh-style assignments like 
+to the ones above. It should contain sh-style assignments like
 .Dq VARIABLE=value .
 Note that they are not parsed the way a shell would. No variable
 expansion is performed, and all strings are literal, and quotation
@@ -160,7 +160,7 @@ FOO="this is a string"
 BAR= FOO='this is a string'
 .Ed
 .It Pa /etc/login.access
-See 
+See
 .Xr login.access 5 .
 .It Pa /etc/login.conf
 This is a termcap style configuration file, that contains various
@@ -204,14 +204,14 @@ programs typically print all sorts of information by default, such as
 last time you logged in, if you have mail, and system message files.
 This version of
 .Nm login
-does not, so there is no reason for 
+does not, so there is no reason for
 .Pa .hushlogin
 files or similar. We feel that these tasks are best left to the user's
-shell, but the 
+shell, but the
 .Li login_program
 facility allows for a shell independent solution, if that is desired.
 .Sh EXAMPLES
-A 
+A
 .Pa login.conf
 file could look like:
 .Bd -literal -offset indent
@@ -224,8 +224,8 @@ The
 .Pa limits.conf
 file consists of a table with four whitespace separated fields. First
 field is a username or a groupname (prefixed with
-.Sq @ ) , 
-or 
+.Sq @ ) ,
+or
 .Sq * .
 Second field is
 .Sq soft ,
@@ -234,11 +234,11 @@ or
 .Sq -
 (the last meaning both soft and hard).
 Third field is a limit name (such as
-.Sq cpu 
-or 
+.Sq cpu
+or
 .Sq core ) .
 Last field is the limit value (a number or
-.Sq - 
+.Sq -
 for unlimited). In the case of data sizes, the value is in kilobytes,
 and cputime is in minutes.
 .Sh SEE ALSO
index 0d67a5f5c3d590b5bfa454262ac5eea47e643d93..7edefa2019f3fc11364a6999971895be1ca011e6 100644 (file)
@@ -1,5 +1,5 @@
 .\" $Id$
-.\" 
+.\"
 .Dd March 21, 2003
 .Dt LOGIN.ACCESS 5
 .Os HEIMDAL
@@ -13,7 +13,7 @@ file specifies on which ttys or from which hosts certain users are
 allowed to login.
 .Pp
 At login, the
-.Pa /etc/login.access 
+.Pa /etc/login.access
 file is checked for the first entry that matches a specific user/host
 or user/tty combination. That entry can either allow or deny login
 access to that user.
@@ -51,5 +51,5 @@ make the group match if the user also matches.
 .Sh AUTHORS
 The
 .Fn login_access
-function was written by 
+function was written by
 Wietse Venema. This manual page was written for Heimdal.
index 6f0b626487adf6a8e4e388b6b0f428d344694da7..6b16f0b7157adcd0dca39d4248176aef27563e5b 100644 (file)
@@ -365,7 +365,7 @@ do_login(const struct passwd *pwd, char *tty, char *ttyn)
 
        read_limits_conf(file, pwd);
     }
-       
+
 #ifdef HAVE_SETPCRED
     if (setpcred (pwd->pw_name, NULL) == -1)
        warn("setpcred(%s)", pwd->pw_name);
@@ -599,7 +599,7 @@ main(int argc, char **argv)
        print_version (NULL);
        return 0;
     }
-       
+
     if (geteuid() != 0)
        errx(1, "only root may use login, use su");
 
@@ -687,7 +687,7 @@ main(int argc, char **argv)
                   sig_handler(0);
             }
          }
-       
+
        if(pwd == NULL){
            fprintf(stderr, "Login incorrect.\n");
            ask = 1;
index abb901bb9cc18518c9d18b78fd52beb829422591..86769486e223f5881df37611d00e2b113133e505 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1996, 2000 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd November 17, 1996
index e4cf9ca6a9823dd0b078473a8895dfcf9cac0d3d..8045933980d7e7779c6de8dbe2b290eefa9c675f 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1996, 2000 - 2001 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd November 17, 1996
index bca03e66e79a54d6ee2eacf3be5d9033d8c8b3a4..c145aa448830cc195edc7ce6161b460b21c48e50 100644 (file)
@@ -195,7 +195,7 @@ main(int argc, char **argv)
        print_version (NULL);
        return 0;
     }
-       
+
     if (argc < 1)
        usage (1);
 
index 2328d5a2289447811be4ec8b54fe6e9e0a669c24..59551dce655c9c39aade058e5e79370346bde988 100644 (file)
@@ -83,14 +83,14 @@ pop_xdele(POP *p)
            continue; /* no point in returning error */
        /*  Flag the message for deletion */
        mp->flags |= DEL_FLAG;
-       
+
 #ifdef DEBUG
        if(p->debug)
            pop_log(p, POP_DEBUG,
                    "Deleting message %u at offset %ld of length %ld\n",
                    mp->number, mp->offset, mp->length);
 #endif /* DEBUG */
-       
+
        /*  Update the messages_deleted and bytes_deleted counters */
        p->msgs_deleted++;
        p->bytes_deleted += mp->length;
index b5e57b3984e19a25e67b60fa2c8e320ff27feb23..8ef477f4b3eeb5e1e2892ffc607f71005bb7d74b 100644 (file)
@@ -105,7 +105,7 @@ add_missing_headers(POP *p, MsgInfoList *mp)
                             p->user);
        }
     }
-#endif 
+#endif
 #ifdef XOVER
     if (mp->subject == NULL)
        mp->subject = "<none>";
@@ -219,7 +219,7 @@ pop_dropinfo(POP *p)
            pop_log(p,POP_DEBUG,
                    "Msg %d at offset %ld is %ld octets long and has %u lines and id %s.",
                     mp->number,mp->offset,mp->length,mp->lines, mp->msg_id);
-#else  
+#else
             pop_log(p,POP_DEBUG,
                 "Msg %d at offset %d is %d octets long and has %u lines.",
                     mp->number,mp->offset,mp->length,mp->lines);
index fd7987bb9459f28939ae64bfedee31641a1ccc66..ee550bd7f7231ee2a1a95fba427e3cbd59b63e1e 100644 (file)
@@ -62,7 +62,7 @@ krb5_authenticate (POP *p, int s, u_char *buf, struct sockaddr *addr)
     if (memcmp (buf, "\x00\x00\x00\x13", 4) != 0)
        return -1;
     len = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | (buf[3]);
-       
+
     if (krb5_net_read(p->context, &s, buf, len) != len)
        return -1;
     if (len != sizeof(KRB5_SENDAUTH_VERSION)
index e7f9aeb809cdde73843c231e2dbc6d468abfddad..a89a99d0fdec03c229898e203f16804e4e791034 100644 (file)
@@ -109,7 +109,7 @@ login_user(POP *p)
        /*  Make a temporary copy of the user's maildrop */
        /*    and set the group and user id */
        if (pop_dropcopy(p, pw) != POP_SUCCESS) return (POP_FAILURE);
-       
+
        /*  Get information about the maildrop */
        if (pop_dropinfo(p) != POP_SUCCESS) return(POP_FAILURE);
     } else {
@@ -143,7 +143,7 @@ pop_pass (POP *p)
 #ifdef KRB5
        if (p->version == 5) {
            char *name;
-       
+
            if (!krb5_kuserok (p->context, p->principal, p->user)) {
                pop_log (p, POP_PRIORITY,
                         "krb5 permission denied");
index 9d2d865f373d0ea2976996e7d9b0696411104dad..187ecd2284d65a1e5f123dc29b9fb510045e6634 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2001 - 2004 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd July 14, 2004
@@ -54,7 +54,7 @@ serves mail via the Post Office Protocol.  Supported options include:
 .It Fl a Ar plaintext Ns \*(Ba Ns Ar otp Ns \*(Ba Ns Ar sasl
 Tells
 .Nm
-which authentication mode is acceptable, 
+which authentication mode is acceptable,
 .Ar sasl
 enables SASL (RFC2222),  and
 .Ar otp
index 1210a6f335f727f839651ec1d6b95355ce22eb2f..bb474916862d490ae9f62460f03df8d22a376ec4 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2000 - 2002 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd March 4, 2000
index c2d6c166f275df0e5340039faad6dc53c43a05bc..5ccb954eeeba68ebf478a8a63900b28cc19d376f 100644 (file)
@@ -168,20 +168,20 @@ write_state_init (struct write_state *w, int fd)
 static void
 write_state_add (struct write_state *w, void *v, size_t len)
 {
-    if(w->niovecs == w->allociovecs) {                         
-       if(w->niovecs == w->maxiovecs) {                                
-           if(writev (w->fd, w->iovecs, w->niovecs) < 0)               
-               err(1, "writev");                               
-           w->niovecs = 0;                                     
-       } else {                                                
-           w->allociovecs = min(w->allociovecs + STEP, w->maxiovecs);  
-           w->iovecs = erealloc (w->iovecs,                            
-                                 w->allociovecs * sizeof(*w->iovecs)); 
-       }                                                       
-    }                                                          
-    w->iovecs[w->niovecs].iov_base = v;                                
-    w->iovecs[w->niovecs].iov_len  = len;                              
-    ++w->niovecs;                                                      
+    if(w->niovecs == w->allociovecs) {
+       if(w->niovecs == w->maxiovecs) {
+           if(writev (w->fd, w->iovecs, w->niovecs) < 0)
+               err(1, "writev");
+           w->niovecs = 0;
+       } else {
+           w->allociovecs = min(w->allociovecs + STEP, w->maxiovecs);
+           w->iovecs = erealloc (w->iovecs,
+                                 w->allociovecs * sizeof(*w->iovecs));
+       }
+    }
+    w->iovecs[w->niovecs].iov_base = v;
+    w->iovecs[w->niovecs].iov_len  = len;
+    ++w->niovecs;
 }
 
 static void
@@ -310,12 +310,12 @@ doit(int s,
            else
                err (1, "select");
        }
-       
+
        if (FD_ISSET(s, &readset)) {
            char *beg, *p;
            size_t rem;
            int blank_line = 0;
-       
+
            if(in_len >= in_buf_size) {
                char *tmp = erealloc(in_buf, in_buf_size + PUSH_BUFSIZ + 1);
                in_ptr = tmp + (in_ptr - in_buf);
@@ -328,11 +328,11 @@ doit(int s,
                err (1, "read");
            else if (ret == 0)
                errx (1, "EOF during read");
-       
+
            in_len += ret;
            in_ptr += ret;
            *in_ptr = '\0';
-       
+
            beg = in_buf;
            rem = in_len;
            while(rem > 1
@@ -727,7 +727,7 @@ main(int argc, char **argv)
        print_version(NULL);
        return 0;
     }
-       
+
     if (do_from && header_str == NULL)
        header_str = "From:";
     else if (header_str != NULL)
index cda74a0aca27220000f5118ec2810f348933d60c..e56491cfcb4828ce12c957e469955feaddcfcbbc 100644 (file)
@@ -17,7 +17,7 @@
 .Ar file... directory
 .Sh DESCRIPTION
 .Nm rcp
-copies files between machines. Each file argument is either a remote file name of the form 
+copies files between machines. Each file argument is either a remote file name of the form
 .Dq rname@rhost:path
 or a local file (containing no colon or with a slash before the first
 colon).
@@ -25,11 +25,11 @@ colon).
 Supported options:
 .Bl -tag -width Ds
 .It Xo
-.Fl 4 , 
-.Fl 5 , 
-.Fl K , 
-.Fl F , 
-.Fl x , 
+.Fl 4 ,
+.Fl 5 ,
+.Fl K ,
+.Fl F ,
+.Fl x ,
 .Fl z
 .Xc
 These options are passed on to
@@ -37,7 +37,7 @@ These options are passed on to
 .It Fl P Ar port
 This will pass the option
 .Fl p Ar port
-to 
+to
 .Xr rsh 1 .
 .It Fl p
 Preserve file permissions.
@@ -58,7 +58,7 @@ connection".
 .\".Sh SEE ALSO
 .\".Sh STANDARDS
 .Sh HISTORY
-The 
+The
 .Nm rcp
 utility first appeared in 4.2BSD. This version is derived from
 4.3BSD-Reno.
index fbed203dbbe8b75248f285a0dbccfc30b243cd2e..9297af6d7b35810c6b5077f9792ac5a74287b71e 100644 (file)
@@ -101,7 +101,7 @@ main(int argc, char **argv)
            print_version (NULL);
            return 0;
        }
-       
+
        iamremote = (fflag || tflag);
 
        argc -= optind;
@@ -384,7 +384,7 @@ rsource(char *name, struct stat *statp)
                }
        }
        snprintf(path, sizeof(path),
-                "D%04o %d %s\n", 
+                "D%04o %d %s\n",
                 (unsigned int)(statp->st_mode & MODEMASK), 0, last);
        write(remout, path, strlen(path));
        if (response() < 0) {
index dd605a5160c49bb4d1cb090f020d646732a9280a..79017c33c264772d5b6deca7a70db56e8b125766 100644 (file)
@@ -105,7 +105,7 @@ do_read (int fd, void *buf, size_t sz, void *ivec)
            status = krb5_decrypt_ivec(context, crypto, key_usage,
                                       edata, outer_len, &data, ivec);
            free (edata);
-       
+
            if (status)
                krb5_err (context, 1, status, "decrypting data");
            if(ivec != NULL) {
index 5825adf982a16d1cfa1c29c2dd78d134fe23cb8d..0b0701f43cb1b400240d882b601d2edf5d286e34 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2002 - 2003 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\"    $Id$
 .\"
 .Dd February 20, 2004
@@ -126,7 +126,7 @@ The opposite of
 This is the default, and is mainly useful if encryption has been
 enabled by default, for instance in the
 .Li appdefaults
-section of 
+section of
 .Pa /etc/krb5.conf
 when using Kerberos 5.
 .It Xo
@@ -142,7 +142,7 @@ Also settable via
 .Fl F ,
 .Fl Fl forwardable
 .Xc
-Make the forwarded credentials re-forwardable. 
+Make the forwarded credentials re-forwardable.
 Also settable via
 .Li appdefaults
 (see
@@ -160,7 +160,7 @@ format allow the remote name to be specified.
 .Fl n ,
 .Fl Fl no-input
 .Xc
-Direct input from 
+Direct input from
 .Pa /dev/null
 (see the
 .Sx BUGS
@@ -182,7 +182,7 @@ Specifies the protocol version to use with Kerberos 5.
 .Ar N
 and
 .Ar 2
-select protocol version 2, while 
+select protocol version 2, while
 .Ar O
 and
 .Ar 1
index 023f2d956ad8f63d3795abd888abe3f32504186f..38ac753cd6ac428b4b39ecd470fa4efdb8aa728d 100644 (file)
@@ -297,7 +297,7 @@ send_krb5_auth(int s,
     default:
        abort();
     }
-       
+
     status = krb5_sendauth (context,
                            &auth_context,
                            &s,
@@ -645,7 +645,7 @@ doit_broken (int argc,
 
     if (connect (priv_socket1, ai->ai_addr, ai->ai_addrlen) < 0) {
        int save_errno = errno;
-       
+
        close(priv_socket1);
        close(priv_socket2);
 
index a8e105b49c20046704ff94023b53bfda20f97b8f..1815cc691c3254401c2d8dba0303db5dc4a10106 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2001 - 2006 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd November 22, 2002
index 93ca33969d55edfe3c0a5fd62c915cccf0ead552..1958f2d73aa4932015103ce4c8edd6fb53fc3196 100644 (file)
@@ -258,7 +258,7 @@ recv_krb5_auth (int s, u_char *buf,
     if (memcmp (buf, "\x00\x00\x00\x13", 4) != 0)
        return -1;
     len = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | (buf[3]);
-       
+
     if (net_read(s, buf, len) != len)
        syslog_and_die ("reading auth info: %s", strerror(errno));
     if (len != sizeof(KRB5_SENDAUTH_VERSION)
@@ -394,7 +394,7 @@ recv_krb5_auth (int s, u_char *buf,
                   *cmd);
            free (name);
        }
-    }  
+    }
 
     krb5_auth_con_free(context, auth_context);
 
@@ -918,12 +918,12 @@ main(int argc, char **argv)
        int error;
        struct addrinfo *ai = NULL, hints;
        char portstr[NI_MAXSERV];
-       
+
        memset (&hints, 0, sizeof(hints));
        hints.ai_flags    = AI_PASSIVE;
        hints.ai_socktype = SOCK_STREAM;
        hints.ai_family   = PF_UNSPEC;
-       
+
        if(port_str != NULL) {
            error = getaddrinfo (NULL, port_str, &hints, &ai);
            if (error)
index 0187e31457a6378279b4c2e24155554f61a82af5..b57129e07dd60651659e78ee3a7b127e559c2a0f 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2003 - 2006 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd January 12, 2006
@@ -59,25 +59,25 @@ user wanting to change effective UID is present in a file named
 .Pa .k5login
 in the target user id's home directory
 .Pp
-A special case exists where 
+A special case exists where
 .Ql root Ap s
 .Pa ~/.k5login
 needs to contain an entry for:
 .Ql user Ns / Ns Ao instance Ac Ns @ Ns REALM
 for
 .Nm su
-to succed (where 
+to succed (where
 .Aq instance
 is
 .Ql root
-unless changed with 
+unless changed with
 .Fl i ) .
 .Pp
 In the absence of either an entry for current user in said file or
-other problems like missing 
+other problems like missing
 .Ql host/hostname@REALM
 keys in the system's
-keytab, or user typing the wrong password, 
+keytab, or user typing the wrong password,
 .Nm su
 will fall back to traditional
 .Pa /etc/passwd
@@ -86,7 +86,7 @@ authentication.
 When using
 .Pa /etc/passwd
 authentication,
-.Nm su 
+.Nm su
 allows
 .Ql root
 access only to members of the group
index e61492972f0f2262c08c59654ae734eadd37d7c8..882ecfaedf972919fa15395934a54d5c6d2b3aa7 100644 (file)
@@ -152,7 +152,7 @@ krb5_verify(const struct passwd *login_info,
     krb5_realm *realms, *r;
     char *login_name = NULL;
     int user_ok = 0;
-       
+
 #if defined(HAVE_GETLOGIN) && !defined(POSIX_GETLOGIN)
     login_name = getlogin();
 #endif
@@ -163,7 +163,7 @@ krb5_verify(const struct passwd *login_info,
 #endif
        return 1;
     }
-       
+
     ret = krb5_get_default_realms(context, &realms);
     if (ret)
        return 1;
@@ -186,7 +186,7 @@ krb5_verify(const struct passwd *login_info,
            krb5_free_host_realm(context, realms);
            return 1;
        }
-       
+
        /* if we are su-ing too root, check with krb5_kuserok */
        if (su_info->pw_uid == 0 && !krb5_kuserok(context, p, su_info->pw_name))
            continue;
@@ -348,7 +348,7 @@ main(int argc, char **argv)
         full_login = 1;
         break;
       }
-       
+
     if(help_flag)
        usage(0);
     if(version_flag) {
@@ -499,14 +499,14 @@ main(int argc, char **argv)
           args[i++] = "-c";
           args[i++] = cmd;
        }
-       
+
        if (csh_f_flag)
            args[i++] = "-f";
 
        for (argv += optind; *argv; ++argv)
           args[i++] = *argv;
        args[i] = NULL;
-       
+
        if(setgid(su_info->pw_gid) < 0)
            err(1, "setgid");
        if (initgroups (su_info->pw_name, su_info->pw_gid) < 0)
index bec94ce6da98be84c4060f553ba7bb24c81e82db..68e8bd686e816b9a2d0454bca0a564a893f5bbb9 100644 (file)
@@ -108,7 +108,7 @@ static long i_support_encrypt = typemask(ENCTYPE_DES_CFB64)
      static Encryptions encryptions[] = {
 #if    defined(DES_ENCRYPTION)
         { "DES_CFB64", ENCTYPE_DES_CFB64,
-          cfb64_encrypt,       
+          cfb64_encrypt,
           cfb64_decrypt,
           cfb64_init,
           cfb64_start,
@@ -118,7 +118,7 @@ static long i_support_encrypt = typemask(ENCTYPE_DES_CFB64)
           cfb64_keyid,
           cfb64_printsub },
         { "DES_OFB64", ENCTYPE_DES_OFB64,
-          ofb64_encrypt,       
+          ofb64_encrypt,
           ofb64_decrypt,
           ofb64_init,
           ofb64_start,
@@ -388,7 +388,7 @@ encrypt_display(void)
               ENCTYPE_NAME(encrypt_mode));
     else
        printf("Currently not encrypting output\r\n");
-       
+
     if (decrypt_input)
        printf("Currently decrypting input with %s\r\n",
               ENCTYPE_NAME(decrypt_mode));
@@ -411,7 +411,7 @@ EncryptStatus(void)
               ENCTYPE_NAME(encrypt_mode));
     } else
        printf("Currently not encrypting output\r\n");
-       
+
     if (decrypt_input) {
        printf("Currently decrypting input with %s\r\n",
               ENCTYPE_NAME(decrypt_mode));
index 4dd5e29498570523db40ab51ec50209c7cefedd8..c5ab9e18847e5284c3356c02d97e789090e8c92c 100644 (file)
@@ -75,7 +75,7 @@ char **
 genget(char *name, char **table, int stlen)
      /* name to match */
      /* name entry in table */
-               
+
 {
     char **c, **found;
     int n;
index c6bc039f29956084a906c5ee287cc5f51022c2fc..c71cfbc408a6eda7dd7cce1f9e2631460085c521 100644 (file)
@@ -135,7 +135,7 @@ Data(Authenticator *ap, int type, const void *d, int c)
 
     memcpy(p0, str_data, sizeof(str_data));
     p = p0 + sizeof(str_data);
-       
+
     if (auth_debug_mode) {
        printf("%s:%d: [%d] (%d)",
               str_data[3] == TELQUAL_IS ? ">>>IS" : ">>>REPLY",
@@ -215,7 +215,7 @@ kerberos5_send(char *name, Authenticator *ap)
        }
        return 0;
     }
-       
+
     if ((ap->way & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL)
        ap_opts = AP_OPTS_MUTUAL_REQUIRED;
     else
@@ -418,13 +418,13 @@ kerberos5_is(Authenticator *ap, unsigned char *data, int cnt)
                free (errbuf);
            return;
        }
-       
+
        {
            char ap_msg[2];
-       
+
            ap_msg[0] = ap->type;
            ap_msg[1] = ap->way;
-       
+
            ret = krb5_verify_authenticator_checksum(context,
                                                     auth_context,
                                                     ap_msg,
@@ -536,7 +536,7 @@ kerberos5_is(Authenticator *ap, unsigned char *data, int cnt)
        }
        auth_finished(ap, AUTH_USER);
        krb5_free_keyblock(context, key_block);
-       
+
        break;
     case KRB_FORWARD: {
        struct passwd *pwd;
@@ -628,7 +628,7 @@ kerberos5_reply(Authenticator *ap, unsigned char *data, int cnt)
        krb5_error_code ret;
        Session_Key skey;
        krb5_keyblock *keyblock;
-       
+
        if ((ap->way & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL &&
            !mutual_complete) {
            printf("[ Kerberos V5 accepted you, but didn't provide mutual authentication! ]\r\n");
@@ -639,7 +639,7 @@ kerberos5_reply(Authenticator *ap, unsigned char *data, int cnt)
            printf("[ Kerberos V5 accepts you as ``%.*s'' ]\r\n", cnt, data);
        else
            printf("[ Kerberos V5 accepts you ]\r\n");
-       
+
        ret = krb5_auth_con_getlocalsubkey (context,
                                            auth_context,
                                            &keyblock);
@@ -653,7 +653,7 @@ kerberos5_reply(Authenticator *ap, unsigned char *data, int cnt)
            auth_send_retry();
            return;
        }
-       
+
        skey.type = SK_DES;
        skey.length = 8;
        skey.data = keyblock->keyvalue.data;
@@ -670,7 +670,7 @@ kerberos5_reply(Authenticator *ap, unsigned char *data, int cnt)
          krb5_ap_rep_enc_part *reply;
          krb5_data inbuf;
          krb5_error_code ret;
-       
+
          inbuf.length = cnt;
          inbuf.data = (char *)data;
 
index 082aec3a14e822c260e760d0c55877d37820218c..4bf814c3b7a223d8e209aa09bfdbe79a25152c22 100644 (file)
@@ -2181,7 +2181,7 @@ tn(int argc, char **argv)
                             addrstr, sizeof(addrstr),
                             NULL, 0, NI_NUMERICHOST) != 0)
                strlcpy (addrstr, "unknown address", sizeof(addrstr));
-                       
+
            printf("Trying %s...\r\n", addrstr);
 
            net = socket (a->ai_family, a->ai_socktype, a->ai_protocol);
index 6a5e892c4dc16ac21593da4a673028452da9f255..c527608faf108b62e58c4a255cbd71e67fdf7f4e 100644 (file)
@@ -164,7 +164,7 @@ main(int argc, char **argv)
 #ifdef KRB5
        krb5_init();
 #endif
-       
+
        tninit();               /* Clear out things */
 
        TerminalSaveState();
index 0c5c664d4dca7545aa4d4f1f47d3b3c5032fb154..50b436de34c17d41c50145f91711af7e599eb4ab 100644 (file)
@@ -2130,7 +2130,7 @@ my_telnet(char *user)
                    printf("\nServer disconnected.\n");
                    Exit(1);
            }
-               
+
        }
        if (printed_encrypt) {
                printf("Encryption negotiated.\n");
index c2b84f7133a4ac1cf401266d7113d4bbaf9188de..0ac31c9ebd9d2bca67f9701f6deb46c465464d23 100644 (file)
@@ -250,7 +250,7 @@ optionstatus(void)
 
 static void __attribute__((format (printf, 3, 4)))
 qprintf(int quote, FILE *f, const char *fmt, ...)
-    
+
 {
     va_list va;
     if (quote)
index bfa3c6fe3b9c8830ba9b2c0be36f65a9f5de8606..69cc236a290b1d49e42f2cb3530b7fca8698080d 100644 (file)
@@ -506,7 +506,7 @@ willoption(int option)
                changeok++;
                break;
 #endif
-                       
+
            default:
                break;
            }
index 0a3bbff4ab51e9351bccb9a96f07567ce9725b43..d8af14ea73305ce1e8ffc50ac5412c0ba04c70f0 100644 (file)
@@ -391,7 +391,7 @@ int getpty(int *ptynum)
     {
        char *clone[] = { "/dev/ptc", "/dev/ptmx", "/dev/ptm",
                          "/dev/ptym/clone", 0 };
-       
+
        char **q;
        int p;
        for(q=clone; *q; q++){
@@ -415,7 +415,7 @@ int getpty(int *ptynum)
        int p;
        char *cp, *p1, *p2;
        int i;
-       
+
 #ifndef        __hpux
        snprintf(line, sizeof(Xline), "/dev/ptyXX");
        p1 = &line[8];
@@ -425,11 +425,11 @@ int getpty(int *ptynum)
        p1 = &line[13];
        p2 = &line[14];
 #endif
-       
-       
+
+
        for (cp = "pqrstuvwxyzPQRST"; *cp; cp++) {
            struct stat stb;
-       
+
            *p1 = *cp;
            *p2 = '0';
            /*
@@ -446,7 +446,7 @@ int getpty(int *ptynum)
 #if SunOS == 40
                    int dummy;
 #endif
-               
+
 #ifndef        __hpux
                    line[5] = 't';
 #else
@@ -474,7 +474,7 @@ int getpty(int *ptynum)
        extern lowpty, highpty;
        struct stat sb;
        int p;
-       
+
        for (*ptynum = lowpty; *ptynum <= highpty; (*ptynum)++) {
            snprintf(myline, sizeof(myline), "/dev/pty/%03d", *ptynum);
            p = open(myline, 2);
@@ -856,7 +856,7 @@ void getptyslave(void)
 
 #ifdef  STREAMSPTY
     ttyfd = t;
-       
+
 
     /*
      * Not all systems have (or need) modules ttcompat and pckt so
@@ -876,7 +876,7 @@ void getptyslave(void)
               pushed (via autopush, for instance).
 
               */
-       
+
            char *ttymodules[] = { "ttcompat", "ldterm", "ptem", NULL };
            char *ptymodules[] = { "pckt", NULL };
 
@@ -1289,11 +1289,11 @@ start_login(const char *host, int autologin, char *name)
        struct utmpx utmpx;
        struct timeval tv;
        char *clean_tty;
-       
+
        /*
         * Create utmp entry for child
         */
-       
+
        clean_tty = clean_ttyname(line);
        memset(&utmpx, 0, sizeof(utmpx));
        strncpy(utmpx.ut_user,  ".telnet", sizeof(utmpx.ut_user));
@@ -1302,9 +1302,9 @@ start_login(const char *host, int autologin, char *name)
        strncpy(utmpx.ut_id, make_id(clean_tty), sizeof(utmpx.ut_id));
 #endif
        utmpx.ut_pid = pid;
-       
+
        utmpx.ut_type = LOGIN_PROCESS;
-       
+
        gettimeofday (&tv, NULL);
        utmpx.ut_tv.tv_sec = tv.tv_sec;
        utmpx.ut_tv.tv_usec = tv.tv_usec;
@@ -1315,7 +1315,7 @@ start_login(const char *host, int autologin, char *name)
 #endif
 
     scrub_env();
-       
+
     /*
      * -h : pass on name of host.
      *         WARNING:  -h is accepted by login if and only if
@@ -1444,7 +1444,7 @@ rmut(void)
 #elif defined(__osf__) /* XXX */
        utxp->ut_exit.ut_termination = 0;
        utxp->ut_exit.ut_exit = 0;
-#else  
+#else
        utxp->ut_exit.e_termination = 0;
        utxp->ut_exit.e_exit = 0;
 #endif
index bce2e1d76cc98053ce5ef6d9208dd94a01b5f141..626907e5e2d134b2d2ebf499bb27c085b89abf9d 100644 (file)
@@ -338,7 +338,7 @@ main(int argc, char **argv)
        case 'L':
            new_login = optarg;
            break;
-                       
+
        default:
            fprintf(stderr, "telnetd: %c: unknown option\n", ch);
            /* FALLTHROUGH */
index 066bcc293d11f249980ad2164b62a4faa63a5350..48d2cf5e245abbee8fc48f521209f889e38ca74c 100644 (file)
@@ -922,28 +922,28 @@ printsub(int direction, unsigned char *pointer, size_t length)
                        output_data("VAR ");
                        quote = 0;
                        break;
-                       
+
                    case NEW_ENV_VALUE:
                        if (quote)
                            output_data("\" ");
                        output_data("VALUE ");
                        quote = 0;
                        break;
-                       
+
                    case ENV_ESC:
                        if (quote)
                            output_data("\" ");
                        output_data("ESC ");
                        quote = 0;
                        break;
-                       
+
                    case ENV_USERVAR:
                        if (quote)
                            output_data("\" ");
                        output_data("USERVAR ");
                        quote = 0;
                        break;
-                       
+
                    default:
                        if (isprint(pointer[i]) && pointer[i] != '"') {
                            if (!quote) {
index f19216530c9e46408db4c728a08099f3da1509ee..8b37bf2c9bcb13c6f3495abade139a207ba26f0b 100644 (file)
@@ -124,7 +124,7 @@ proto (int sock, const char *hostname, const char *service)
     if (str == NULL)
        errx(1, "malloc - out of memory");
     name_token.value = str;
-       
+
     maj_stat = gss_import_name (&min_stat,
                                &name_token,
                                GSS_C_NT_HOSTBASED_SERVICE,
index b9a61f22d23c85f1c15c35684a100b73eac2e784..c9e1c8492b507442810ae6427535ce387aced7f2 100644 (file)
@@ -216,7 +216,7 @@ http_query(const char *host, const char *page,
            break;
        else if (ret < 0)
            err (1, "read: %lu", (unsigned long)ret);
-       
+
        in_buf[ret + in_len] = '\0';
 
        if (state == HEADER || state == RESPONSE) {
@@ -362,7 +362,7 @@ main(int argc, char **argv)
 
                if (verbose_flag)
                    printf("Negotiate found\n");
-               
+
                if (server == GSS_C_NO_NAME) {
                    char *name;
                    asprintf(&name, "%s@%s", gss_service, host);
@@ -474,7 +474,7 @@ main(int argc, char **argv)
                    base64_encode(output_token.value,
                                  output_token.length,
                                  &neg_token);
-               
+
                    asprintf(&headers[0], "Authorization: Negotiate %s",
                             neg_token);
 
index ce8502fb86cff326c1a79db21dd16a2cff4f22f1..f26a10223102194662b0c43337712aca9d6cc8ea 100644 (file)
@@ -107,7 +107,7 @@ gss_print_errors (int min_stat)
                                  GSS_C_NO_OID,
                                  &msg_ctx,
                                  &status_string);
-       fprintf (stderr, "%.*s\n", 
+       fprintf (stderr, "%.*s\n",
                (int)status_string.length,
                (char *)status_string.value);
        gss_release_buffer (&new_stat, &status_string);
index 6655f15731cca3a4f82ae8cd491593ab71573020..43ff5a49c96d2394ae4dadffc035f5e702658cbb 100644 (file)
@@ -121,7 +121,7 @@ proto (int sock, const char *service)
                           NULL,
                           NULL,
                           NULL);
-                       
+
     if (status)
        krb5_err(context, 1, status, "krb5_sendauth");
 
index 4bc727f14c6bc1b1add2e0f19b6551f4f0affece..c19066f3323e1f9cbbcb5a8bba458522d41b345c 100644 (file)
@@ -998,7 +998,7 @@ main (int argc, char **argv)
        struct xxx{
            Pixel bg;
        }res;
-       
+
        XtResource Res[] = {
            { XtNbackground, XtCBackground, XtRPixel, sizeof(Pixel),
              XtOffsetOf(struct xxx, bg), XtRString, "black" }
@@ -1072,7 +1072,7 @@ main (int argc, char **argv)
                         GrabModeAsync, XtWindow(widget),
                         None, CurrentTime)) != 0)
        errx(1, "Failed to grab pointer (%d)", i);
-       
+
     if((i = XGrabKeyboard(dpy, XtWindow(widget), True, GrabModeAsync,
                          GrabModeAsync, CurrentTime)) != 0)
        errx(1, "Failed to grab keyboard (%d)", i);
index 7b30865f385e23fa6aca41296d3f3dbee8b48c8e..1f9d71a0f506c7912baac0c615905ce03fd25caa 100644 (file)
@@ -120,7 +120,7 @@ heim_dict_create(size_t size)
        heim_release(dict);
        return NULL;
     }
-    
+
     dict->tab = calloc(dict->size, sizeof(dict->tab[0]));
     if (dict->tab == NULL) {
        dict->size = 0;
index 01668716a300144ec5650c1fa9b6b329f180e1ff..7031af9e49806ad7a483d57d66053ce0c7de4515 100644 (file)
@@ -369,7 +369,7 @@ void
 heim_abortv(const char *fmt, va_list ap)
 {
     static char str[1024];
-    
+
     vsnprintf(str, sizeof(str), fmt, ap);
     syslog(LOG_ERR, "heim_abort: %s", str);
     abort();
index e2f750196f3fbe5f4ebd767d3b3fb859e2f11837..78f0ad5d3876b3c5d3b9dbc3666f0d3692195a48 100644 (file)
@@ -139,9 +139,9 @@ heim_json2base(const void *data, size_t length)
 
  out:
     if (ret && o) {
-       heim_release(o);                       
+       heim_release(o);
        o = NULL;
     }
-    
+
     return o;
 }
index c4f841fb61f08fb54337ff5a83c217e8ce65c88d..8ff677f3309c3040441480fbb6447f92dd980a06 100644 (file)
 
 #define HEIMDAL_RWLOCK rwlock_t
 #define HEIMDAL_RWLOCK_INITIALIZER RWLOCK_INITIALIZER
-#define        HEIMDAL_RWLOCK_init(l) rwlock_init(l, NULL)     
-#define        HEIMDAL_RWLOCK_rdlock(l) rwlock_rdlock(l)       
-#define        HEIMDAL_RWLOCK_wrlock(l) rwlock_wrlock(l)       
-#define        HEIMDAL_RWLOCK_tryrdlock(l) rwlock_tryrdlock(l) 
-#define        HEIMDAL_RWLOCK_trywrlock(l) rwlock_trywrlock(l) 
-#define        HEIMDAL_RWLOCK_unlock(l) rwlock_unlock(l)       
-#define        HEIMDAL_RWLOCK_destroy(l) rwlock_destroy(l)     
+#define        HEIMDAL_RWLOCK_init(l) rwlock_init(l, NULL)
+#define        HEIMDAL_RWLOCK_rdlock(l) rwlock_rdlock(l)
+#define        HEIMDAL_RWLOCK_wrlock(l) rwlock_wrlock(l)
+#define        HEIMDAL_RWLOCK_tryrdlock(l) rwlock_tryrdlock(l)
+#define        HEIMDAL_RWLOCK_trywrlock(l) rwlock_trywrlock(l)
+#define        HEIMDAL_RWLOCK_unlock(l) rwlock_unlock(l)
+#define        HEIMDAL_RWLOCK_destroy(l) rwlock_destroy(l)
 
 #define HEIMDAL_thread_key thread_key_t
 #define HEIMDAL_key_create(k,d,r) do { r = thr_keycreate(k,d); } while(0)
 
 #define HEIMDAL_RWLOCK rwlock_t
 #define HEIMDAL_RWLOCK_INITIALIZER RWLOCK_INITIALIZER
-#define        HEIMDAL_RWLOCK_init(l) pthread_rwlock_init(l, NULL)     
-#define        HEIMDAL_RWLOCK_rdlock(l) pthread_rwlock_rdlock(l)       
-#define        HEIMDAL_RWLOCK_wrlock(l) pthread_rwlock_wrlock(l)       
-#define        HEIMDAL_RWLOCK_tryrdlock(l) pthread_rwlock_tryrdlock(l) 
-#define        HEIMDAL_RWLOCK_trywrlock(l) pthread_rwlock_trywrlock(l) 
-#define        HEIMDAL_RWLOCK_unlock(l) pthread_rwlock_unlock(l)       
-#define        HEIMDAL_RWLOCK_destroy(l) pthread_rwlock_destroy(l)     
+#define        HEIMDAL_RWLOCK_init(l) pthread_rwlock_init(l, NULL)
+#define        HEIMDAL_RWLOCK_rdlock(l) pthread_rwlock_rdlock(l)
+#define        HEIMDAL_RWLOCK_wrlock(l) pthread_rwlock_wrlock(l)
+#define        HEIMDAL_RWLOCK_tryrdlock(l) pthread_rwlock_tryrdlock(l)
+#define        HEIMDAL_RWLOCK_trywrlock(l) pthread_rwlock_trywrlock(l)
+#define        HEIMDAL_RWLOCK_unlock(l) pthread_rwlock_unlock(l)
+#define        HEIMDAL_RWLOCK_destroy(l) pthread_rwlock_destroy(l)
 
 #define HEIMDAL_thread_key pthread_key_t
 #define HEIMDAL_key_create(k,d,r) do { r = pthread_key_create(k,d); } while(0)
index 95a4e3b0a6c46ffde1abdb76aaee935cfdda52f6..c5a2eb87e9f1c004db2823d97e4a814773defd1d 100644 (file)
@@ -158,7 +158,7 @@ cpw_entry(struct passwd_options *opt, int argc, char **argv)
                "--random-key, --random-password, --password, --key\n");
        return 1;
     }
-       
+
     if (opt->key_string) {
        const char *error;
 
index dcbcf01c04e67f0d7ad9f633c68696febdf55e76..0895b53ccba257a8cdad7c1396f1d4813d9ffa19 100644 (file)
@@ -171,23 +171,23 @@ format_field(kadm5_principal_ent_t princ, unsigned int field,
     case KADM5_PRINC_EXPIRE_TIME:
        time_t2str(princ->princ_expire_time, buf, buf_len, !condensed);
        break;
-       
+
     case KADM5_PW_EXPIRATION:
        time_t2str(princ->pw_expiration, buf, buf_len, !condensed);
        break;
-       
+
     case KADM5_LAST_PWD_CHANGE:
        time_t2str(princ->last_pwd_change, buf, buf_len, !condensed);
        break;
-       
+
     case KADM5_MAX_LIFE:
        deltat2str(princ->max_life, buf, buf_len);
        break;
-       
+
     case KADM5_MAX_RLIFE:
        deltat2str(princ->max_renewable_life, buf, buf_len);
        break;
-       
+
     case KADM5_MOD_TIME:
        time_t2str(princ->mod_date, buf, buf_len, !condensed);
        break;
@@ -489,7 +489,7 @@ getit(struct get_options *opt, const char *name, int argc, char **argv)
            ret = setup_columns(&data, DEFAULT_COLUMNS_SHORT);
     } else
        ret = setup_columns(&data, opt->column_info_string);
-       
+
     if(ret != 0) {
        if(data.table != NULL)
            rtbl_destroy(data.table);
index 79178aea932467f8578cb1dcea0059ae3e4ef08e..bd2fd4e7363f224eb5550f8484a9a98746e77340 100644 (file)
@@ -222,8 +222,8 @@ Possible attributes are:
 .Li disallow-forwardable ,
 .Li disallow-postdated
 .Pp
-Attributes may be negated with a "-", e.g., 
-.Pp 
+Attributes may be negated with a "-", e.g.,
+.Pp
 kadmin -l modify -a -disallow-proxiable user
 .Ed
 .Pp
index 30ad9814db9b7d20348943947aaa101c1f640b9b..6e31828afa1659f75fed6967b9af5ee410f174f7 100644 (file)
@@ -63,15 +63,15 @@ static struct getargs args[] = {
        "key-file",     'k',    arg_string, &keyfile,
        "location of master key file", "file"
     },
-    {  
+    {
        "realm",        'r',    arg_string,   &realm,
        "realm to use", "realm"
     },
-    {  
+    {
        "admin-server", 'a',    arg_string,   &admin_server,
        "server to contact", "host"
     },
-    {  
+    {
        "server-port",  's',    arg_integer,   &server_port,
        "port to use", "port number"
     },
@@ -211,7 +211,7 @@ main(int argc, char **argv)
 
        kadm5_setup_passwd_quality_check (context,
                                          check_library, check_function);
-       
+
        for (i = 0; i < policy_libraries.num_strings; i++) {
            ret = kadm5_add_passwd_quality_verifier(context,
                                                    policy_libraries.strings[i]);
@@ -221,7 +221,7 @@ main(int argc, char **argv)
        ret = kadm5_add_passwd_quality_verifier(context, NULL);
        if (ret)
            krb5_err(context, 1, ret, "kadm5_add_passwd_quality_verifier");
-       
+
        ret = kadm5_s_init_with_password_ctx(context,
                                             KADM5_ADMIN_SERVICE,
                                             NULL,
index 0c9ab3ebd905abe66e4892c259f33d013b351b10..894340c249512514b7b0cd8aba0e9fc9562190c9 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2002 - 2004 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd December  8, 2004
index 4708d0f6ed3204b7472706cf9263d1e2f6795cc3..f99f9572334a594e34ad3ece4bda66f8a59ca165 100644 (file)
@@ -162,7 +162,7 @@ main(int argc, char **argv)
 
     if(debug_flag) {
        int debug_port;
-       
+
        if(port_str == NULL)
            debug_port = krb5_getportbyname (context, "kerberos-adm",
                                             "tcp", 749);
index e1913cb2df6ac90a769b15686da9cfbc2038aff5..eb33be77ac5f0ba5de6d98b2b3883aa64a9c2709 100644 (file)
@@ -205,7 +205,7 @@ parse_keys(hdb_entry *ent, char *str)
            if (key->salt == NULL)
                krb5_errx (context, 1, "malloc: out of memory");
            key->salt->type = type;
-               
+
            if (p_len) {
                if(*p == '\"') {
                    ret = krb5_data_copy(&key->salt->salt, p + 1, p_len - 2);
@@ -411,7 +411,7 @@ doit(const char *filename, int mergep)
            }
        }
        p = skip_next(p);
-       
+
        e.key = p;
        p = skip_next(p);
 
@@ -454,14 +454,14 @@ doit(const char *filename, int mergep)
            krb5_free_error_message(context, msg);
            continue;
        }
-       
+
        if (parse_keys(&ent.entry, e.key)) {
            fprintf (stderr, "%s:%d:error parsing keys (%s)\n",
                     filename, line, e.key);
            hdb_free_entry (context, &ent);
            continue;
        }
-       
+
        if (parse_event(&ent.entry.created_by, e.created) == -1) {
            fprintf (stderr, "%s:%d:error parsing created event (%s)\n",
                     filename, line, e.created);
index 8af92f97cef2846afa97f8d38f9b744e4579456b..940425f2a54b52f425a5698a992924dad78e2bcd 100644 (file)
@@ -63,7 +63,7 @@ add_constrained_delegation(krb5_context contextp,
     HDB_extension ext;
     krb5_data buf;
     size_t size = 0;
-       
+
     memset(&ext, 0, sizeof(ext));
     ext.mandatory = FALSE;
     ext.data.element = choice_HDB_extension_data_allowed_to_delegate_to;
@@ -79,7 +79,7 @@ add_constrained_delegation(krb5_context contextp,
            calloc(strings->num_strings,
                   sizeof(ext.data.u.allowed_to_delegate_to.val[0]));
        ext.data.u.allowed_to_delegate_to.len = strings->num_strings;
-       
+
        for (i = 0; i < strings->num_strings; i++) {
            ret = krb5_parse_name(contextp, strings->strings[i], &p);
            if (ret)
@@ -126,7 +126,7 @@ add_aliases(krb5_context contextp, kadm5_principal_ent_rec *princ,
            calloc(strings->num_strings,
                   sizeof(ext.data.u.aliases.aliases.val[0]));
        ext.data.u.aliases.aliases.len = strings->num_strings;
-       
+
        for (i = 0; i < strings->num_strings; i++) {
            ret = krb5_parse_name(contextp, strings->strings[i], &p);
            ret = copy_Principal(p, &ext.data.u.aliases.aliases.val[i]);
@@ -168,7 +168,7 @@ add_pkinit_acl(krb5_context contextp, kadm5_principal_ent_rec *princ,
            calloc(strings->num_strings,
                   sizeof(ext.data.u.pkinit_acl.val[0]));
        ext.data.u.pkinit_acl.len = strings->num_strings;
-       
+
        for (i = 0; i < strings->num_strings; i++) {
            ext.data.u.pkinit_acl.val[i].subject = estrdup(strings->strings[i]);
        }
index cd68c9a01d01aab1278d7b4d54e1452c9d7b973d..445a96a54f512e556bcd9d9dbbaab93762a2f593 100644 (file)
@@ -109,47 +109,47 @@ parse_name(const unsigned char *p, size_t len,
           const gss_OID oid, char **name)
 {
     size_t l;
-    
+
     if (len < 4)
        return 1;
-    
+
     /* TOK_ID */
     if (memcmp(p, "\x04\x01", 2) != 0)
        return 1;
     len -= 2;
     p += 2;
-    
+
     /* MECH_LEN */
     l = (p[0] << 8) | p[1];
     len -= 2;
     p += 2;
     if (l < 2 || len < l)
        return 1;
-    
+
     /* oid wrapping */
     if (p[0] != 6 || p[1] != l - 2)
        return 1;
     p += 2;
     l -= 2;
     len -= 2;
-    
+
     /* MECH */
     if (l != oid->length || memcmp(p, oid->elements, oid->length) != 0)
        return 1;
     len -= l;
     p += l;
-    
+
     /* MECHNAME_LEN */
     if (len < 4)
        return 1;
     l = p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3];
     len -= 4;
     p += 4;
-    
+
     /* MECH NAME */
     if (len != l)
        return 1;
-    
+
     *name = malloc(l + 1);
     INSIST(*name != NULL);
     memcpy(*name, p, l);
@@ -184,7 +184,7 @@ gss_error(krb5_context contextp,
 }
 
 static void
-gss_print_errors (krb5_context contextp, 
+gss_print_errors (krb5_context contextp,
                  OM_uint32 maj_stat, OM_uint32 min_stat)
 {
     gss_error(contextp, GSS_C_NO_OID, GSS_C_GSS_CODE, maj_stat);
@@ -202,13 +202,13 @@ read_data(krb5_storage *sp, krb5_storage *msg, size_t len)
 
        if (tlen > sizeof(buf))
            tlen = sizeof(buf);
-       
+
        slen = krb5_storage_read(sp, buf, tlen);
        INSIST((size_t)slen == tlen);
-       
+
        slen = krb5_storage_write(msg, buf, tlen);
        INSIST((size_t)slen == tlen);
-       
+
        len -= tlen;
     }
     return 0;
@@ -226,7 +226,7 @@ collect_framents(krb5_storage *sp, krb5_storage *msg)
        ret = krb5_ret_uint32(sp, &len);
        if (ret)
            return ret;
-       
+
        last_fragment = (len & LAST_FRAGMENT);
        len &= ~LAST_FRAGMENT;
 
@@ -341,7 +341,7 @@ store_string_xdr(krb5_storage *sp, const char *str)
        c.length = strlen(str) + 1;
     } else
        krb5_data_zero(&c);
-       
+
     return store_data_xdr(sp, c);
 }
 
@@ -512,7 +512,7 @@ ret_principal_ent(krb5_context contextp,
     } else {
        INSIST(ent->n_tl_data == 0);
     }
-         
+
     CHECK(krb5_ret_uint32(sp, &num));
     INSIST(num == (uint32_t)ent->n_key_data);
 
@@ -637,7 +637,7 @@ proc_get_principal(kadm5_server_context *contextp,
 
 static void
 proc_chrand_principal_v2(kadm5_server_context *contextp,
-                        krb5_storage *in, 
+                        krb5_storage *in,
                         krb5_storage *out)
 {
     krb5_error_code ret;
@@ -741,7 +741,7 @@ struct gctx {
 };
 
 static int
-process_stream(krb5_context contextp, 
+process_stream(krb5_context contextp,
               unsigned char *buf, size_t ilen,
               krb5_storage *sp)
 {
@@ -798,11 +798,11 @@ process_stream(krb5_context contextp,
                buf = tmp;
            }
            INSIST(ilen >= 4);
-           
+
            _krb5_get_int(buf, &len, 4);
            last_fragment = (len & LAST_FRAGMENT) != 0;
            len &= ~LAST_FRAGMENT;
-           
+
            ilen -= 4;
            buf += 4;
 
@@ -820,7 +820,7 @@ process_stream(krb5_context contextp,
            }
 
            CHECK(read_data(sp, msg, len));
-           
+
            if (!last_fragment) {
                ret = collect_framents(sp, msg);
                if (ret == HEIM_ERR_EOF)
@@ -880,7 +880,7 @@ process_stream(krb5_context contextp,
            INSIST(gctx.done);
 
            INSIST(krb5_data_cmp(&gcred.handle, &gctx.handle) == 0);
-           
+
            CHECK(ret_data_xdr(msg, &data));
 
            gin.value = data.data;
@@ -904,7 +904,7 @@ process_stream(krb5_context contextp,
            INSIST(seq > gctx.seq_num);
            gctx.seq_num = seq;
 
-           /* 
+           /*
             * If contextp is setup, priv data have the seq_num stored
             * first in the block, so add it here before users data is
             * added.
@@ -914,7 +914,7 @@ process_stream(krb5_context contextp,
            if (chdr.proc >= sizeof(procs)/sizeof(procs[0])) {
                krb5_warnx(contextp, "proc number out of array");
            } else if (procs[chdr.proc].func == NULL) {
-               krb5_warnx(contextp, "proc '%s' never implemented", 
+               krb5_warnx(contextp, "proc '%s' never implemented",
                          procs[chdr.proc].name);
            } else {
                krb5_warnx(contextp, "proc %s", procs[chdr.proc].name);
@@ -946,7 +946,7 @@ process_stream(krb5_context contextp,
            gout.length = 0;
 
            maj_stat = gss_accept_sec_context(&min_stat,
-                                             &gctx.ctx, 
+                                             &gctx.ctx,
                                              GSS_C_NO_CREDENTIAL,
                                              &gin,
                                              GSS_C_NO_CHANNEL_BINDINGS,
@@ -966,13 +966,13 @@ process_stream(krb5_context contextp,
                char *client;
 
                gctx.done = 1;
-               
+
                memset(&realm_params, 0, sizeof(realm_params));
 
                maj_stat = gss_export_name(&min_stat, src_name, &bufp);
                INSIST(maj_stat == GSS_S_COMPLETE);
 
-               CHECK(parse_name(bufp.value, bufp.length, 
+               CHECK(parse_name(bufp.value, bufp.length,
                                 GSS_KRB5_MECHANISM, &client));
 
                gss_release_buffer(&min_stat, &bufp);
@@ -992,7 +992,7 @@ process_stream(krb5_context contextp,
            INSIST(gctx.ctx != GSS_C_NO_CONTEXT);
 
            CHECK(krb5_store_uint32(dreply, 0));
-           CHECK(store_gss_init_res(dreply, gctx.handle, 
+           CHECK(store_gss_init_res(dreply, gctx.handle,
                                     maj_stat, min_stat, 1, &gout));
            if (gout.value)
                gss_release_buffer(&min_stat, &gout);
@@ -1004,7 +1004,7 @@ process_stream(krb5_context contextp,
        case RPG_DESTROY:
            krb5_errx(contextp, 1, "client destroyed gss contextp");
        default:
-           krb5_errx(contextp, 1, "client sent unknown gsscode %d", 
+           krb5_errx(contextp, 1, "client sent unknown gsscode %d",
                      (int)gcred.proc);
        }
 
@@ -1061,16 +1061,16 @@ process_stream(krb5_context contextp,
 
                gin.value = data.data;
                gin.length = data.length;
-               
+
                maj_stat = gss_wrap(&min_stat, gctx.ctx, 1, 0,
                                    &gin, &conf_state, &gout);
                INSIST(maj_stat == GSS_S_COMPLETE);
                INSIST(conf_state != 0);
                krb5_data_free(&data);
-               
+
                data.data = gout.value;
                data.length = gout.length;
-               
+
                store_data_xdr(reply, data);
                gss_release_buffer(&min_stat, &gout);
            }
@@ -1099,7 +1099,7 @@ handle_mit(krb5_context contextp, void *buf, size_t len, krb5_socket_t sock)
 
     sp = krb5_storage_from_fd(sock);
     INSIST(sp != NULL);
-    
+
     process_stream(contextp, buf, len, sp);
 
     return 0;
index 162cdb85a8eb3ca24e20ddeb951de65eb1d438fe..f9b940ac5b7d78d4f36f77f1caeaf6d601466624 100644 (file)
@@ -115,7 +115,7 @@ stash(struct stash_options *opt, int argc, char **argv)
            ret = ENOMEM;
            goto out;
        }
-       
+
        if(unlink(new) < 0 && errno != ENOENT) {
            ret = errno;
            goto out;
index e5423cd694d628b26899e269f54ba34573e9e1bf..68e6e685d4dec0d7143d36a2eb94f4c7e65e9f27 100644 (file)
@@ -67,7 +67,7 @@ kcm_ccache_acquire(krb5_context context,
                ccache->name);
        return KRB5_FCC_INTERNAL;
     }
-       
+
     HEIMDAL_MUTEX_lock(&ccache->mutex);
 
     /* Fake up an internal ccache */
index d0a5b6f7828df786e20c4e309de15b274936afb8..1bd220c8a70aa443f97d8a12250180d534fa48b3 100644 (file)
@@ -168,7 +168,7 @@ krb5_error_code kcm_debug_ccache(krb5_context context)
            krb5_unparse_name(context, p->client, &cpn);
        if (p->server != NULL)
            krb5_unparse_name(context, p->server, &spn);
-       
+
        kcm_log(7, "cache %08x: name %s refcnt %d flags %04x mode %04o "
                "uid %d gid %d client %s server %s ncreds %d",
                p, p->name, p->refcnt, p->flags, p->mode, p->uid, p->gid,
index 9d10ad65e2c904d6173d3e5f35c90b07aa3ef00d..38a8449178588174d7cef1fd0a57b5ff96a38003 100644 (file)
@@ -114,7 +114,7 @@ kcm_ccache_new_client(krb5_context context,
        if (bad && !CLIENT_IS_ROOT(client))
            return KRB5_CC_BADNAME;
     }
-       
+
     ret = kcm_ccache_resolve(context, name, &ccache);
     if (ret == 0) {
        if ((ccache->uid != client->uid ||
index be40feec599e737294d83be74ac32b2b23949b06..26c48be3c7d86be6a867f4d3a29c70f17e59cd75 100644 (file)
@@ -357,7 +357,7 @@ kcm_configure(int argc, char **argv)
        ret = krb5_prepend_config_files_default(config_file, &files);
        if (ret)
            krb5_err(kcm_context, 1, ret, "getting configuration files");
-       
+
        ret = krb5_set_config_files(kcm_context, files);
        krb5_free_config_files(files);
        if(ret)
index f5ed845f6e71765ba4c6ffef9367e41e851139fd..ee09193b352b809f5f9b851b0f4d8e46f41f1126 100644 (file)
@@ -74,7 +74,7 @@ kcm_service(void *ctx, const heim_idata *req,
 
     request.data = buf + 2;
     request.length = len - 2;
-    
+
     /* buf is now pointing at opcode */
 
     ret = kcm_dispatch(kcm_context, &peercred, &request, &rep);
index 9dbfd294ae484311052fe1d491a6db1300f51be6..3ff9ea45abe1c46c48e781f0767ec6436b6f33a9 100644 (file)
--- a/kcm/kcm.8
+++ b/kcm/kcm.8
@@ -1,33 +1,33 @@
 .\" Copyright (c) 2005 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
 .\" $Id$
 .\"
@@ -122,7 +122,7 @@ The
 daemon can also keep a SYSTEM credential that server processes can
 use to access services.  One example of usage might be an nss_ldap
 module that quickly needs to get credentials and doesn't want to renew
-the ticket itself. 
+the ticket itself.
 .Pp
 Supported options:
 .Bl -tag -width Ds
index a747679064627b2db48080cb353bf881a1ac55a1..0cf7157b7a7198cec6aee3134752c269b67acac6 100644 (file)
@@ -59,7 +59,7 @@ kcm_op_noop(krb5_context context,
 {
     KCM_LOG_REQUEST(context, client, opcode);
 
-    return 0;  
+    return 0;
 }
 
 /*
@@ -108,7 +108,7 @@ kcm_op_get_name(krb5_context context,
 
 /*
  * Request:
- *     
+ *
  * Response:
  *     NameZ
  */
@@ -139,9 +139,9 @@ kcm_op_gen_new(krb5_context context,
  * Request:
  *     NameZ
  *     Principal
- *     
+ *
  * Response:
- *     
+ *
  */
 static krb5_error_code
 kcm_op_initialize(krb5_context context,
@@ -205,9 +205,9 @@ kcm_op_initialize(krb5_context context,
 /*
  * Request:
  *     NameZ
- *     
+ *
  * Response:
- *     
+ *
  */
 static krb5_error_code
 kcm_op_destroy(krb5_context context,
@@ -238,9 +238,9 @@ kcm_op_destroy(krb5_context context,
  * Request:
  *     NameZ
  *     Creds
- *     
+ *
  * Response:
- *     
+ *
  */
 static krb5_error_code
 kcm_op_store(krb5_context context,
@@ -298,7 +298,7 @@ kcm_op_store(krb5_context context,
  *
  * Response:
  *     Creds
- *     
+ *
  */
 static krb5_error_code
 kcm_op_retrieve(krb5_context context,
@@ -432,7 +432,7 @@ kcm_op_get_principal(krb5_context context,
  *
  * Response:
  *     UUIDs
- *     
+ *
  */
 static krb5_error_code
 kcm_op_get_cred_uuid_list(krb5_context context,
@@ -535,7 +535,7 @@ kcm_op_get_cred_by_uuid(krb5_context context,
  *     MatchCreds
  *
  * Response:
- *     
+ *
  */
 static krb5_error_code
 kcm_op_remove_cred(krb5_context context,
@@ -593,7 +593,7 @@ kcm_op_remove_cred(krb5_context context,
  *     Flags
  *
  * Response:
- *     
+ *
  */
 static krb5_error_code
 kcm_op_set_flags(krb5_context context,
@@ -640,7 +640,7 @@ kcm_op_set_flags(krb5_context context,
  *     GID
  *
  * Response:
- *     
+ *
  */
 static krb5_error_code
 kcm_op_chown(krb5_context context,
@@ -694,7 +694,7 @@ kcm_op_chown(krb5_context context,
  *     Mode
  *
  * Response:
- *     
+ *
  */
 static krb5_error_code
 kcm_op_chmod(krb5_context context,
@@ -1257,7 +1257,7 @@ find_ntlm_cred(const char *user, const char *domain, kcm_client *client)
     struct kcm_ntlm_cred *c;
 
     for (c = ntlm_head; c != NULL; c = c->next)
-       if ((user[0] == '\0' || strcmp(user, c->user) == 0) && 
+       if ((user[0] == '\0' || strcmp(user, c->user) == 0) &&
            (domain == NULL || strcmp(domain, c->domain) == 0) &&
            kcm_is_same_session(client, c->uid, c->session))
            return c;
@@ -1448,7 +1448,7 @@ kcm_op_do_ntlm(krb5_context context,
     memset(&type3, 0, sizeof(type3));
     sessionkey.data = NULL;
     sessionkey.length = 0;
-    
+
     ret = krb5_ret_stringz(request, &user);
     if (ret)
        goto error;
@@ -1489,22 +1489,22 @@ kcm_op_do_ntlm(krb5_context context,
     type3.flags = type2.flags;
     type3.targetname = type2.targetname;
     type3.ws = rk_UNCONST("workstation");
-    
+
     /*
      * NTLM Version 1 if no targetinfo buffer.
      */
-    
+
     if (1 || type2.targetinfo.length == 0) {
        struct ntlm_buf sessionkey;
-       
+
        if (type2.flags & NTLM_NEG_NTLM2_SESSION) {
            unsigned char nonce[8];
-           
+
            if (RAND_bytes(nonce, sizeof(nonce)) != 1) {
                ret = EINVAL;
                goto error;
            }
-           
+
            ret = heim_ntlm_calculate_ntlm2_sess(nonce,
                                                 type2.challenge,
                                                 c->nthash.data,
@@ -1515,11 +1515,11 @@ kcm_op_do_ntlm(krb5_context context,
                                            c->nthash.length,
                                            type2.challenge,
                                            &type3.ntlm);
-           
+
        }
        if (ret)
            goto error;
-       
+
        ret = heim_ntlm_build_ntlm1_master(c->nthash.data,
                                           c->nthash.length,
                                           &sessionkey,
@@ -1541,14 +1541,14 @@ kcm_op_do_ntlm(krb5_context context,
            goto error;
        }
        flags |= NTLM_FLAG_SESSIONKEY;
-#if 0  
+#if 0
     } else {
        struct ntlm_buf sessionkey;
        unsigned char ntlmv2[16];
        struct ntlm_targetinfo ti;
-       
+
        /* verify infotarget */
-       
+
        ret = heim_ntlm_decode_targetinfo(&type2.targetinfo, 1, &ti);
        if(ret) {
            _gss_ntlm_delete_sec_context(minor_status,
@@ -1556,14 +1556,14 @@ kcm_op_do_ntlm(krb5_context context,
            *minor_status = ret;
            return GSS_S_FAILURE;
        }
-       
+
        if (ti.domainname && strcmp(ti.domainname, name->domain) != 0) {
            _gss_ntlm_delete_sec_context(minor_status,
                                         context_handle, NULL);
            *minor_status = EINVAL;
            return GSS_S_FAILURE;
        }
-       
+
        ret = heim_ntlm_calculate_ntlm2(ctx->client->key.data,
                                        ctx->client->key.length,
                                        type3.username,
@@ -1578,7 +1578,7 @@ kcm_op_do_ntlm(krb5_context context,
            *minor_status = ret;
            return GSS_S_FAILURE;
        }
-       
+
        ret = heim_ntlm_build_ntlm1_master(ntlmv2, sizeof(ntlmv2),
                                           &sessionkey,
                                           &type3.sessionkey);
@@ -1589,10 +1589,10 @@ kcm_op_do_ntlm(krb5_context context,
            *minor_status = ret;
            return GSS_S_FAILURE;
        }
-       
+
        flags |= NTLM_FLAG_NTLM2_SESSION |
                 NTLM_FLAG_SESSION;
-       
+
        if (type3.flags & NTLM_NEG_KEYEX)
            flags |= NTLM_FLAG_KEYEX;
 
@@ -1607,7 +1607,7 @@ kcm_op_do_ntlm(krb5_context context,
        }
 #endif
     }
-    
+
 #if 0
     if (flags & NTLM_FLAG_NTLM2_SESSION) {
        _gss_ntlm_set_key(&ctx->u.v2.send, 0, (ctx->flags & NTLM_NEG_KEYEX),
@@ -1630,7 +1630,7 @@ kcm_op_do_ntlm(krb5_context context,
     ret = heim_ntlm_encode_type3(&type3, &ndata);
     if (ret)
        goto error;
-       
+
     data.data = ndata.data;
     data.length = ndata.length;
     ret = krb5_store_data(response, data);
index 1bf5d19d5ea0f521d4e7183c7e4b4c410af4fb55..c44e48c5b00d5aace87ac19c8d0e2682477ad0fb 100644 (file)
@@ -62,18 +62,18 @@ kcm_session_setup_handler(void)
            for (;;) {
                auditinfo_addr_t aio;
                int event;
-       
+
                if (au_sdev_read_aia(h, &event, &aio) != 0)
                    continue;
 
-               /* 
+               /*
                 * Ignore everything but END. This should relly be
                 * CLOSE but since that is delayed until the credential
-                * is reused, we can't do that 
+                * is reused, we can't do that
                 * */
                if (event != AUE_SESSION_END)
                    continue;
-               
+
                dispatch_async(dispatch_get_main_queue(), ^{
                        kcm_cache_remove_session(aio.ai_asid);
                    });
index a7a749ac91431e1974c062c03bba62b1a9863396..c957857b9f71f5cbed1769f75256b34f93ce6cee 100644 (file)
@@ -82,7 +82,7 @@ CFString2utf8(CFStringRef string)
     str = malloc(size);
     if (str == NULL)
        return NULL;
-               
+
     if (CFStringGetCString(string, str, size, kCFStringEncodingUTF8) == false) {
        free(str);
        return NULL;
@@ -99,12 +99,12 @@ retry_timer(void)
 {
     dispatch_source_t s;
     dispatch_time_t t;
-    
+
     s = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,
                               0, 0, g_queue);
     t = dispatch_time(DISPATCH_TIME_NOW, 5ull * NSEC_PER_SEC);
     dispatch_source_set_timer(s, t, 0, NSEC_PER_SEC);
-    dispatch_source_set_event_handler(s, ^{ 
+    dispatch_source_set_event_handler(s, ^{
            create_dns_sd();
            dispatch_release(s);
        });
@@ -132,7 +132,7 @@ create_dns_sd(void)
     s = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ,
                               DNSServiceRefSockFD(g_dnsRef),
                               0, g_queue);
-    
+
     dispatch_source_set_event_handler(s, ^{
            DNSServiceErrorType ret = DNSServiceProcessResult(g_dnsRef);
            /* on error tear down and set timer to recreate */
@@ -148,7 +148,7 @@ create_dns_sd(void)
        });
 
     dispatch_resume(s);
-    
+
     /* Do the first update ourself */
     update_all(g_store, NULL, NULL);
     dispatch_resume(g_queue);
@@ -205,8 +205,8 @@ domains_add(const void *key, const void *value, void *context)
 
 static void
 dnsCallback(DNSServiceRef sdRef __attribute__((unused)),
-           DNSRecordRef RecordRef __attribute__((unused)), 
-           DNSServiceFlags flags __attribute__((unused)), 
+           DNSRecordRef RecordRef __attribute__((unused)),
+           DNSServiceFlags flags __attribute__((unused)),
            DNSServiceErrorType errorCode __attribute__((unused)),
            void *context __attribute__((unused)))
 {
@@ -369,11 +369,11 @@ update_dns(void)
            asprintf(&name, "_kerberos.%s.%s", hostname, update->domain);
            if (name == NULL)
                errx(1, "malloc");
-           
+
            if (update->recordRef)
                DNSServiceRemoveRecord(g_dnsRef, update->recordRef, 0);
-           
-           error = DNSServiceRegisterRecord(g_dnsRef, 
+
+           error = DNSServiceRegisterRecord(g_dnsRef,
                                             &update->recordRef,
                                             kDNSServiceFlagsShared | kDNSServiceFlagsAllowRemoteQuery,
                                             0,
@@ -388,7 +388,7 @@ update_dns(void)
            free(name);
            free(dnsdata);
            if (error)
-               errx(1, "failure to update entry for %s/%s", 
+               errx(1, "failure to update entry for %s/%s",
                     update->domain, update->realm);
        }
        e = &(*e)->next;
@@ -487,7 +487,7 @@ destroy_dns_sd(void)
 #ifdef REGISTER_SRV_RR
     unregister_srv_realms();
 #endif
-    
+
     DNSServiceRefDeallocate(g_dnsRef);
     g_dnsRef = NULL;
 }
@@ -512,7 +512,7 @@ register_notification(void)
        errx(1, "CFArrayCreateMutable");
 
     CFArrayAppendValue(keys, computerNameKey);
-    CFArrayAppendValue(keys, NetworkChangedKey_BackToMyMac); 
+    CFArrayAppendValue(keys, NetworkChangedKey_BackToMyMac);
 
     if (SCDynamicStoreSetNotificationKeys(store, keys, NULL) == false)
        errx(1, "SCDynamicStoreSetNotificationKeys");
@@ -534,11 +534,11 @@ bonjour_announce(krb5_context context, krb5_kdc_configuration *config)
     g_queue = dispatch_queue_create("com.apple.kdc_announce", NULL);
     if (!g_queue)
        errx(1, "dispatch_queue_create");
-    
+
     g_store = register_notification();
     announce_config = config;
     announce_context = context;
-       
+
     create_dns_sd();
 #endif
 }
index ad71e158dafddc75e709cced054c19259aacff68..a437bbd121b2f96d98d578002512ab82187087f9 100644 (file)
@@ -180,7 +180,7 @@ configure(krb5_context context, int argc, char **argv)
        ret = krb5_prepend_config_files_default(config_file, &files);
        if (ret)
            krb5_err(context, 1, ret, "getting configuration files");
-       
+
        ret = krb5_set_config_files(context, files);
        krb5_free_config_files(files);
        if(ret)
@@ -260,7 +260,7 @@ configure(krb5_context context, int argc, char **argv)
                                                           "kdc",
                                                           "detach", NULL);
 #endif /* SUPPORT_DETACH */
-    
+
     if(max_request_tcp == 0)
        max_request_tcp = 64 * 1024;
     if(max_request_udp == 0)
index 0ef7084f9177ffaca30cc9526591afc71aaaace0..8ecf375b8d21b9365dd341dae05398e6003f748e 100644 (file)
@@ -138,7 +138,7 @@ add_port_string (krb5_context context,
  */
 
 static void
-add_standard_ports (krb5_context context,              
+add_standard_ports (krb5_context context,
                    krb5_kdc_configuration *config,
                    int family)
 {
@@ -162,7 +162,7 @@ add_standard_ports (krb5_context context,
  */
 
 static void
-parse_ports(krb5_context context,              
+parse_ports(krb5_context context,
            krb5_kdc_configuration *config,
            const char *str)
 {
@@ -194,7 +194,7 @@ parse_ports(krb5_context context,
                add_port_string(context, AF_INET, p, "tcp");
            }
        }
-       
+
        p = strtok_r(NULL, " \t", &pos);
     }
     free (str_copy);
@@ -377,7 +377,7 @@ descr_type(struct descr *d)
 }
 
 static void
-addr_to_string(krb5_context context,           
+addr_to_string(krb5_context context,
               struct sockaddr *addr, size_t addr_len, char *str, size_t len)
 {
     krb5_address a;
index 0be5cc5565e898413105dc72b6bb61a05aecc03a..449cf47ad062ace61c918e21f71df437f6650aee 100644 (file)
@@ -184,7 +184,7 @@ krb5_kdc_get_config(krb5_context context, krb5_kdc_configuration **config)
                                     NULL);
 
 
-    c->pkinit_kdc_identity = 
+    c->pkinit_kdc_identity =
        krb5_config_get_string(context, NULL,
                               "kdc", "pkinit_identity", NULL);
     c->pkinit_kdc_anchors =
@@ -196,7 +196,7 @@ krb5_kdc_get_config(krb5_context context, krb5_kdc_configuration **config)
     c->pkinit_kdc_revoke =
        krb5_config_get_strings(context, NULL,
                                "kdc", "pkinit_revoke", NULL);
-    c->pkinit_kdc_ocsp_file = 
+    c->pkinit_kdc_ocsp_file =
        krb5_config_get_string(context, NULL,
                               "kdc", "pkinit_kdc_ocsp", NULL);
     c->pkinit_kdc_friendly_name =
@@ -233,7 +233,7 @@ krb5_kdc_pkinit_config(krb5_context context, krb5_kdc_configuration *config)
 
     if (config->pkinit_kdc_identity == NULL) {
        if (config->pkinit_kdc_friendly_name == NULL)
-           config->pkinit_kdc_friendly_name = 
+           config->pkinit_kdc_friendly_name =
                strdup("O=System Identity,CN=com.apple.kerberos.kdc");
        config->pkinit_kdc_identity = strdup("KEYCHAIN:");
     }
@@ -245,7 +245,7 @@ krb5_kdc_pkinit_config(krb5_context context, krb5_kdc_configuration *config)
     if (config->enable_pkinit) {
        if (config->pkinit_kdc_identity == NULL)
            krb5_errx(context, 1, "pkinit enabled but no identity");
+
        if (config->pkinit_kdc_anchors == NULL)
            krb5_errx(context, 1, "pkinit enabled but no X509 anchors");
 
@@ -259,4 +259,4 @@ krb5_kdc_pkinit_config(krb5_context context, krb5_kdc_configuration *config)
 
     return 0;
 #endif /* PKINIT */
-}   
+}
index 8fa3b104a8758e547ce30171677889df4641322c..4d339a2ddd35547c052f97100190b943f73e28d5 100644 (file)
@@ -67,7 +67,7 @@ ntlm_service(void *ctx, const heim_idata *req,
 
     kdc_log(context, config, 1, "digest-request: uid=%d",
            (int)heim_ipc_cred_get_uid(cred));
-    
+
     if (heim_ipc_cred_get_uid(cred) != 0) {
        (*complete)(cctx, EPERM, NULL);
        return;
@@ -129,10 +129,10 @@ ntlm_service(void *ctx, const heim_idata *req,
 
     if (ntq.ntChallengeResponce.length != 24) {
        struct ntlm_buf infotarget, answer;
-       
+
        answer.length = ntq.ntChallengeResponce.length;
        answer.data = ntq.ntChallengeResponce.data;
-       
+
        ret = heim_ntlm_verify_ntlm2(key->key.keyvalue.data,
                                     key->key.keyvalue.length,
                                     ntq.loginUserName,
@@ -145,17 +145,17 @@ ntlm_service(void *ctx, const heim_idata *req,
        if (ret) {
            goto failed;
        }
-       
+
        free(infotarget.data);
        /* XXX verify info target */
-       
+
     } else {
        struct ntlm_buf answer;
-       
+
        if (ntq.flags & NTLM_NEG_NTLM2_SESSION) {
            unsigned char sessionhash[MD5_DIGEST_LENGTH];
            EVP_MD_CTX *md5ctx;
-           
+
            /* the first first 8 bytes is the challenge, what is the other 16 bytes ? */
            if (ntq.lmChallengeResponce.length != 24)
                goto failed;
@@ -168,13 +168,13 @@ ntlm_service(void *ctx, const heim_idata *req,
            EVP_MD_CTX_destroy(md5ctx);
            memcpy(ntq.lmchallenge.data, sessionhash, ntq.lmchallenge.length);
        }
-       
+
        ret = heim_ntlm_calculate_ntlm1(key->key.keyvalue.data,
                                        key->key.keyvalue.length,
                                        ntq.lmchallenge.data, &answer);
        if (ret)
            goto failed;
-       
+
        if (ntq.ntChallengeResponce.length != answer.length ||
            memcmp(ntq.ntChallengeResponce.data, answer.data, answer.length) != 0) {
            free(answer.data);
@@ -182,10 +182,10 @@ ntlm_service(void *ctx, const heim_idata *req,
            goto failed;
        }
        free(answer.data);
-       
+
        {
            EVP_MD_CTX *ctxp;
-           
+
            ctxp = EVP_MD_CTX_create();
            EVP_DigestInit_ex(ctxp, EVP_md4(), NULL);
            EVP_DigestUpdate(ctxp, key->key.keyvalue.data, key->key.keyvalue.length);
@@ -201,7 +201,7 @@ ntlm_service(void *ctx, const heim_idata *req,
        goto failed;
     if (rep.length != size)
        abort();
-    
+
   failed:
     kdc_log(context, config, 1, "digest-request: %d", ret);
 
@@ -241,10 +241,10 @@ main(int argc, char **argv)
 
     if (getarg(args, num_args, argc, argv, &optidx))
        usage(1);
-       
+
     if (help_flag)
        usage(0);
-    
+
     if (version_flag) {
        print_version(NULL);
        exit(0);
index 617f12e6834ba2d5149e97531872eda01b9b3970..5f0d27441a23cbf4f56f1bb111b3296586ae121b 100644 (file)
@@ -356,7 +356,7 @@ _kdc_do_digest(krb5_context context,
     crypto = NULL;
     if (ret)
        goto out;
-       
+
     ret = decode_DigestReqInner(buf.data, buf.length, &ireq, NULL);
     krb5_data_free(&buf);
     if (ret) {
@@ -419,7 +419,7 @@ _kdc_do_digest(krb5_context context,
            free(r.u.initReply.nonce);
            r.u.initReply.nonce = s;
        }
-       
+
        ret = krb5_store_stringz(sp, r.u.initReply.nonce);
        if (ret) {
            krb5_clear_error_message(context);
@@ -475,7 +475,7 @@ _kdc_do_digest(krb5_context context,
        krb5_data_free(&buf);
        if (ret)
            goto out;
-       
+
        ASN1_MALLOC_ENCODE(Checksum, buf.data, buf.length, &res, &size, ret);
        free_Checksum(&res);
        if (ret) {
@@ -547,7 +547,7 @@ _kdc_do_digest(krb5_context context,
                                   "Failed to decode digest Checksum");
            goto out;
        }
-       
+
        ret = krb5_storage_to_data(sp, &buf);
        if (ret) {
            krb5_clear_error_message(context);
@@ -561,14 +561,14 @@ _kdc_do_digest(krb5_context context,
            krb5_set_error_message(context, ret, "malloc: out of memory");
            goto out;
        }
-       
+
        /*
         * CHAP does the checksum of the raw nonce, but do it for all
         * types, since we need to check the timestamp.
         */
        {
            ssize_t ssize;
-       
+
            ssize = hex_decode(ireq.u.digestRequest.serverNonce,
                               serverNonce.data, serverNonce.length);
            if (ssize <= 0) {
@@ -597,7 +597,7 @@ _kdc_do_digest(krb5_context context,
        {
            unsigned char *p = serverNonce.data;
            uint32_t t;
-       
+
            if (serverNonce.length < 4) {
                ret = EINVAL;
                krb5_set_error_message(context, ret, "server nonce too short");
@@ -629,13 +629,13 @@ _kdc_do_digest(krb5_context context,
                                       "from CHAP request");
                goto out;
            }
-       
+
            if (hex_decode(*ireq.u.digestRequest.identifier, &idx, 1) != 1) {
                ret = EINVAL;
                krb5_set_error_message(context, ret, "failed to decode identifier");
                goto out;
            }
-       
+
            ret = get_password_entry(context, config,
                                     ireq.u.digestRequest.username,
                                     &password);
@@ -691,7 +691,7 @@ _kdc_do_digest(krb5_context context,
                goto out;
            if (ireq.u.digestRequest.realm == NULL)
                goto out;
-       
+
            ret = get_password_entry(context, config,
                                     ireq.u.digestRequest.username,
                                     &password);
@@ -709,7 +709,7 @@ _kdc_do_digest(krb5_context context,
            EVP_DigestUpdate(ctx, ":", 1);
            EVP_DigestUpdate(ctx, password, strlen(password));
            EVP_DigestFinal_ex(ctx, md, NULL);
-       
+
            EVP_DigestInit_ex(ctx, EVP_md5(), NULL);
            EVP_DigestUpdate(ctx, md, sizeof(md));
            EVP_DigestUpdate(ctx, ":", 1);
@@ -731,19 +731,19 @@ _kdc_do_digest(krb5_context context,
                EVP_MD_CTX_destroy(ctx);
                goto failed;
            }
-       
+
            EVP_DigestInit_ex(ctx, EVP_md5(), NULL);
            EVP_DigestUpdate(ctx,
                             "AUTHENTICATE:", sizeof("AUTHENTICATE:") - 1);
            EVP_DigestUpdate(ctx, *ireq.u.digestRequest.uri,
                       strlen(*ireq.u.digestRequest.uri));
-       
+
            /* conf|int */
            if (strcmp(ireq.u.digestRequest.digest, "clear") != 0) {
                static char conf_zeros[] = ":00000000000000000000000000000000";
                EVP_DigestUpdate(ctx, conf_zeros, sizeof(conf_zeros) - 1);
            }
-       
+
            EVP_DigestFinal_ex(ctx, md, NULL);
 
            hex_encode(md, sizeof(md), &A2);
@@ -816,7 +816,7 @@ _kdc_do_digest(krb5_context context,
                krb5_set_error_message(context, ret,
                                       "MS-CHAP-V2 clientNonce missing");
                goto failed;
-           }   
+           }
            if (serverNonce.length != 16) {
                ret = EINVAL;
                krb5_set_error_message(context, ret,
@@ -838,7 +838,7 @@ _kdc_do_digest(krb5_context context,
            {
                ssize_t ssize;
                krb5_data clientNonce;
-               
+
                clientNonce.length = strlen(*ireq.u.digestRequest.clientNonce);
                clientNonce.data = malloc(clientNonce.length);
                if (clientNonce.data == NULL) {
@@ -872,7 +872,7 @@ _kdc_do_digest(krb5_context context,
            ret = krb5_parse_name(context, username, &clientprincipal);
            if (ret)
                goto failed;
-       
+
            ret = _kdc_db_fetch(context, config, clientprincipal,
                                HDB_F_GET_CLIENT, NULL, NULL, &user);
            krb5_free_principal(context, clientprincipal);
@@ -900,7 +900,7 @@ _kdc_do_digest(krb5_context context,
                krb5_set_error_message(context, ret, "NTLM missing arcfour key");
                goto failed;
            }
-       
+
            hex_encode(answer.data, answer.length, &mdx);
            if (mdx == NULL) {
                free(answer.data);
@@ -1101,7 +1101,7 @@ _kdc_do_digest(krb5_context context,
            krb5_set_error_message(context, ret, "malloc: out of memory");
            goto out;
        }
-       
+
        ret = krb5_storage_write(sp, r.u.ntlmInitReply.challange.data, 8);
        if (ret != 8) {
            ret = ENOMEM;
@@ -1143,7 +1143,7 @@ _kdc_do_digest(krb5_context context,
        uint32_t flags;
        Key *key = NULL;
        int version;
-       
+
        r.element = choice_DigestRepInner_ntlmResponse;
        r.u.ntlmResponse.success = 0;
        r.u.ntlmResponse.flags = 0;
@@ -1187,7 +1187,7 @@ _kdc_do_digest(krb5_context context,
            krb5_set_error_message(context, ret, "malloc: out of memory");
            goto out;
        }
-       
+
        ret = krb5_storage_read(sp, challange, sizeof(challange));
        if (ret != sizeof(challange)) {
            ret = ENOMEM;
@@ -1266,7 +1266,7 @@ _kdc_do_digest(krb5_context context,
            if (flags & NTLM_NEG_NTLM2_SESSION) {
                unsigned char sessionhash[MD5_DIGEST_LENGTH];
                EVP_MD_CTX *ctx;
-               
+
                if ((config->digests_allowed & NTLM_V1_SESSION) == 0) {
                    kdc_log(context, config, 0, "NTLM v1-session not allowed");
                    ret = EINVAL;
@@ -1279,7 +1279,7 @@ _kdc_do_digest(krb5_context context,
                                           "for NTLM session key");
                    goto failed;
                }
-               
+
                ctx = EVP_MD_CTX_create();
 
                EVP_DigestInit_ex(ctx, EVP_md5(), NULL);
@@ -1297,7 +1297,7 @@ _kdc_do_digest(krb5_context context,
                    goto failed;
                }
            }
-       
+
            ret = heim_ntlm_calculate_ntlm1(key->key.keyvalue.data,
                                            key->key.keyvalue.length,
                                            challange, &answer);
@@ -1305,7 +1305,7 @@ _kdc_do_digest(krb5_context context,
                krb5_set_error_message(context, ret, "NTLM missing arcfour key");
                goto failed;
            }
-       
+
            if (ireq.u.ntlmRequest.ntlm.length != answer.length ||
                memcmp(ireq.u.ntlmRequest.ntlm.data, answer.data, answer.length) != 0)
                {
@@ -1335,7 +1335,7 @@ _kdc_do_digest(krb5_context context,
            unsigned char masterkey[MD4_DIGEST_LENGTH];
            EVP_CIPHER_CTX rc4;
            size_t len;
-       
+
            if ((flags & NTLM_NEG_KEYEX) == 0) {
                ret = EINVAL;
                krb5_set_error_message(context, ret,
@@ -1343,7 +1343,7 @@ _kdc_do_digest(krb5_context context,
                                       "exchange but still sent key");
                goto failed;
            }
-       
+
            len = ireq.u.ntlmRequest.sessionkey->length;
            if (len != sizeof(masterkey)){
                ret = EINVAL;
@@ -1352,7 +1352,7 @@ _kdc_do_digest(krb5_context context,
                                       (unsigned long)len);
                goto failed;
            }
-       
+
 
            EVP_CIPHER_CTX_init(&rc4);
            EVP_CipherInit_ex(&rc4, EVP_rc4(), NULL, sessionkey, NULL, 1);
@@ -1360,7 +1360,7 @@ _kdc_do_digest(krb5_context context,
                       masterkey, ireq.u.ntlmRequest.sessionkey->data,
                       sizeof(masterkey));
            EVP_CIPHER_CTX_cleanup(&rc4);
-       
+
            r.u.ntlmResponse.sessionkey =
                malloc(sizeof(*r.u.ntlmResponse.sessionkey));
            if (r.u.ntlmResponse.sessionkey == NULL) {
@@ -1368,7 +1368,7 @@ _kdc_do_digest(krb5_context context,
                krb5_set_error_message(context, ret, "malloc: out of memory");
                goto out;
            }
-       
+
            ret = krb5_data_copy(r.u.ntlmResponse.sessionkey,
                                 masterkey, sizeof(masterkey));
            if (ret) {
@@ -1415,7 +1415,7 @@ _kdc_do_digest(krb5_context context,
            krb5_clear_error_message(context);
            goto out;
        }
-       
+
        kdc_log(context, config, 0, "Digest failed with: %s", s);
 
        r.element = choice_DigestRepInner_error;
index 6e62cae8920ca79ccaf872892f9a59a73a9c07e6..973235f2ae4c89587593b1d8dbe541de73667b6b 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2000 - 2004 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd December  8, 2004
index 290a858280c440768e367305d6592ba52ae13cb6..b68f159ef2341580ca6bde783f2616068497c8de 100644 (file)
@@ -106,7 +106,7 @@ v5_prop(krb5_context context, HDB *db, hdb_entry_ex *entry, void *appdata)
            krb5_warn(context, ret, "hdb_unseal_keys_mkey");
            return ret;
        }
-    }  
+    }
 
     ret = hdb_entry2value(context, &entry->entry, &data);
     if(ret) {
@@ -258,7 +258,7 @@ dump_database (krb5_context context, int type,
     pd.context      = context;
     pd.auth_context = NULL;
     pd.sock         = STDOUT_FILENO;
-       
+
     ret = iterate (context, database_name, db, type, &pd);
     if (ret)
        krb5_errx(context, 1, "iterate failure");
@@ -344,7 +344,7 @@ propagate_database (krb5_context context, int type,
            close(fd);
            goto next_host;
        }
-       
+
        pd.context      = context;
        pd.auth_context = auth_context;
        pd.sock         = fd;
@@ -371,7 +371,7 @@ propagate_database (krb5_context context, int type,
            goto next_host;
        } else
            krb5_data_free (&data);
-       
+
     next_host:
        krb5_auth_con_free(context, auth_context);
        close(fd);
@@ -465,7 +465,7 @@ main(int argc, char **argv)
 
     if(ccache != NULL)
        krb5_cc_destroy(context, ccache);
-       
+
     if(db != NULL)
        (*db->hdb_destroy)(context, db);
 
index 32f425039e58333aba585dcb0e78cbfcad94c5b1..31b44e28a59c76e0cc8f56cc72ad7ed091a8b7d2 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1997, 2000 - 2003 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd August 27, 1997
index 86fb891cfe4f7abab98255ca66d766130ba82589..75b26a15f5016453861644f3c70ad3acd5623a91 100644 (file)
@@ -172,7 +172,7 @@ main(int argc, char **argv)
                            0, keytab, &ticket);
        if(ret)
            krb5_err(context, 1, ret, "krb5_recvauth");
-       
+
        ret = krb5_unparse_name(context, ticket->server, &server);
        if (ret)
            krb5_err(context, 1, ret, "krb5_unparse_name");
index edc73fa66701856204fa315206f77ad04af4125d..b0510f408924f77570f0870f16becae419eb82fc 100644 (file)
@@ -90,7 +90,7 @@ main(int argc, char **argv)
     if (config->enable_pkinit) {
        if (config->pkinit_kdc_identity == NULL)
            krb5_errx(context, 1, "pkinit enabled but no identity");
+
        if (config->pkinit_kdc_anchors == NULL)
            krb5_errx(context, 1, "pkinit enabled but no X509 anchors");
 
index 7fa326d50f49225aef77a517f1acdc32b48bf941..4a69bda06790cdb905b64ae586941777af5ea7eb 100644 (file)
--- a/kdc/kdc.8
+++ b/kdc/kdc.8
@@ -1,33 +1,33 @@
 .\" Copyright (c) 2003 - 2004 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
 .\" $Id$
 .\"
@@ -137,13 +137,13 @@ and
 The entity used for logging is
 .Nm kdc .
 .Sh CONFIGURATION FILE
-The configuration file has the same syntax as 
+The configuration file has the same syntax as
 .Xr krb5.conf 5 ,
-but will be read before 
+but will be read before
 .Pa /etc/krb5.conf ,
 so it may override settings found there.
 Options specific to the KDC only are found in the
-.Dq [kdc] 
+.Dq [kdc]
 section.
 All the command-line options can preferably be added in the
 configuration file.
@@ -198,7 +198,7 @@ How long before password/principal expiration the KDC should start
 sending out warning messages.
 .El
 .Pp
-The configuration file is only read when the 
+The configuration file is only read when the
 .Nm
 is started.
 If changes made to the configuration file are to take effect, the
@@ -223,7 +223,7 @@ addresses, the best option is probably to listen to a wildcarded TCP
 socket, and make sure your clients use TCP to connect.
 For instance, this will listen to IPv4 TCP port 88 only:
 .Bd -literal -offset indent
-kdc --addresses=0.0.0.0 --ports="88/tcp" 
+kdc --addresses=0.0.0.0 --ports="88/tcp"
 .Ed
 .Pp
 There should be a way to specify protocol, port, and address triplets,
index f5e38e2173dbe6accdf0f4ba17a84d02c4e7e9ad..d7ee036a1806b8f2df0abb0e7ca6781647d29bfe 100644 (file)
--- a/kdc/kdc.h
+++ b/kdc/kdc.h
@@ -58,7 +58,7 @@ typedef struct krb5_kdc_configuration {
     int num_db;
 
     krb5_boolean encode_as_rep_as_tgs_rep; /* bug compatibility */
-       
+
     krb5_boolean check_ticket_addresses;
     krb5_boolean allow_null_ticket_addresses;
     krb5_boolean allow_anonymous;
index 41281f5d6ad1efc99f9a4cc78caa07f82bd83d96..a5b89048874e40f1955d615a857c997f9c671d21 100644 (file)
@@ -212,7 +212,7 @@ log_patypes(krb5_context context,
     struct rk_strpool *p = NULL;
     char *str;
     size_t i;
-       
+
     for (i = 0; i < padata->len; i++) {
        switch(padata->val[i].padata_type) {
        case KRB5_PADATA_PK_AS_REQ:
@@ -240,7 +240,7 @@ log_patypes(krb5_context context,
     }
     if (p == NULL)
        p = rk_strpoolprintf(p, "none");
-       
+
     str = rk_strpoolcollect(p);
     kdc_log(context, config, 0, "Client sent patypes: %s", str);
     free(str);
@@ -694,13 +694,13 @@ kdc_check_flags(krb5_context context,
                    "Client (%s) has invalid bit set", client_name);
            return KRB5KDC_ERR_POLICY;
        }
-       
+
        if(!client->flags.client){
            kdc_log(context, config, 0,
                    "Principal may not act as client -- %s", client_name);
            return KRB5KDC_ERR_POLICY;
        }
-       
+
        if (client->valid_start && *client->valid_start > kdc_time) {
            char starttime_str[100];
            krb5_format_time(context, *client->valid_start,
@@ -710,7 +710,7 @@ kdc_check_flags(krb5_context context,
                    starttime_str, client_name);
            return KRB5KDC_ERR_CLIENT_NOTYET;
        }
-       
+
        if (client->valid_end && *client->valid_end < kdc_time) {
            char endtime_str[100];
            krb5_format_time(context, *client->valid_end,
@@ -720,7 +720,7 @@ kdc_check_flags(krb5_context context,
                    endtime_str, client_name);
            return KRB5KDC_ERR_NAME_EXP;
        }
-       
+
        if (client->pw_end && *client->pw_end < kdc_time
            && (server_ex == NULL || !server_ex->entry.flags.change_pw)) {
            char pwend_str[100];
@@ -976,7 +976,7 @@ _kdc_as_rep(krb5_context context,
            goto out;
        }
     } else if (b->kdc_options.request_anonymous) {
-       kdc_log(context, config, 0, 
+       kdc_log(context, config, 0,
                "Request for a anonymous ticket with non "
                "anonymous client name: %s", client_name);
        ret = KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN;
@@ -1111,7 +1111,7 @@ _kdc_as_rep(krb5_context context,
 
            ret = _kdc_pk_check_client(context,
                                       config,
-                                      clientdb, 
+                                      clientdb,
                                       client,
                                       pkp,
                                       &client_cert);
@@ -1119,7 +1119,7 @@ _kdc_as_rep(krb5_context context,
                e_text = "PKINIT certificate not allowed to "
                    "impersonate principal";
                _kdc_pk_free_client_param(context, pkp);
-               
+
                kdc_log(context, config, 0, "%s", e_text);
                pkp = NULL;
                goto out;
@@ -1148,9 +1148,9 @@ _kdc_as_rep(krb5_context context,
            EncryptedData enc_data;
            Key *pa_key;
            char *str;
-       
+
            found_pa = 1;
-       
+
            if (b->kdc_options.request_anonymous) {
                ret = KRB5KRB_AP_ERR_BAD_INTEGRITY;
                kdc_log(context, config, 0, "ENC-TS doesn't support anon");
@@ -1167,7 +1167,7 @@ _kdc_as_rep(krb5_context context,
                        client_name);
                goto out;
            }
-       
+
            ret = hdb_enctype2key(context, &client->entry,
                                  enc_data.etype, &pa_key);
            if(ret){
@@ -1256,7 +1256,7 @@ _kdc_as_rep(krb5_context context,
            free_PA_ENC_TS_ENC(&p);
            if (abs(kdc_time - p.patimestamp) > context->max_skew) {
                char client_time[100];
-               
+
                krb5_format_time(context, p.patimestamp,
                                 client_time, sizeof(client_time), TRUE);
 
@@ -1384,7 +1384,7 @@ _kdc_as_rep(krb5_context context,
                goto out;
            }
        }
-       
+
        ASN1_MALLOC_ENCODE(METHOD_DATA, buf, len, &method_data, &len, ret);
        free_METHOD_DATA(&method_data);
 
@@ -1401,7 +1401,7 @@ _kdc_as_rep(krb5_context context,
     }
 
     if (clientdb->hdb_auth_status)
-       (clientdb->hdb_auth_status)(context, clientdb, client, 
+       (clientdb->hdb_auth_status)(context, clientdb, client,
                                    HDB_AUTH_SUCCESS);
 
     /*
@@ -1503,7 +1503,7 @@ _kdc_as_rep(krb5_context context,
     {
        time_t start;
        time_t t;
-       
+
        start = et.authtime = kdc_time;
 
        if(f.postdated && req->req_body.from){
@@ -1693,7 +1693,7 @@ _kdc_as_rep(krb5_context context,
        krb5_crypto_destroy(context, cryptox);
        if (ret)
            goto out;
-       
+
        ASN1_MALLOC_ENCODE(PA_ClientCanonicalized, data.data, data.length,
                           &canon, &len, ret);
        free_Checksum(&canon.canon_checksum);
@@ -1835,7 +1835,7 @@ _kdc_tkt_add_if_relevant_ad(krb5_context context,
            return ENOMEM;
        }
     }
-       
+
     /* add the entry to the last element */
     {
        AuthorizationData ad = { 0, NULL };
@@ -1863,7 +1863,7 @@ _kdc_tkt_add_if_relevant_ad(krb5_context context,
        }
        if (ade.ad_data.length != size)
            krb5_abortx(context, "internal asn.1 encoder error");
-       
+
        ret = add_AuthorizationData(tkt->authorization_data, &ade);
        der_free_octet_string(&ade.ad_data);
        if (ret) {
index 8d9090f70aa3f534fd5330e5b57ae35bf8d6d501..33fafc4c4f35b6e5e63fb4ddb0597f775276f669 100644 (file)
@@ -64,7 +64,7 @@ find_KRB5SignedPath(krb5_context context,
     AuthorizationData child;
     krb5_error_code ret;
     int pos;
-       
+
     if (ad == NULL || ad->len == 0)
        return KRB5KDC_ERR_PADATA_TYPE_NOSUPP;
 
@@ -123,12 +123,12 @@ _kdc_add_KRB5SignedPath(krb5_context context,
 
     {
        KRB5SignedPathData spd;
-       
+
        spd.client = client;
        spd.authtime = tkt->authtime;
        spd.delegated = principals;
        spd.method_data = NULL;
-       
+
        ASN1_MALLOC_ENCODE(KRB5SignedPathData, data.data, data.length,
                           &spd, &size, ret);
        if (ret)
@@ -354,7 +354,7 @@ check_PAC(krb5_context context,
                                         server_key, krbtgt_sign_key, rspac);
                }
                krb5_pac_free(context, pac);
-               
+
                return ret;
            }
        }
@@ -373,7 +373,7 @@ check_tgs_flags(krb5_context context,
                KDC_REQ_BODY *b, const EncTicketPart *tgt, EncTicketPart *et)
 {
     KDCOptions f = b->kdc_options;
-       
+
     if(f.validate){
        if(!tgt->flags.invalid || tgt->starttime == NULL){
            kdc_log(context, config, 0,
@@ -412,7 +412,7 @@ check_tgs_flags(krb5_context context,
     }
     if(tgt->flags.forwarded)
        et->flags.forwarded = 1;
-       
+
     if(f.proxiable){
        if(!tgt->flags.proxiable){
            kdc_log(context, config, 0,
@@ -482,7 +482,7 @@ check_tgs_flags(krb5_context context,
        et->endtime = *et->starttime + old_life;
        if (et->renew_till != NULL)
            et->endtime = min(*et->renew_till, et->endtime);
-    }  
+    }
 
 #if 0
     /* checks for excess flags */
@@ -524,7 +524,7 @@ check_constrained_delegation(krb5_context context,
            krb5_clear_error_message(context);
            return ret;
        }
-       
+
        if (acl) {
            for (i = 0; i < acl->len; i++) {
                if (krb5_principal_compare(context, server, &acl->val[i]) == TRUE)
@@ -826,7 +826,7 @@ tgs_make_reply(krb5_context context,
            renew = min(renew, *server->entry.max_renew);
        *et.renew_till = et.authtime + renew;
     }
-       
+
     if(et.renew_till){
        *et.renew_till = min(*et.renew_till, *tgt->renew_till);
        *et.starttime = min(*et.starttime, *et.renew_till);
@@ -860,7 +860,7 @@ tgs_make_reply(krb5_context context,
        if (ret)
            goto out;
     }
-       
+
     if (auth_data) {
        unsigned int i = 0;
 
@@ -902,7 +902,7 @@ tgs_make_reply(krb5_context context,
        goto out;
     et.crealm = tgt->crealm;
     et.cname = tgt_name->name;
-       
+
     ek.key = et.key;
     /* MIT must have at least one last_req */
     ek.last_req.len = 1;
@@ -1031,7 +1031,7 @@ tgs_check_authenticator(krb5_context context,
        ret =  KRB5KRB_AP_ERR_INAPP_CKSUM;
        goto out;
     }
-               
+
     /* XXX should not re-encode this */
     ASN1_MALLOC_ENCODE(KDC_REQ_BODY, buf, buf_size, b, &len, ret);
     if(ret){
@@ -1090,7 +1090,7 @@ find_rpath(krb5_context context, Realm crealm, Realm srealm)
                                                   NULL);
     return new_realm;
 }
-       
+
 
 static krb5_boolean
 need_referral(krb5_context context, krb5_kdc_configuration *config,
@@ -1250,7 +1250,7 @@ tgs_parse_request(krb5_context context,
                              &ap_req_options,
                              ticket,
                              KRB5_KU_TGS_REQ_AUTH);
-                       
+
     krb5_free_principal(context, princ);
     if(ret) {
        const char *msg = krb5_get_error_message(context, ret);
@@ -1380,7 +1380,7 @@ build_server_referral(krb5_context context,
                      const PrincipalName *true_principal_name,
                      const PrincipalName *requested_principal,
                      krb5_data *outdata)
-{              
+{
     PA_ServerReferralData ref;
     krb5_error_code ret;
     EncryptedData ed;
@@ -1506,7 +1506,7 @@ tgs_build_reply(krb5_context context,
        hdb_entry_ex *uu;
        krb5_principal p;
        Key *uukey;
-       
+
        if(b->additional_tickets == NULL ||
           b->additional_tickets->len == 0){
            ret = KRB5KDC_ERR_BADOPTION; /* ? */
@@ -1552,7 +1552,7 @@ tgs_build_reply(krb5_context context,
     }
 
     _krb5_principalname2krb5_principal(context, &sp, *s, r);
-    ret = krb5_unparse_name(context, sp, &spn);        
+    ret = krb5_unparse_name(context, sp, &spn);
     if (ret)
        goto out;
     _krb5_principalname2krb5_principal(context, &cp, tgt->cname, tgt->crealm);
@@ -1597,7 +1597,7 @@ server_lookup:
                    free(spn);
                    krb5_make_principal(context, &sp, r,
                                        KRB5_TGS_NAME, new_rlm, NULL);
-                   ret = krb5_unparse_name(context, sp, &spn); 
+                   ret = krb5_unparse_name(context, sp, &spn);
                    if (ret)
                        goto out;
 
@@ -1663,7 +1663,7 @@ server_lookup:
            kvno = 0;
        } else {
            Key *skey;
-       
+
            ret = _kdc_find_etype(context, server,
                                  b->etype.val, b->etype.len, &skey);
            if(ret) {
@@ -1675,7 +1675,7 @@ server_lookup:
            etype = skey->key.keytype;
            kvno = server->entry.kvno;
        }
-       
+
        ret = krb5_generate_random_keyblock(context, etype, &sessionkey);
        if (ret)
            goto out;
@@ -1702,11 +1702,11 @@ server_lookup:
     /* Now refetch the primary krbtgt, and get the current kvno (the
      * sign check may have been on an old kvno, and the server may
      * have been an incoming trust) */
-    ret = krb5_make_principal(context, &krbtgt_principal, 
+    ret = krb5_make_principal(context, &krbtgt_principal,
                              krb5_principal_get_comp_string(context,
                                                             krbtgt->entry.principal,
                                                             1),
-                             KRB5_TGS_NAME, 
+                             KRB5_TGS_NAME,
                              krb5_principal_get_comp_string(context,
                                                             krbtgt->entry.principal,
                                                             1), NULL);
@@ -1883,7 +1883,7 @@ server_lookup:
            if (ret)
                goto out;
 
-           ret = krb5_unparse_name(context, client_principal, &selfcpn);       
+           ret = krb5_unparse_name(context, client_principal, &selfcpn);
            if (ret)
                goto out;
 
@@ -2012,7 +2012,7 @@ server_lookup:
            goto out;
        }
 
-       ret = check_constrained_delegation(context, config, clientdb, 
+       ret = check_constrained_delegation(context, config, clientdb,
                                           client, sp);
        if (ret) {
            kdc_log(context, config, 0,
@@ -2093,7 +2093,7 @@ server_lookup:
        kdc_log(context, config, 0, "Request from wrong address");
        goto out;
     }
-       
+
     /*
      * If this is an referral, add server referral data to the
      * auth_data reply .
@@ -2155,11 +2155,11 @@ server_lookup:
                         &enc_pa_data,
                         e_text,
                         reply);
-       
+
 out:
     free(spn);
     free(cpn);
-       
+
     krb5_data_free(&rspac);
     krb5_free_keyblock_contents(context, &sessionkey);
     if(krbtgt_out)
@@ -2225,7 +2225,7 @@ _kdc_tgs_rep(krb5_context context,
 
     if(tgs_req == NULL){
        ret = KRB5KDC_ERR_PADATA_TYPE_NOSUPP;
-       
+
        kdc_log(context, config, 0,
                "TGS-REQ from %s without PA-TGS-REQ", from);
        goto out;
index 370e315a96ddccfff3decf5be8b97fe89c09e895..615132b8d011d810bdf8a426453d677639929970 100644 (file)
@@ -1,33 +1,33 @@
 .\" Copyright (c) 1997 - 2004 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
 .\" $Id$
 .\"
index 1cd626e10d9bd774562a060a35fe7118d7452af8..0b75fb8d84a100e3af835a85823b10eb5fae5da1 100644 (file)
@@ -118,7 +118,7 @@ main(int argc, char **argv)
                    krb5_err(context, 1, errno, "failed to read passphrase");
                buf[n] = '\0';
                buf[strcspn(buf, "\r\n")] = '\0';
-               
+
            } else {
                if(UI_UTIL_read_pw_string(buf, sizeof(buf), "Master key: ", 1))
                    exit(1);
@@ -126,7 +126,7 @@ main(int argc, char **argv)
            krb5_string_to_key_salt(context, enctype, buf, salt, &key);
        }
        ret = hdb_add_master_key(context, &key, &mkey);
-       
+
        krb5_free_keyblock_contents(context, &key);
 
     }
index f6f8f8a3bd6ee8f48c32ec8bf0dfeb00d01b78d3..8d683d50a375ddb35968f801c6b8cd7c741c6afd 100644 (file)
@@ -259,7 +259,7 @@ build_certificate(krb5_context context,
     hx509_cert_free(cert);
     if (ret)
        goto out;
-               
+
     return 0;
 out:
     if (env)
@@ -355,7 +355,7 @@ _kdc_do_kx509(krb5_context context,
                krb5_xfree(expected);
                goto out;
            }
-           
+
            ret = KRB5KDC_ERR_SERVER_NOMATCH;
            krb5_set_error_message(context, ret,
                                   "User %s used wrong Kx509 service "
index 9a89551371c1b6dd2060c0927d65ac1d07add8d9..fc42e9dcdebfea92a5cfaff243f92079b9562173 100644 (file)
@@ -80,11 +80,11 @@ switch_environment(void)
 
        if (initgroups(pw->pw_name, pw->pw_gid) < 0)
            err(1, "initgroups failed");
-       
+
 #ifndef HAVE_CAPNG
        if (setgid(pw->pw_gid) < 0)
            err(1, "setgid(%s) failed", runas_string);
-       
+
        if (setuid(pw->pw_uid) < 0)
            err(1, "setuid(%s)", runas_string);
 #else
index 297fa3824b72e88a7bbd418e54cfbea084178615..4588785044f63f16cf94d3903239ac1a88e8a12b 100644 (file)
@@ -62,7 +62,7 @@ _kdc_db_fetch(krb5_context context,
 
     for(i = 0; i < config->num_db; i++) {
        krb5_principal enterprise_principal = NULL;
-       if (!(config->db[i]->hdb_capability_flags & HDB_CAP_F_HANDLE_ENTERPRISE_PRINCIPAL) 
+       if (!(config->db[i]->hdb_capability_flags & HDB_CAP_F_HANDLE_ENTERPRISE_PRINCIPAL)
            && principal->name.name_type == KRB5_NT_ENTERPRISE_PRINCIPAL) {
            if (principal->name.name_string.len != 1) {
                ret = KRB5_PARSE_MALFORMED;
index a0c99dfd9498186ff84a90c2c62ef716915d3ea0..f28e932b15b4058c95656a5c4c5311de5fa5ecd1 100644 (file)
@@ -167,7 +167,7 @@ fix_salt(krb5_context context, hdb_entry *ent, int key_num)
        size_t len;
        size_t i;
        char *p;
-       
+
        len = 0;
        for (i = 0; i < ent->principal->name.name_string.len; ++i)
            len += strlen(ent->principal->name.name_string.val[i]);
@@ -381,7 +381,7 @@ mit_prop_dump(void *arg, const char *file)
            high_kvno = kvno;
            ALLOC(ent.entry.keys.val[i].mkvno);
            *ent.entry.keys.val[i].mkvno = 1;
-       
+
            /* key version 0 -- actual key */
            ent.entry.keys.val[i].key.keytype = getint(&p); /* key type */
            tmp = getint(&p); /* key length */
index ca81dc227472593957d247bf6a381412b0048fc0..a02cb816ab7e1bdc3765badaf5823111bf4b5945 100644 (file)
@@ -148,7 +148,7 @@ pk_check_pkauthenticator(krb5_context context,
        krb5_clear_error_message(context);
        return ret;
     }
-       
+
     if (a->paChecksum == NULL) {
        krb5_clear_error_message(context);
        ret = KRB5_KDC_ERR_PA_CHECKSUM_MUST_BE_INCLUDED;
@@ -222,7 +222,7 @@ generate_dh_keyblock(krb5_context context,
 
        if (!DH_generate_key(client_params->u.dh.key)) {
            ret = KRB5KRB_ERR_GENERIC;
-           krb5_set_error_message(context, ret, 
+           krb5_set_error_message(context, ret,
                                   "Can't generate Diffie-Hellman keys");
            goto out;
        }
@@ -281,14 +281,14 @@ generate_dh_keyblock(krb5_context context,
            goto out;
        }
 
-       dh_gen_keylen = ECDH_compute_key(dh_gen_key, size, 
+       dh_gen_keylen = ECDH_compute_key(dh_gen_key, size,
                                         EC_KEY_get0_public_key(client_params->u.ecdh.public_key),
                                         client_params->u.ecdh.key, NULL);
 
 #endif /* HAVE_OPENSSL */
     } else {
        ret = KRB5KRB_ERR_GENERIC;
-       krb5_set_error_message(context, ret, 
+       krb5_set_error_message(context, ret,
                               "Diffie-Hellman not selected keys");
        goto out;
     }
@@ -525,7 +525,7 @@ _kdc_pk_rd_padata(krb5_context context,
        goto out;
     }
 
-    ret = hx509_certs_merge(context->hx509ctx, trust_anchors, 
+    ret = hx509_certs_merge(context->hx509ctx, trust_anchors,
                            kdc_identity->anchors);
     if (ret) {
        hx509_certs_free(&trust_anchors);
@@ -538,7 +538,7 @@ _kdc_pk_rd_padata(krb5_context context,
     if (ret == 0 && pc != NULL) {
        hx509_cert cert;
        unsigned int i;
-       
+
        for (i = 0; i < pc->len; i++) {
            ret = hx509_cert_init_data(context->hx509ctx,
                                       pc->val[i].cert.data,
@@ -572,7 +572,7 @@ _kdc_pk_rd_padata(krb5_context context,
 
        if (req->req_body.kdc_options.request_anonymous) {
            ret = KRB5_KDC_ERR_PUBLIC_KEY_ENCRYPTION_NOT_SUPPORTED;
-           krb5_set_error_message(context, ret, 
+           krb5_set_error_message(context, ret,
                                   "Anon not supported in RSA mode");
            goto out;
        }
@@ -586,7 +586,7 @@ _kdc_pk_rd_padata(krb5_context context,
                                   "PK-AS-REQ-Win2k: %d", ret);
            goto out;
        }
-       
+
        ret = hx509_cms_unwrap_ContentInfo(&r.signed_auth_pack,
                                           &contentInfoOid,
                                           &signed_content,
@@ -612,7 +612,7 @@ _kdc_pk_rd_padata(krb5_context context,
                                   "Can't decode PK-AS-REQ: %d", ret);
            goto out;
        }
-       
+
        /* XXX look at r.kdcPkId */
        if (r.trustedCertifiers) {
            ExternalPrincipalIdentifiers *edi = r.trustedCertifiers;
@@ -624,12 +624,12 @@ _kdc_pk_rd_padata(krb5_context context,
                                   &cp->client_anchors);
            if (ret) {
                krb5_set_error_message(context, ret,
-                                      "Can't allocate client anchors: %d", 
+                                      "Can't allocate client anchors: %d",
                                       ret);
                goto out;
 
            }
-           /* 
+           /*
             * If the client sent more then 10 EDI, don't bother
             * looking more then 10 of performance reasons.
             */
@@ -651,7 +651,7 @@ _kdc_pk_rd_padata(krb5_context context,
                                          "Failed to allocate hx509_query");
                    goto out;
                }
-               
+
                ret = decode_IssuerAndSerialNumber(edi->val[i].issuerAndSerialNumber->data,
                                                   edi->val[i].issuerAndSerialNumber->length,
                                                   &iasn,
@@ -704,7 +704,7 @@ _kdc_pk_rd_padata(krb5_context context,
                               "PK-AS-REQ-Win2k invalid content type oid");
        goto out;
     }
-       
+
     if (!have_data) {
        ret = KRB5KRB_ERR_GENERIC;
        krb5_set_error_message(context, ret,
@@ -805,7 +805,7 @@ _kdc_pk_rd_padata(krb5_context context,
            ap.clientPublicValue == NULL) {
            free_AuthPack(&ap);
            ret = KRB5_KDC_ERR_PUBLIC_KEY_ENCRYPTION_NOT_SUPPORTED;
-           krb5_set_error_message(context, ret, 
+           krb5_set_error_message(context, ret,
                                   "Anon not supported in RSA mode");
            goto out;
        }
@@ -849,7 +849,7 @@ _kdc_pk_rd_padata(krb5_context context,
            free_AuthPack(&ap);
            goto out;
        }
-       
+
        if (ap.supportedCMSTypes) {
            ret = hx509_peer_info_set_cms_algs(context->hx509ctx,
                                               cp->peer,
@@ -885,7 +885,7 @@ out:
     der_free_oid(&contentInfoOid);
     if (ret) {
         _kdc_pk_free_client_param(context, cp);
-    } else 
+    } else
        *ret_params = cp;
     return ret;
 }
@@ -954,7 +954,7 @@ pk_mk_pa_reply_enckey(krb5_context context,
        break;
     default:
        krb5_abortx(context, "internal pkinit error");
-    }  
+    }
 
     if (do_win2k) {
        ReplyKeyPack_Win2k kp;
@@ -966,7 +966,7 @@ pk_mk_pa_reply_enckey(krb5_context context,
            goto out;
        }
        kp.nonce = cp->nonce;
-       
+
        ASN1_MALLOC_ENCODE(ReplyKeyPack_Win2k,
                           buf.data, buf.length,
                           &kp, &size,ret);
@@ -995,7 +995,7 @@ pk_mk_pa_reply_enckey(krb5_context context,
            krb5_clear_error_message(context);
            goto out;
        }
-                       
+
        ret = krb5_crypto_destroy(context, ascrypto);
        if (ret) {
            krb5_clear_error_message(context);
@@ -1015,15 +1015,15 @@ pk_mk_pa_reply_enckey(krb5_context context,
     {
        hx509_query *q;
        hx509_cert cert;
-       
+
        ret = hx509_query_alloc(context->hx509ctx, &q);
        if (ret)
            goto out;
-       
+
        hx509_query_match_option(q, HX509_QUERY_OPTION_PRIVATE_KEY);
        if (config->pkinit_kdc_friendly_name)
            hx509_query_match_friendly_name(q, config->pkinit_kdc_friendly_name);
-       
+
        ret = hx509_certs_find(context->hx509ctx,
                               kdc_identity->certs,
                               q,
@@ -1031,7 +1031,7 @@ pk_mk_pa_reply_enckey(krb5_context context,
        hx509_query_free(context->hx509ctx, q);
        if (ret)
            goto out;
-       
+
        ret = hx509_cms_create_signed_1(context->hx509ctx,
                                        0,
                                        sdAlg,
@@ -1078,7 +1078,7 @@ out:
         hx509_cert_free(*kdc_cert);
        *kdc_cert = NULL;
     }
-      
+
     krb5_data_free(&buf);
     krb5_data_free(&signed_data);
     return ret;
@@ -1117,7 +1117,7 @@ pk_mk_pa_reply_dh(krb5_context context,
        ret = BN_to_integer(context, kdc_dh->pub_key, &i);
        if (ret)
            return ret;
-       
+
        ASN1_MALLOC_ENCODE(DHPublicKey, buf.data, buf.length, &i, &size, ret);
        der_free_heim_integer(&i);
        if (ret) {
@@ -1127,7 +1127,7 @@ pk_mk_pa_reply_dh(krb5_context context,
        }
        if (buf.length != size)
            krb5_abortx(context, "Internal ASN.1 encoder error");
-       
+
        dh_info.subjectPublicKey.length = buf.length * 8;
        dh_info.subjectPublicKey.data = buf.data;
        krb5_data_zero(&buf);
@@ -1154,7 +1154,7 @@ pk_mk_pa_reply_dh(krb5_context context,
     } else
        krb5_abortx(context, "no keyex selected ?");
 
-       
+
     dh_info.nonce = cp->nonce;
 
     ASN1_MALLOC_ENCODE(KDCDHKeyInfo, buf.data, buf.length, &dh_info, &size,
@@ -1175,11 +1175,11 @@ pk_mk_pa_reply_dh(krb5_context context,
     ret = hx509_query_alloc(context->hx509ctx, &q);
     if (ret)
        goto out;
-    
+
     hx509_query_match_option(q, HX509_QUERY_OPTION_PRIVATE_KEY);
     if (config->pkinit_kdc_friendly_name)
        hx509_query_match_friendly_name(q, config->pkinit_kdc_friendly_name);
-    
+
     ret = hx509_certs_find(context->hx509ctx,
                           kdc_identity->certs,
                           q,
@@ -1187,7 +1187,7 @@ pk_mk_pa_reply_dh(krb5_context context,
     hx509_query_free(context->hx509ctx, q);
     if (ret)
        goto out;
-    
+
     ret = hx509_cms_create_signed_1(context->hx509ctx,
                                    0,
                                    &asn1_oid_id_pkdhkeydata,
@@ -1263,7 +1263,7 @@ _kdc_pk_mk_pa_reply(krb5_context context,
            krb5_set_error_message(context, ret,
                                   "No valid enctype available from client");
            goto out;
-       }       
+       }
        enctype = req->req_body.etype.val[i];
     } else
        enctype = ETYPE_DES3_CBC_SHA1;
@@ -1314,7 +1314,7 @@ _kdc_pk_mk_pa_reply(krb5_context context,
            if (rep.u.encKeyPack.length != size)
                krb5_abortx(context, "Internal ASN.1 encoder error");
 
-           ret = krb5_generate_random_keyblock(context, sessionetype, 
+           ret = krb5_generate_random_keyblock(context, sessionetype,
                                                sessionkey);
            if (ret) {
                free_PA_PK_AS_REP(&rep);
@@ -1368,7 +1368,7 @@ _kdc_pk_mk_pa_reply(krb5_context context,
                krb5_abortx(context, "Internal ASN.1 encoder error");
 
            /* XXX KRB-FX-CF2 */
-           ret = krb5_generate_random_keyblock(context, sessionetype, 
+           ret = krb5_generate_random_keyblock(context, sessionetype,
                                                sessionkey);
            if (ret) {
                free_PA_PK_AS_REP(&rep);
@@ -1463,7 +1463,7 @@ _kdc_pk_mk_pa_reply(krb5_context context,
        if (len != size)
            krb5_abortx(context, "Internal ASN.1 encoder error");
 
-       ret = krb5_generate_random_keyblock(context, sessionetype, 
+       ret = krb5_generate_random_keyblock(context, sessionetype,
                                            sessionkey);
        if (ret) {
            free(buf);
@@ -1507,7 +1507,7 @@ _kdc_pk_mk_pa_reply(krb5_context context,
                        "PK-INIT failed to stat ocsp data %d", ret);
                goto out_ocsp;
            }
-       
+
            ret = krb5_data_alloc(&ocsp.data, sb.st_size);
            if (ret) {
                close(fd);
@@ -1680,12 +1680,12 @@ match_ms_upn_san(krb5_context context,
     if (clientdb->hdb_check_pkinit_ms_upn_match) {
        ret = clientdb->hdb_check_pkinit_ms_upn_match(context, clientdb, client, principal);
     } else {
-           
+
        /*
         * This is very wrong, but will do for a fallback
         */
        strupr(principal->realm);
-           
+
        if (krb5_principal_compare(context, principal, client->entry.principal) == FALSE)
            ret = KRB5_KDC_ERR_CLIENT_NAME_MISMATCH;
     }
@@ -1739,7 +1739,7 @@ _kdc_pk_check_client(krb5_context context,
     if (ret == 0 && pc) {
        hx509_cert cert;
        size_t j;
-       
+
        for (j = 0; j < pc->len; j++) {
            ret = hx509_cert_init_data(context->hx509ctx,
                                       pc->val[j].cert.data,
@@ -1771,7 +1771,7 @@ _kdc_pk_check_client(krb5_context context,
        ret = match_ms_upn_san(context, config,
                               context->hx509ctx,
                               cp->cert,
-                              clientdb, 
+                              clientdb,
                               client);
        if (ret == 0) {
            kdc_log(context, config, 5,
@@ -1938,7 +1938,7 @@ load_mappings(krb5_context context, const char *fn)
 
     fclose(f);
 }
-               
+
 /*
  *
  */
@@ -1983,17 +1983,17 @@ krb5_kdc_pk_initialize(krb5_context context,
     {
        hx509_query *q;
        hx509_cert cert;
-       
+
        ret = hx509_query_alloc(context->hx509ctx, &q);
        if (ret) {
            krb5_warnx(context, "PKINIT: out of memory");
            return ENOMEM;
        }
-       
+
        hx509_query_match_option(q, HX509_QUERY_OPTION_PRIVATE_KEY);
        if (config->pkinit_kdc_friendly_name)
            hx509_query_match_friendly_name(q, config->pkinit_kdc_friendly_name);
-       
+
        ret = hx509_certs_find(context->hx509ctx,
                               kdc_identity->certs,
                               q,
index 42266003312e5d214d0d77b556bf46214af69cc8..6f36915800bb9ee3245828334c8514f14e915e94 100644 (file)
@@ -47,7 +47,7 @@ krb5_kdc_update_time(struct timeval *tv)
        _kdc_now = *tv;
 }
 
-static krb5_error_code 
+static krb5_error_code
 kdc_as_req(krb5_context context,
           krb5_kdc_configuration *config,
           krb5_data *req_buffer,
@@ -74,7 +74,7 @@ kdc_as_req(krb5_context context,
 }
 
 
-static krb5_error_code 
+static krb5_error_code
 kdc_tgs_req(krb5_context context,
            krb5_kdc_configuration *config,
            krb5_data *req_buffer,
@@ -91,10 +91,10 @@ kdc_tgs_req(krb5_context context,
     ret = decode_TGS_REQ(req_buffer->data, req_buffer->length, &req, &len);
     if (ret)
        return ret;
-    
+
     *claim = 1;
 
-    ret = _kdc_tgs_rep(context, config, &req, reply, 
+    ret = _kdc_tgs_rep(context, config, &req, reply,
                       from, addr, datagram_reply);
     free_TGS_REQ(&req);
     return ret;
@@ -102,7 +102,7 @@ kdc_tgs_req(krb5_context context,
 
 #ifdef DIGEST
 
-static krb5_error_code 
+static krb5_error_code
 kdc_digest(krb5_context context,
           krb5_kdc_configuration *config,
           krb5_data *req_buffer,
@@ -132,7 +132,7 @@ kdc_digest(krb5_context context,
 
 #ifdef KX509
 
-static krb5_error_code 
+static krb5_error_code
 kdc_kx509(krb5_context context,
          krb5_kdc_configuration *config,
          krb5_data *req_buffer,
@@ -193,7 +193,7 @@ krb5_kdc_process_request(krb5_context context,
     unsigned int i;
     krb5_data req_buffer;
     int claim = 0;
-    
+
     req_buffer.data = buf;
     req_buffer.length = len;
 
@@ -232,7 +232,7 @@ krb5_kdc_process_krb5_request(krb5_context context,
     unsigned int i;
     krb5_data req_buffer;
     int claim = 0;
-    
+
     req_buffer.data = buf;
     req_buffer.length = len;
 
@@ -245,7 +245,7 @@ krb5_kdc_process_krb5_request(krb5_context context,
        if (claim)
            return ret;
     }
-                       
+
     return -1;
 }
 
index 2f52ca1745e8117940d0b5833d44b138c7df875b..d22e083f7d5e3727cfb41a7d397d7e777f0babf6 100644 (file)
@@ -48,7 +48,7 @@ add_db(krb5_context context, struct krb5_kdc_configuration *c,
        return ENOMEM;
     }
     c->db = ptr;
-    
+
     ret = hdb_create(context, &c->db[c->num_db], conf);
     if(ret)
        return ret;
@@ -78,13 +78,13 @@ krb5_kdc_set_dbinfo(krb5_context context, struct krb5_kdc_configuration *c)
 
     d = NULL;
     while ((d = hdb_dbinfo_get_next(info, d)) != NULL) {
-       
+
        ret = add_db(context, c,
                     hdb_dbinfo_get_dbname(context, d),
                     hdb_dbinfo_get_mkey_file(context, d));
        if (ret)
            goto out;
-       
+
        kdc_log(context, c, 0, "label: %s",
                hdb_dbinfo_get_label(context, d));
        kdc_log(context, c, 0, "\tdbname: %s",
index f51a061669d0124008206ff22e628f05d5cec9ac..1b38d3322827a6fd47064525fbb1924769684a11 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2000 - 2002 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd March  4, 2000
index c4803e414f7b7ec2ceb8985cb4f87da99e277e44..6f24c27a29a02a94baa5a6853adbe7fa9eed5880 100644 (file)
@@ -161,7 +161,7 @@ main(int argc, char **argv)
            return 1;
        password = buf;
     }
-       
+
     if(version5){
        krb5_parse_name(context, principal, &princ);
        krb5_get_pw_salt(context, princ, &salt);
index 6efbeee9dd05daf0f650b70c3cbfb9eaaf7c1870..7e6daa679f30c4eb77c0597dbd95eadef7f519d0 100644 (file)
@@ -55,7 +55,7 @@ krb5_kdc_windc_init(krb5_context context)
        windcft = _krb5_plugin_get_symbol(e);
        if (windcft->minor_version < KRB5_WINDC_PLUGIN_MINOR)
            continue;
-       
+
        (*windcft->init)(context, &windcctx);
        break;
     }
@@ -116,9 +116,9 @@ _kdc_check_access(krb5_context context,
                                   server_ex, server_name,
                                   req->msg_type == krb_as_req);
 
-    return (windcft->client_access)(windcctx, 
-                                   context, config, 
-                                   client_ex, client_name, 
-                                   server_ex, server_name, 
+    return (windcft->client_access)(windcctx,
+                                   context, config,
+                                   client_ex, client_name,
+                                   server_ex, server_name,
                                    req, e_data);
 }
index 037fc8cbdabd7edefd8f7e5688b12318e27d628a..613c571ae2de0f0b4d6d580fef31aa9cef0050a8 100644 (file)
@@ -65,10 +65,10 @@ typedef krb5_error_code
 
 typedef krb5_error_code
 (*krb5plugin_windc_client_access)(
-       void *, krb5_context, 
+       void *, krb5_context,
        krb5_kdc_configuration *config,
-       hdb_entry_ex *, const char *, 
-       hdb_entry_ex *, const char *, 
+       hdb_entry_ex *, const char *,
+       hdb_entry_ex *, const char *,
        KDC_REQ *, krb5_data *);
 
 
index 7203989b79508850bd5d42bf3eeca9bff1557e2f..679b38924f3208a34a3c59f9c867116840585d60 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1997, 2000 - 2005 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd January  5, 2005
index 4a4bcf124cc3358bbc1e027c662fda67fd154c73..e681a359d464172e39982e4972fa12e2764b354b 100644 (file)
@@ -198,9 +198,9 @@ main (int argc, char **argv)
        default:
            krb5_err(context, 1, ret, "krb5_get_init_creds");
        }
-       
+
        krb5_get_init_creds_opt_free(context, opt);
-       
+
        ret = krb5_cc_initialize(context, id, admin_principal);
        krb5_free_principal(context, admin_principal);
        if (ret)
@@ -209,7 +209,7 @@ main (int argc, char **argv)
        ret = krb5_cc_store_cred(context, id, &cred);
        if (ret)
            krb5_err(context, 1, ret, "krb5_cc_store_cred");
-       
+
        krb5_free_cred_contents (context, &cred);
     }
 
index b4adfedb2bedf60d5e5ba890760027c2346c87e3..d68aca256316b1d0a6ef22a7d442c97c750e7ed7 100644 (file)
@@ -1,33 +1,33 @@
 .\" Copyright (c) 1997, 2000 - 2005 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
 .Dd April 19, 1999
 .Dt KPASSWDD 8
index 884cc7b6832119b7eff6193e6df558239c08adc5..cc1ac25f30d325ccb68302df09c2cc5e809c8f64 100644 (file)
@@ -272,7 +272,7 @@ change (krb5_auth_context auth_context,
                        "malformed ChangePasswdData");
            return;
        }
-       
+
 
        ret = krb5_copy_data(context, &chpw.newpasswd, &pwd_data);
        if (ret) {
@@ -656,7 +656,7 @@ doit (krb5_keytab keytab, int port)
        krb5_socklen_t sa_size = sizeof(__ss);
 
        krb5_addr2sockaddr (context, &addrs.val[i], sa, &sa_size, port);
-       
+
        sockets[i] = socket (sa->sa_family, SOCK_DGRAM, 0);
        if (sockets[i] < 0)
            krb5_err (context, 1, errno, "socket");
index bd98135d3f6faa99d8aefadc6266d4a565861eb8..4fd55c9d4d6b97c7fb4af483f8b5760f75da587c 100644 (file)
@@ -62,7 +62,7 @@ int main(int argc, char *argv[])
     return 0;
 }
 
-static void do_kcpytkt (int count, char *names[], 
+static void do_kcpytkt (int count, char *names[],
                         char *fromccachestr, char *etypestr, int flags)
 {
     krb5_context context;
@@ -130,7 +130,7 @@ static void do_kcpytkt (int count, char *names[],
        in_creds.session.keytype = etype;
 
         ret = krb5_cc_retrieve_cred(context, fromccache, retflags,
-                                    &in_creds, &out_creds);  
+                                    &in_creds, &out_creds);
        if (ret) {
             krb5_warn(context, ret, "Can't retrieve credentials for %s", princ);
 
index 48855529d3a6b9685107fad0a567210dd9125804..1b4f9b6556df68b02b381b97e4f1e01e17bbf774 100644 (file)
@@ -62,7 +62,7 @@ int main(int argc, char *argv[])
     return 0;
 }
 
-static void do_kdeltkt (int count, char *names[], 
+static void do_kdeltkt (int count, char *names[],
                         char *ccachestr, char *etypestr, int flags)
 {
     krb5_context context;
@@ -125,10 +125,10 @@ static void do_kdeltkt (int count, char *names[],
        in_creds.session.keytype = etype;
 
         ret = krb5_cc_retrieve_cred(context, ccache, retflags,
-                                    &in_creds, &out_creds);  
+                                    &in_creds, &out_creds);
        if (ret) {
             krb5_warn(context, ret, "Can't retrieve credentials for %s", princ);
-            
+
            krb5_free_unparsed_name(context, princ);
 
            errors++;
index 765a3561fbeb0206b67f80095a1e623b19f29cb4..3c936652f10aaeb56f27f9cae45442aa8ec7eec3 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1997, 1999, 2001, 2004, 2006 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd April 27, 2006
index fae5e5ae83bd02448516a0b0a96bb9932477738b..1823bf56ca48ab780d29f4be950f41ee84b420a2 100644 (file)
@@ -107,7 +107,7 @@ main (int argc, char **argv)
            krb5_err(context, 1, ret, "krb5_cccol_cursor_new");
 
        while (krb5_cccol_cursor_next (context, cursor, &ccache) == 0 && ccache != NULL) {
-           
+
            ret = krb5_cc_destroy (context, ccache);
            if (ret) {
                krb5_warn(context, ret, "krb5_cc_destroy");
@@ -132,25 +132,25 @@ main (int argc, char **argv)
        if (ret == 0) {
            if (credential) {
                krb5_creds mcred;
-               
+
                krb5_cc_clear_mcred(&mcred);
-               
+
                ret = krb5_parse_name(context, credential, &mcred.server);
                if (ret)
                    krb5_err(context, 1, ret,
                             "Can't parse principal %s", credential);
-               
+
                ret = krb5_cc_remove_cred(context, ccache, 0, &mcred);
                if (ret)
                    krb5_err(context, 1, ret,
                             "Failed to remove principal %s", credential);
-               
+
                krb5_cc_close(context, ccache);
                krb5_free_principal(context, mcred.server);
                krb5_free_context(context);
                return 0;
            }
-           
+
            ret = krb5_cc_destroy (context, ccache);
            if (ret) {
                krb5_warn(context, ret, "krb5_cc_destroy");
index a4a87b06b35c60a084d37e59d2502abd246abed9..c792241416d10f0a858ab2977ed82dec102d71ef 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2008 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd September 25, 2008
index e833b61adee7d35593523eee83f609699edecd7d..f15b661a0dce144742ab8da57be2ce1a59ca0ede 100644 (file)
@@ -294,7 +294,7 @@ client_mschapv2(const void *server_nonce, size_t snoncelen,
     for (i = 0; i < len; i++) {
        EVP_DigestUpdate(hctx, &password[i], 1);
        EVP_DigestUpdate(hctx, &password[len], 1);
-    }  
+    }
     EVP_DigestFinal_ex(hctx, hmd, NULL);
 
 
@@ -384,7 +384,7 @@ digest_client_request(struct digest_client_request_options *opt,
        client_nonce = malloc(cnoncelen);
        if (client_nonce == NULL)
            errx(1, "client_nonce");
-       
+
        cnoncelen = hex_decode(opt->client_nonce_string,
                               client_nonce, cnoncelen);
        if (cnoncelen <= 0)
@@ -474,13 +474,13 @@ ntlm_server_init(struct ntlm_server_init_options *opt,
     krb5_ntlm_init_get_targetname(context, ntlm, &type2.targetname);
     type2.targetinfo.data = zero2;
     type2.targetinfo.length = 2;
-       
+
     ret = heim_ntlm_encode_type2(&type2, &data);
     if (ret)
        krb5_errx(context, 1, "heim_ntlm_encode_type2");
 
     free(type2.targetname);
-       
+
     /*
      *
      */
index 7c3228b40beeb2cf87dd715001188036340776be..5c1b212e2be3ca8cbf4da2a56f6b12dd45dd5d63 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1999, 2001 - 2002 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd March 12, 2004
index d912de74c65ad35859dcfab07a6f3a21568506b6..7742eca4087dc601fa752ce5eaad12c88c2873c4 100644 (file)
@@ -130,7 +130,7 @@ main(int argc, char **argv)
 
        ret = krb5_string_to_enctype(context, etype_str, &enctype);
        if (ret)
-           krb5_errx (context, 1, N_("unrecognized enctype: %s", ""), 
+           krb5_errx (context, 1, N_("unrecognized enctype: %s", ""),
                       etype_str);
        krb5_get_creds_opt_set_enctype(context, opt, enctype);
     }
index a91e0d1ad74f743529f7ea3bce278cea45fda698..df83b5ded159bf8db65cc68d6844639bc3d695eb 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2002 - 2007 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd September 18, 2006
index 42179acc7420c3e819b4cd944add85717a03eae5..af1e9f43035df91b8cae835fa4872ababc51bd9c 100644 (file)
@@ -85,7 +85,7 @@ encode_ticket (krb5_context context,
     copy_PrincipalName(&cred->client->name, &et.cname);
     {
        krb5_data empty_string;
-       
+
        krb5_data_zero(&empty_string);
        et.transited.tr_type = DOMAIN_X500_COMPRESS;
        et.transited.contents = empty_string;
index c2751ed893bea544fa6da705e7801d0819f15d0d..56ad66dd40f46d108b38701314875fdcbbb86c5d 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1998 - 2003, 2006 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd April 25, 2006
index 1342ebcbc0cb443133729e33046c386d529ef4c9..e872fef9bee035ab82da930cd93c5dcab690e1fc 100644 (file)
@@ -466,7 +466,7 @@ get_new_tickets(krb5_context context,
        renew = parse_time (renewstr, "s");
        if (renew < 0)
            errx (1, "unparsable time: %s", renewstr);
-       
+
        krb5_get_init_creds_opt_set_renew_life (opt, renew);
     }
 
@@ -532,11 +532,11 @@ get_new_tickets(krb5_context context,
 
        if (passwd[0] == '\0') {
            char *p, *prompt;
-       
+
            krb5_unparse_name (context, principal, &p);
            asprintf (&prompt, N_("%s's Password: ", ""), p);
            free (p);
-       
+
            if (UI_UTIL_read_pw_string(passwd, sizeof(passwd)-1, prompt, 0)){
                memset(passwd, 0, sizeof(passwd));
                exit(1);
@@ -544,7 +544,7 @@ get_new_tickets(krb5_context context,
            free (prompt);
        }
 
-       
+
        ret = krb5_get_init_creds_password (context,
                                            &cred,
                                            principal,
@@ -592,7 +592,7 @@ get_new_tickets(krb5_context context,
            char life[64];
            unparse_time_approx(cred.times.renew_till - cred.times.starttime,
                                life, sizeof(life));
-           krb5_warnx(context, 
+           krb5_warnx(context,
                       N_("NOTICE: ticket renewable lifetime is %s", ""),
                       life);
        }
@@ -773,7 +773,7 @@ main (int argc, char **argv)
     } else if (anonymous_flag) {
 
        ret = krb5_make_principal(context, &principal, argv[0],
-                                 KRB5_WELLKNOWN_NAME, KRB5_ANON_NAME, 
+                                 KRB5_WELLKNOWN_NAME, KRB5_ANON_NAME,
                                  NULL);
        if (ret)
            krb5_err(context, 1, ret, "krb5_make_principal");
@@ -825,7 +825,7 @@ main (int argc, char **argv)
                if (ret)
                    krb5_err (context, 1, ret, N_("resolving credentials cache", ""));
 
-               /* 
+               /*
                 * Check if the type support switching, and we do,
                 * then do that instead over overwriting the current
                 * default credential
@@ -904,7 +904,7 @@ main (int argc, char **argv)
            krb5_warnx(context, N_("permission denied: %s", ""), argv[1]);
        else if(ret == EX_NOTFOUND)
            krb5_warnx(context, N_("command not found: %s", ""), argv[1]);
-       
+
        krb5_cc_destroy(context, ccache);
 #ifndef NO_AFS
        if(k_hasafs())
index f260d620dd84b1ae76af9d67a152d09b2c17d902..8ebad7d1bac870351f234e3611697d8609ee645f 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2000 - 2005 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd October  6, 2005
index 986fd1a705acbd49f7fe556f94b3f4e4650ddd39..895a749377655529b61fcc3af9f7f8586b97426b 100644 (file)
@@ -144,18 +144,18 @@ print_cred_verbose(krb5_context context, krb5_creds *cred)
        exit(1);
     printf(N_("Server: %s\n", ""), str);
     free (str);
-    
+
     ret = krb5_unparse_name(context, cred->client, &str);
     if(ret)
        exit(1);
     printf(N_("Client: %s\n", ""), str);
     free (str);
-    
+
     {
        Ticket t;
        size_t len;
        char *s;
-       
+
        decode_Ticket(cred->ticket.data, cred->ticket.length, &t, &len);
        ret = krb5_enctype_to_string(context, t.enc_part.etype, &s);
        printf(N_("Ticket etype: ", ""));
@@ -196,7 +196,7 @@ print_cred_verbose(krb5_context context, krb5_creds *cred)
               printable_time_long(cred->times.renew_till));
     {
        char flags[1024];
-       unparse_flags(TicketFlags2int(cred->flags.b), 
+       unparse_flags(TicketFlags2int(cred->flags.b),
                      asn1_TicketFlags_units(),
                      flags, sizeof(flags));
        printf(N_("Ticket flags: %s\n", ""), flags);
@@ -209,7 +209,7 @@ print_cred_verbose(krb5_context context, krb5_creds *cred)
            if(j) printf(", ");
            ret = krb5_print_address(&cred->addresses.val[j],
                                     buf, sizeof(buf), &len);
-       
+
            if(ret == 0)
                printf("%s", buf);
        }
@@ -277,7 +277,7 @@ print_tickets (krb5_context context,
            sig = -1;
            val = -val;
        }
-       
+
        unparse_time (val, buf, sizeof(buf));
 
        printf ("%17s: %s%s\n", N_("KDC time offset", ""),
@@ -576,7 +576,7 @@ klist(struct klist_options *opt, int argc, char **argv)
 
     int do_verbose =
        opt->verbose_flag ||
-       opt->a_flag || 
+       opt->a_flag ||
        opt->n_flag;
     int do_test =
        opt->test_flag ||
index f5cbcad6eaa71ce01661bb5330489f3715955195..e98d0e2bf5ea4b59a43b0b1032b740e5fb1f66a3 100644 (file)
@@ -1,33 +1,33 @@
 .\" Copyright (c) 2009 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
 .Dd Augusti 25, 2009
 .Dt KSWITCH SECTION
index b8ea7b9510636a0a49581384e263c7d729787906..974af85ac380327ff318d5304a568d94d9cccbad 100644 (file)
@@ -86,7 +86,7 @@ kswitch(struct kswitch_options *opt, int argc, char **argv)
        while (krb5_cc_cache_next(kcc_context, cursor, &id) == 0) {
            krb5_principal p;
            char num[10];
-       
+
            ret = krb5_cc_get_principal(kcc_context, id, &p);
            if (ret)
                continue;
@@ -98,7 +98,7 @@ kswitch(struct kswitch_options *opt, int argc, char **argv)
            rtbl_add_column_entry(ct, "", num);
            rtbl_add_column_entry(ct, "Principal", name);
            free(name);
-           
+
            ids = erealloc(ids, (len + 1) * sizeof(ids[0]));
            ids[len] = id;
            len++;
@@ -115,7 +115,7 @@ kswitch(struct kswitch_options *opt, int argc, char **argv)
                krb5_errx(kcc_context, 1, "Cache number '%s' is invalid", name);
            if (i > len)
                krb5_errx(kcc_context, 1, "Cache number '%s' is too large", name);
-           
+
            id = ids[i - 1];
            ids[i - 1] = NULL;
        } else
@@ -147,15 +147,15 @@ kswitch(struct kswitch_options *opt, int argc, char **argv)
        ops = krb5_cc_get_prefix_ops(kcc_context, opt->type_string);
        if (ops == NULL)
            krb5_err(kcc_context, 1, 0, "krb5_cc_get_prefix_ops");
-       
+
        asprintf(&str, "%s:%s", ops->prefix, opt->cache_string);
        if (str == NULL)
            krb5_errx(kcc_context, 1, N_("out of memory", ""));
-       
+
        ret = krb5_cc_resolve(kcc_context, str, &id);
        if (ret)
            krb5_err(kcc_context, 1, ret, "krb5_cc_resolve: %s", str);
-       
+
        free(str);
     } else {
        krb5_errx(kcc_context, 1, "missing option for kswitch");
index 932f13cccdb5048508df7255efb54ce7701e62b3..64bd54a2bea8989c2340b6916dd3720e69480169 100644 (file)
@@ -101,7 +101,7 @@ main(int argc, char **argv)
        ret = krb5_get_default_principal(context, &principal);
        if (ret)
            krb5_err(context, 1, ret, "krb5_get_default_principal");
-                    
+
     }
 
     ret = krb5_get_init_creds_password (context,
index f66ab2bd58c9f05fe2997be875bd6b969717d135..7ddf2a20861867a15a006b0606cfcc090ce86359 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (C) 1998 by the FundsXpress, INC.
- * 
+ *
  * All rights reserved.
- * 
+ *
  * Export of this software from the United States of America may require
  * a specific license from the United States Government.  It is the
  * responsibility of any person or organization contemplating export to
  * obtain such a license before exporting.
- * 
+ *
  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
  * distribute this software and its documentation for any purpose and
  * without fee is hereby granted, provided that the above copyright
@@ -18,7 +18,7 @@
  * permission.  FundsXpress makes no representations about the suitability of
  * this software for any purpose.  It is provided "as is" without express
  * or implied warranty.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
@@ -35,7 +35,7 @@ static int  version_flag = 0;
 static int  help_flag = 0;
 static int  quiet_flag = 0;
 
-static void do_v5_kvno (int argc, char *argv[], 
+static void do_v5_kvno (int argc, char *argv[],
                         char *ccache_name, char *etype_str, char *keytab_name,
                        char *sname);
 
@@ -93,7 +93,7 @@ int main(int argc, char *argv[])
     return 0;
 }
 
-static void do_v5_kvno (int count, char *names[], 
+static void do_v5_kvno (int count, char *names[],
                         char * ccache_name, char *etype_str, char *keytab_name,
                        char *sname)
 {
index 9c8793e0ccfcde9af6d75c01072165a2e51ce69e..4083ebc23dd65031911ac613dafa03fe95066e74 100644 (file)
@@ -75,5 +75,5 @@ typedef struct heim_octet_string heim_any_set;
 #define ASN1EXP
 #define ASN1CALL
 #endif
-         
+
 #endif
index 917b8cd5f51db8a202cb1cc5ef2d48907c665a09..84446e0d8b98ed5a1f7ddf637c9101d9b3a6caac 100644 (file)
@@ -183,7 +183,7 @@ loop (unsigned char *buf, size_t len, int indent)
                    if (ret || sz > str.length ||
                        type != CONS || tag != UT_Sequence)
                        goto just_an_octet_string;
-                   
+
                    printf("{\n");
                    loop (str.data, str.length, indent + 2);
                    for (i = 0; i < indent; ++i)
@@ -262,7 +262,7 @@ loop (unsigned char *buf, size_t len, int indent)
                ret = der_get_integer (buf, length, &num, NULL);
                if (ret)
                    errx (1, "der_get_enum: %s", error_message (ret));
-       
+
                printf("%u\n", num);
                break;
            }
index a7a8f31827a653ca8d86e24a155a0e543af61b35..e3bea6ce0ac9241823606f47598c1db573799148 100644 (file)
@@ -365,7 +365,7 @@ range               : '(' Value RANGE Value ')'
                    $$->max = $4->u.integervalue;
                }
                | '(' Value RANGE kw_MAX ')'
-               {       
+               {
                    if($2->type != integervalue)
                        lex_error_message("Non-integer in first part of range");
                    $$ = ecalloc(1, sizeof(*$$));
@@ -373,7 +373,7 @@ range               : '(' Value RANGE Value ')'
                    $$->max = $2->u.integervalue - 1;
                }
                | '(' kw_MIN RANGE Value ')'
-               {       
+               {
                    if($4->type != integervalue)
                        lex_error_message("Non-integer in second part of range");
                    $$ = ecalloc(1, sizeof(*$$));
index 1848e4dbd2450fc92eba809f5058f8b5ed3985b7..ac96b91b18ea9bee67df35f145eb8f72210876ce 100644 (file)
@@ -394,7 +394,7 @@ generic_decode_fail (const struct test_case *tests,
            sz = 4096;
            bytes = NULL;
        }
-       
+
        buf = map_alloc(OVERRUN, bytes, sz, &buf_map);
 
        if (tests[i].byte_len == -1)
index 84aee4cce06221b629db1a6eea0d38f11f97dbd0..468ccb2d040ccc0afbc444afef88c3484a6d4013 100644 (file)
@@ -53,14 +53,14 @@ der_heim_octet_string_cmp(const heim_octet_string *p,
 }
 
 int
-der_printable_string_cmp(const heim_printable_string *p, 
+der_printable_string_cmp(const heim_printable_string *p,
                         const heim_printable_string *q)
 {
     return der_heim_octet_string_cmp(p, q);
 }
 
 int
-der_ia5_string_cmp(const heim_ia5_string *p, 
+der_ia5_string_cmp(const heim_ia5_string *p,
                   const heim_ia5_string *q)
 {
     return der_heim_octet_string_cmp(p, q);
index 95780a78987f26e9e132e9705b330d4e2c353a74..a18797ec259433a013cfe58eda5573e4edf2185f 100644 (file)
@@ -71,13 +71,13 @@ decode_heim_any(const unsigned char *p, size_t len,
        if (len < length + len_len + l)
            return ASN1_OVERFLOW;
     }
-   
+
     data->data = malloc(length + len_len + l);
     if (data->data == NULL)
        return ENOMEM;
     data->length = length + len_len + l;
     memcpy(data->data, p, length + len_len + l);
-   
+
     if (size)
        *size = length + len_len + l;
 
index d59f3bfa4755de9f790c231c7518dd2660e02fd8..2194b329ce1d76c993489efd4421fcfbfdbbd0a2 100644 (file)
@@ -761,7 +761,7 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ
            fprintf (headerfile, "struct %s {\n", newbasename);
            ASN1_TAILQ_FOREACH(m, t->members, members) {
                char *n = NULL;
-       
+
                /* pad unused */
                while (pos < m->val) {
                    if (asprintf (&n, "_unused%d:1", pos) < 0 || n == NULL)
@@ -1021,7 +1021,7 @@ generate_type (const Symbol *s)
        h = privheaderfile;
        exp = "";
     }
-   
+
     fprintf (h,
             "%sint    ASN1CALL "
             "decode_%s(const unsigned char *, size_t, %s *, size_t *);\n",
@@ -1044,7 +1044,7 @@ generate_type (const Symbol *s)
             "%svoid   ASN1CALL free_%s  (%s *);\n",
             exp,
             s->gen_name, s->gen_name);
-   
+
     fprintf(h, "\n\n");
 
     if (!one_code_file) {
index 7c88751c32b28388dc9196a87299d3d93401748c..b9cae7533b17a13c471266230d71956ebcfaf28d 100644 (file)
@@ -179,12 +179,12 @@ void
 generate_type_free (const Symbol *s)
 {
     int preserve = preserve_type(s->name) ? TRUE : FALSE;
-   
+
     fprintf (codefile, "void ASN1CALL\n"
             "free_%s(%s *data)\n"
             "{\n",
             s->gen_name, s->gen_name);
-   
+
     free_type ("data", s->type, preserve);
     fprintf (codefile, "}\n\n");
 }
index a9c12de68198e27f1049b25c86f1764c47b65e27..edd68e12238009d796c30f2fa77667a507b4291b 100644 (file)
@@ -342,7 +342,7 @@ tlist_cmp(const struct tlist *tl, const struct tlist *ql)
 
     ret = strcmp(tl->header, ql->header);
     if (ret) return ret;
-       
+
     q = ASN1_TAILQ_FIRST(&ql->template);
     ASN1_TAILQ_FOREACH(t, &tl->template, members) {
        if (q == NULL) return 1;
@@ -353,7 +353,7 @@ tlist_cmp(const struct tlist *tl, const struct tlist *ql)
        } else {
            ret = strcmp(t->tt, q->tt);
            if (ret) return ret;
-           
+
            ret = strcmp(t->offset, q->offset);
            if (ret) return ret;
 
@@ -479,7 +479,7 @@ template_members(struct templatehead *temp, const char *basetype, const char *na
                     optional ? "|A1_FLAG_OPTIONAL" : "",
                     poffset, t->symbol->gen_name);
        } else {
-           add_line_pointer(temp, t->symbol->gen_name, poffset, 
+           add_line_pointer(temp, t->symbol->gen_name, poffset,
                             "A1_OP_TYPE %s", optional ? "|A1_FLAG_OPTIONAL" : "");
        }
        break;
@@ -499,7 +499,7 @@ template_members(struct templatehead *temp, const char *basetype, const char *na
        else
            errx(1, "%s: unsupported range %d -> %d",
                 name, t->range->min, t->range->max);
-          
+
        add_line(temp, "{ A1_PARSE_T(A1T_%s), %s, NULL }", itype, poffset);
        break;
     }
@@ -591,7 +591,7 @@ template_members(struct templatehead *temp, const char *basetype, const char *na
 
        ASN1_TAILQ_FOREACH(m, t->members, members) {
            char *newbasename = NULL;
-           
+
            if (m->ellipsis)
                continue;
 
@@ -699,7 +699,7 @@ template_members(struct templatehead *temp, const char *basetype, const char *na
            char *elname = NULL;
            char *newbasename = NULL;
            int subtype_is_struct;
-           
+
            if (m->ellipsis) {
                ellipsis = 1;
                continue;
index dece0961646cc79e83e0dd03f6c9d7daca11c37c..2d32020266c8bce6b6762374f5b276de61c89be3 100644 (file)
@@ -216,7 +216,7 @@ WITH                        { return kw_WITH; }
                            char *p = buf;
                            int f = 0;
                            int skip_ws = 0;
-               
+
                            while((c = input()) != EOF) {
                                if(isspace(c) && skip_ws) {
                                    if(c == '\n')
@@ -224,7 +224,7 @@ WITH                        { return kw_WITH; }
                                    continue;
                                }
                                skip_ws = 0;
-                       
+
                                if(c == '"') {
                                    if(f) {
                                        *p++ = '"';
index a99e69d0f916f9a6c39ecd775e833157eea2a37e..f22dc8792c276bd2c5c74aa8c6c800e980dc7637 100644 (file)
@@ -202,6 +202,6 @@ main(int argc, char **argv)
            free(arg[i]);
        free(arg);
     }
-   
+
     return 0;
 }
index f689b6549ab19954145f52d31c011f78c9a09a83..3e0b6932357e98ea82e76182d36467c0bdffaf3b 100644 (file)
@@ -224,7 +224,7 @@ _asn1_decode(const struct asn1_template *t, unsigned flags,
             * Only allow indefinite encoding for OCTET STRING and BER
             * for now. Should handle BIT STRING too.
             */
+
            if (dertype != A1_TAG_TYPE(t->tt) && (flags & A1_PF_ALLOW_BER)) {
                const struct asn1_template *subtype = t->ptr;
                subtype++; /* skip header */
@@ -293,7 +293,7 @@ _asn1_decode(const struct asn1_template *t, unsigned flags,
            size_t newsize;
            void *el = DPO(data, t->offset);
 
-           /* 
+           /*
             * INDEFINITE primitive types are one element after the
             * same type but non-INDEFINITE version.
            */
@@ -377,7 +377,7 @@ _asn1_decode(const struct asn1_template *t, unsigned flags,
            unsigned int *element = DPO(data, choice->offset);
            size_t datalen;
            unsigned int i;
-          
+
            for (i = 1; i < A1_HEADER_LEN(choice) + 1; i++) {
                /* should match first tag instead, store it in choice.tt */
                ret = _asn1_decode(choice[i].ptr, 0, p, len,
@@ -395,7 +395,7 @@ _asn1_decode(const struct asn1_template *t, unsigned flags,
                    return ASN1_BAD_ID;
 
                *element = 0;
-               ret = der_get_octet_string(p, len, 
+               ret = der_get_octet_string(p, len,
                                           DPO(data, choice->tt), &datalen);
                if (ret)
                    return ret;
@@ -420,7 +420,7 @@ _asn1_decode(const struct asn1_template *t, unsigned flags,
     if (size)
        *size = oldlen;
 
-    /* 
+    /*
      * saved the raw bits if asked for it, useful for signature
      * verification.
      */
@@ -598,7 +598,7 @@ _asn1_encode(const struct asn1_template *t, unsigned char *p, size_t len, const
                break;
 
            elptr += ellen * (el->len - 1);
-          
+
            for (i = 0; i < el->len; i++) {
                ret = _asn1_encode(t->ptr, p, len,
                                   elptr,
@@ -645,7 +645,7 @@ _asn1_encode(const struct asn1_template *t, unsigned char *p, size_t len, const
                    return ASN1_OVERFLOW;
                *p-- = c; len--;
            }
-          
+
            if (len < 1)
                return ASN1_OVERFLOW;
            if (rfc1510 || bitset == 0)
@@ -677,7 +677,7 @@ _asn1_encode(const struct asn1_template *t, unsigned char *p, size_t len, const
                ret = _asn1_encode(choice->ptr, p, len, el, &datalen);
                if (ret)
                    return ret;
-           }      
+           }
            len -= datalen; p -= datalen;
 
            break;
@@ -1063,7 +1063,7 @@ _asn1_copy(const struct asn1_template *t, const void *from, void *to)
            const struct asn1_template *choice = t->ptr;
            const unsigned int *felement = DPOC(from, choice->offset);
            unsigned int *telement = DPO(to, choice->offset);
-          
+
            if (*felement > A1_HEADER_LEN(choice))
                return ASN1_PARSE_ERROR;
 
index cd28c5c83aeb37ad3617110805b59d164e053f32..6dc85d12773065a180d79bdcbb059bbae50aac67 100644 (file)
@@ -98,7 +98,7 @@ _der_gmtime(time_t t, struct tm *tm)
     tm->tm_min = (secday % 3600) / 60;
     tm->tm_hour = secday / 3600;
 
-    /* 
+    /*
      * Refuse to calculate time ~ 2000 years into the future, this is
      * not possible for systems where time_t is a int32_t, however,
      * when time_t is a int64_t, that can happen.
index 4072a588f34af5812e61867e49a5c5845e85b521..b71203aa11b5a7ff22e7960f86301d88601a5965 100644 (file)
@@ -99,7 +99,7 @@ where
 .Em name
 is the name of the error table.
 .Pp
-If a thread-safe version of the library is needed 
+If a thread-safe version of the library is needed
 .Fn initialize_<name>_error_table_r
 that internally calls
 .Fn initialize_error_table_r
index 11beaeba4b840e0f18365fc5bbcaf2f6cbf33d0d..c72abdecc863033f6db48a4338c1218e9dc5a62d 100644 (file)
@@ -93,7 +93,7 @@ generate_c(void)
            fprintf(c_file, "\t/* %03d */ \"Reserved %s error (%d)\",\n",
                    n, name, n);
            n++;
-       
+
        }
        fprintf(c_file, "\t/* %03d */ N_(\"%s\"),\n",
                ec->number, ec->string);
@@ -220,7 +220,7 @@ main(int argc, char **argv)
     yyin = fopen(filename, "r");
     if(yyin == NULL)
        err(1, "%s", filename);
-       
+
 
     p = strrchr(filename, rk_PATH_DELIM);
     if(p)
index 0e49a94104911319ec26529370e427af4ff3944e..6864e870a41e695e749e91c1d7d6b14c34f04e43 100644 (file)
@@ -101,7 +101,7 @@ initialize_error_table_r(struct et_list **list,
     et->next = NULL;
     *end = et;
 }
-                       
+
 
 KRB5_LIB_FUNCTION void KRB5_LIB_CALL
 free_error_table(struct et_list *et)
index 194965c3495f01bbf11134b6264f5cc1385d3b8a..0c2e5084b51f4a99258b2d50035fc27548f2b60f 100644 (file)
@@ -117,7 +117,7 @@ statement   : INDEX NUMBER
                | EC STRING ',' STRING
                {
                    struct error_code *ec = malloc(sizeof(*ec));
-               
+
                    if (ec == NULL)
                        errx(1, "malloc");
 
index fa9b33e540a8fd1bfe0bdb105cf3d19cf38be895..089f751e9e6e590186090fec4f9ae48aeee53a9c 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 2003 - 2005 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .\"
 .Dd April 20, 2005
index d5c89e01280bda8ba4a484b579f22413e5fcc12a..fa53a29d240966e919900068c4baf7073993ddaf 100644 (file)
@@ -371,7 +371,7 @@ extern GSSAPI_LIB_VARIABLE gss_OID_desc __gss_c_nt_anonymous_oid_desc;
  * to that gss_OID_desc.
  */
 extern GSSAPI_LIB_VARIABLE gss_OID_desc __gss_c_nt_export_name_oid_desc;
-#define GSS_C_NT_EXPORT_NAME (&__gss_c_nt_export_name_oid_desc) 
+#define GSS_C_NT_EXPORT_NAME (&__gss_c_nt_export_name_oid_desc)
 
 /* Major status codes */
 
@@ -831,7 +831,7 @@ typedef struct {
     size_t blocksize; /**< Specificed optimal size of messages, also
                         is the maximum padding size
                         (GSS_IOV_BUFFER_TYPE_PADDING) */
-} gss_context_stream_sizes; 
+} gss_context_stream_sizes;
 
 extern gss_OID_desc GSSAPI_LIB_VARIABLE __gss_c_attr_stream_sizes_oid_desc;
 #define GSS_C_ATTR_STREAM_SIZES (&__gss_c_attr_stream_sizes_oid_desc)
index d07656a337165c6fecf896ceb912c348474a602b..5ce3cb04a7d3e05f5fce51fa8855830c027c9227 100644 (file)
@@ -154,14 +154,14 @@ print_mech_attr(const char *mechname, gss_const_OID mech, gss_OID_set set)
        major = gss_display_mech_attr(&minor, &set->elements[n], &name, &desc, NULL);
        if (major)
            continue;
-       
+
        rtbl_add_column_entryv(ct, COL_OID, "%.*s",
                               (int)name.length, (char *)name.value);
        rtbl_add_column_entryv(ct, COL_DESC, "%.*s",
                               (int)desc.length, (char *)desc.value);
        if (mech) {
            gss_buffer_desc value;
-           
+
            if (gss_mo_get(mech, &set->elements[n], &value) != 0)
                value.length = 0;
 
index 65db343cad93aad5bb5ebba0fcddd50f24c7d5f6..d4555c51042b2795feae4118c3d87f40de325c48 100644 (file)
@@ -92,7 +92,7 @@ hash_input_chan_bindings (const gss_channel_bindings_t b,
   _gsskrb5_encode_om_uint32 (b->acceptor_address.length, num);
   EVP_DigestUpdate(ctx, num, sizeof(num));
   if (b->acceptor_address.length)
-      EVP_DigestUpdate(ctx, 
+      EVP_DigestUpdate(ctx,
                       b->acceptor_address.value,
                       b->acceptor_address.length);
   _gsskrb5_encode_om_uint32 (b->application_data.length, num);
index 1ee843092b81e62884ae200760f8e30875091dd0..5a00e124c2cf5d606ca9ce05a3ea7882bbb16a46 100644 (file)
@@ -123,7 +123,7 @@ _gsskrb5i_is_cfx(krb5_context context, gsskrb5_ctx ctx, int acceptor)
 
     if (key == NULL)
        return;
-       
+
     switch (key->keytype) {
     case ETYPE_DES_CBC_CRC:
     case ETYPE_DES_CBC_MD4:
@@ -201,7 +201,7 @@ gsskrb5_accept_delegated_token
 
     if (delegated_cred_handle) {
        gsskrb5_cred handle;
-       
+
        ret = _gsskrb5_krb5_import_cred(minor_status,
                                        ccache,
                                        NULL,
@@ -571,10 +571,10 @@ gsskrb5_acceptor_start(OM_uint32 * minor_status,
     if(ctx->flags & GSS_C_MUTUAL_FLAG) {
        krb5_data outbuf;
        int use_subkey = 0;
-       
+
        _gsskrb5i_is_cfx(context, ctx, 1);
        is_cfx = (ctx->more_flags & IS_CFX);
-       
+
        if (is_cfx || (ap_options & AP_OPTS_USE_SUBKEY)) {
            use_subkey = 1;
        } else {
@@ -602,7 +602,7 @@ gsskrb5_acceptor_start(OM_uint32 * minor_status,
                                   KRB5_AUTH_CONTEXT_USE_SUBKEY,
                                   NULL);
        }
-       
+
        kret = krb5_mk_rep(context,
                           ctx->auth_context,
                           &outbuf);
@@ -610,7 +610,7 @@ gsskrb5_acceptor_start(OM_uint32 * minor_status,
            *minor_status = kret;
            return GSS_S_FAILURE;
        }
-       
+
        if (IS_DCE_STYLE(ctx)) {
            output_token->length = outbuf.length;
            output_token->value = outbuf.data;
@@ -689,7 +689,7 @@ acceptor_wait_for_dcestyle(OM_uint32 * minor_status,
     krb5_error_code kret;
     krb5_data inbuf;
     int32_t r_seq_number, l_seq_number;
-       
+
     /*
      * We know it's GSS_C_DCE_STYLE so we don't need to decapsulate the AP_REP
      */
@@ -736,7 +736,7 @@ acceptor_wait_for_dcestyle(OM_uint32 * minor_status,
     {
        krb5_ap_rep_enc_part *repl;
        int32_t auth_flags;
-               
+
        krb5_auth_con_removeflags(context,
                                  ctx->auth_context,
                                  KRB5_AUTH_CONTEXT_DO_TIME,
@@ -765,7 +765,7 @@ acceptor_wait_for_dcestyle(OM_uint32 * minor_status,
        if (lifetime_rec == 0) {
            return GSS_S_CONTEXT_EXPIRED;
        }
-       
+
        if (time_rec) *time_rec = lifetime_rec;
     }
 
@@ -823,7 +823,7 @@ acceptor_wait_for_dcestyle(OM_uint32 * minor_status,
     {
        kret = krb5_auth_con_setremoteseqnumber(context,
                                                ctx->auth_context,
-                                               r_seq_number);  
+                                               r_seq_number);
        if (kret) {
            *minor_status = kret;
            return GSS_S_FAILURE;
index 2b316291f0fa33219c94f688df0c2fbbafcfb878..0f1f5f81cffc0bee2cfc2b25070a96b8b966bea9 100644 (file)
@@ -46,7 +46,7 @@ __gsskrb5_ccache_lifetime(OM_uint32 *minor_status,
 
     memset(&in_cred, 0, sizeof(in_cred));
     in_cred.client = principal;
-       
+
     realm = krb5_principal_get_realm(context,  principal);
     if (realm == NULL) {
        _gsskrb5_clear_status ();
index 6c45b06601f1633cb96f8cf6a15d7b3efe982231..00cf55f62d651314a6e1a486006e5450554d60bd 100644 (file)
@@ -81,7 +81,7 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_add_cred (
            return(GSS_S_FAILURE);
        }
     }
-       
+
     /* check that we have the same name */
     if (dname != NULL &&
        krb5_principal_compare(context, dname,
@@ -110,7 +110,7 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_add_cred (
        handle->ccache = NULL;
        handle->mechanisms = NULL;
        HEIMDAL_MUTEX_init(&handle->cred_id_mutex);
-       
+
        ret = GSS_S_FAILURE;
 
        kret = krb5_copy_principal(context, cred->principal,
@@ -124,7 +124,7 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_add_cred (
 
        if (cred->keytab) {
            char *name = NULL;
-       
+
            ret = GSS_S_FAILURE;
 
            kret = krb5_kt_get_full_name(context, cred->keytab, &name);
@@ -155,7 +155,7 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_add_cred (
            }
 
            if (strcmp(type, "MEMORY") == 0) {
-               ret = krb5_cc_new_unique(context, type, 
+               ret = krb5_cc_new_unique(context, type,
                                         NULL, &handle->ccache);
                if (ret) {
                    *minor_status = ret;
@@ -175,20 +175,20 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_add_cred (
                    *minor_status = ENOMEM;
                    goto failure;
                }
-               
+
                kret = asprintf(&type_name, "%s:%s", type, name);
                if (kret < 0 || type_name == NULL) {
                    *minor_status = ENOMEM;
                    goto failure;
                }
-               
+
                kret = krb5_cc_resolve(context, type_name,
                                       &handle->ccache);
                free(type_name);
                if (kret) {
                    *minor_status = kret;
                    goto failure;
-               }       
+               }
            }
        }
        ret = gss_create_empty_oid_set(minor_status, &handle->mechanisms);
index 040cd3ee7686bcd779b149ae93b6c3a469d50809..47913e4aec03244ef85004dde0792be290c49232 100644 (file)
@@ -69,11 +69,11 @@ _gk_unwrap_iov(OM_uint32 *minor_status,
     krb5_context context;
 
     GSSAPI_KRB5_INIT (&context);
-    
+
     if (ctx->more_flags & IS_CFX)
        return _gssapi_unwrap_cfx_iov(minor_status, ctx, context,
                                      conf_state, qop_state, iov, iov_count);
-    
+
     return GSS_S_FAILURE;
 }
 
@@ -88,13 +88,13 @@ _gk_wrap_iov_length(OM_uint32 * minor_status,
 {
     const gsskrb5_ctx ctx = (const gsskrb5_ctx) context_handle;
     krb5_context context;
-    
+
     GSSAPI_KRB5_INIT (&context);
-    
+
     if (ctx->more_flags & IS_CFX)
        return _gssapi_wrap_iov_length_cfx(minor_status, ctx, context,
                                           conf_req_flag, qop_req, conf_state,
                                           iov, iov_count);
-    
+
     return GSS_S_FAILURE;
 }
index 5be8cbcaad52a7e434d317a967e87dbe8b57965c..0264207e4a8ceb467fdaf80c9079c3c88e74e7cb 100644 (file)
@@ -309,7 +309,7 @@ _gssapi_verify_mic_arcfour(OM_uint32 * minor_status,
 
     {
        EVP_CIPHER_CTX rc4_key;
-       
+
        EVP_CIPHER_CTX_init(&rc4_key);
        EVP_CipherInit_ex(&rc4_key, EVP_rc4(), NULL, (void *)k6_data, NULL, 0);
        EVP_Cipher(&rc4_key, SND_SEQ, p, 8);
@@ -462,7 +462,7 @@ _gssapi_wrap_arcfour(OM_uint32 * minor_status,
 
     if(conf_req_flag) {
        EVP_CIPHER_CTX rc4_key;
-       
+
        EVP_CIPHER_CTX_init(&rc4_key);
        EVP_CipherInit_ex(&rc4_key, EVP_rc4(), NULL, k6_data, NULL, 1);
        EVP_Cipher(&rc4_key, p0 + 24, p0 + 24, 8 + datalen);
@@ -481,7 +481,7 @@ _gssapi_wrap_arcfour(OM_uint32 * minor_status,
 
     {
        EVP_CIPHER_CTX rc4_key;
-       
+
        EVP_CIPHER_CTX_init(&rc4_key);
        EVP_CipherInit_ex(&rc4_key, EVP_rc4(), NULL, k6_data, NULL, 1);
        EVP_Cipher(&rc4_key, p0 + 8, p0 + 8 /* SND_SEQ */, 8);
@@ -581,7 +581,7 @@ OM_uint32 _gssapi_unwrap_arcfour(OM_uint32 *minor_status,
 
     {
        EVP_CIPHER_CTX rc4_key;
-       
+
        EVP_CIPHER_CTX_init(&rc4_key);
        EVP_CipherInit_ex(&rc4_key, EVP_rc4(), NULL, k6_data, NULL, 1);
        EVP_Cipher(&rc4_key, SND_SEQ, p0 + 8, 8);
@@ -629,7 +629,7 @@ OM_uint32 _gssapi_unwrap_arcfour(OM_uint32 *minor_status,
 
     if(conf_flag) {
        EVP_CIPHER_CTX rc4_key;
-       
+
        EVP_CIPHER_CTX_init(&rc4_key);
        EVP_CipherInit_ex(&rc4_key, EVP_rc4(), NULL, k6_data, NULL, 1);
        EVP_Cipher(&rc4_key, Confounder, p0 + 24, 8);
index bc7a8442bf4051075e165bdc6e05284d632be008..3c1536b60ea5add9b479ecc46bdfde4c8f5bcc2a 100755 (executable)
@@ -569,7 +569,7 @@ _gssapi_wrap_cfx_iov(OM_uint32 *minor_status,
          plain packet:
 
          {data | "header" | gss-trailer (krb5 checksum)
-         
+
          don't do RRC != 0
 
         */
@@ -651,7 +651,7 @@ unrotate_iov(OM_uint32 *minor_status, size_t rrc, gss_iov_buffer_desc *iov, int
            GSS_IOV_BUFFER_TYPE(iov[i].type) == GSS_IOV_BUFFER_TYPE_PADDING ||
            GSS_IOV_BUFFER_TYPE(iov[i].type) == GSS_IOV_BUFFER_TYPE_TRAILER)
            len += iov[i].buffer.length;
-    
+
     p = malloc(len);
     if (p == NULL) {
        *minor_status = ENOMEM;
index 221d219c69fa3739ead198f9fdc38f3fe360163e..3381dffa19eed1460d9a50c54ae10b0fd333a37b 100644 (file)
@@ -59,7 +59,7 @@ check_compat(OM_uint32 *minor_status,
            *compat = match_val;
            break;
        }
-       
+
        krb5_free_principal(context, match);
        match = NULL;
     }
index 7b27906b5b12f6efb5ae5713b09ee540002b96e3..cb1550011cd7e41237d898d2a35359a0f89ef034 100644 (file)
@@ -88,6 +88,6 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_context_time
 
     if (*time_rec == 0)
        return GSS_S_CONTEXT_EXPIRED;
-       
+
     return GSS_S_COMPLETE;
 }
index 4e65fc1cf30448aae2c87475317327b69e024e80..e332d29c84aaf689b8d6ce921aa3ff18a23853c9 100644 (file)
@@ -100,7 +100,7 @@ _gsskrb5_krb5_import_cred(OM_uint32 *minor_status,
            *minor_status = kret;
            return GSS_S_FAILURE;
        }
-       
+
        if (keytab_principal) {
            krb5_boolean match;
 
index d2c253e84bbedde24bd5cc4b48ccaca88faa55a1..fa45d19b9812843dbc3dbde3aea18b394cf1ab0c 100644 (file)
@@ -47,7 +47,7 @@ _gsskrb5_export_cred(OM_uint32 *minor_status,
     char *str;
 
     GSSAPI_KRB5_INIT (&context);
-    
+
     if (handle->usage != GSS_C_INITIATE && handle->usage != GSS_C_BOTH) {
        *minor_status = GSS_KRB5_S_G_BAD_USAGE;
        return GSS_S_FAILURE;
@@ -93,14 +93,14 @@ _gsskrb5_export_cred(OM_uint32 *minor_status,
            *minor_status = ret;
            return GSS_S_FAILURE;
        }
-       
+
        ret = krb5_cc_get_full_name(context, handle->ccache, &str);
        if (ret) {
            krb5_storage_free(sp);
            *minor_status = ret;
            return GSS_S_FAILURE;
        }
-       
+
        ret = krb5_store_string(sp, str);
        free(str);
        if (ret) {
@@ -222,7 +222,7 @@ _gsskrb5_import_cred(OM_uint32 * minor_status,
            *minor_status = ret;
            return GSS_S_FAILURE;
        }
-       
+
        ret = krb5_cc_resolve(context, str, &id);
        krb5_xfree(str);
        if (ret) {
index 79cd9232e19dc4cc761af66e78b541d565710286..fe5dac7c60b26342039f08200c6561df978818d3 100644 (file)
@@ -114,7 +114,7 @@ _gssapi_encapsulate(
     if (output_token->value == NULL) {
        *minor_status = ENOMEM;
        return GSS_S_FAILURE;
-    }  
+    }
 
     p = _gssapi_make_mech_header (output_token->value, len, mech);
     memcpy (p, in_data->data, in_data->length);
@@ -145,7 +145,7 @@ _gsskrb5_encapsulate(
     if (output_token->value == NULL) {
        *minor_status = ENOMEM;
        return GSS_S_FAILURE;
-    }  
+    }
 
     p = _gsskrb5_make_header (output_token->value, len, type, mech);
     memcpy (p, in_data->data, in_data->length);
index 2a071a305efc8f9c88449687e577035a47c40713..5fe512672f95867a7a0eb17ba40641d7e619e9e8 100644 (file)
@@ -107,9 +107,9 @@ _gsskrb5_canon_name(OM_uint32 *minor_status, krb5_context context,
            return GSS_S_BAD_NAME;
        else if (p->name.name_string.len > 1)
            hostname = p->name.name_string.val[1];
-       
+
        service = p->name.name_string.val[0];
-       
+
        ret = krb5_sname_to_principal(context,
                                      hostname,
                                      service,
index 2f08040e88daf7cf9f55610524fcf83265951629..5f8b01b7270712e4bdc311f7ef7cc87e3e3a2dc1 100644 (file)
@@ -41,7 +41,7 @@
 static OM_uint32
 set_addresses (krb5_context context,
               krb5_auth_context ac,
-              const gss_channel_bindings_t input_chan_bindings)        
+              const gss_channel_bindings_t input_chan_bindings)
 {
     /* Port numbers are expected to be in application_data.value,
      * initator's port first */
@@ -453,11 +453,11 @@ init_auth
      * DNS canonicalizion.
      */
     ret = gsskrb5_get_creds(minor_status, context, ctx->ccache,
-                           ctx, name, 0, time_req, 
+                           ctx, name, 0, time_req,
                            time_rec);
     if (ret && allow_dns)
        ret = gsskrb5_get_creds(minor_status, context, ctx->ccache,
-                               ctx, name, 1, time_req, 
+                               ctx, name, 1, time_req,
                                time_rec);
     if (ret)
        goto failure;
@@ -543,7 +543,7 @@ init_auth_restart
      */
     if (!ctx->kcred->flags.b.ok_as_delegate) {
        krb5_data data;
-       
+
        ret = krb5_cc_get_config(context, ctx->ccache, NULL,
                                 "realm-config", &data);
        if (ret == 0) {
@@ -848,9 +848,9 @@ repl_mutual
            *minor_status = kret;
            return GSS_S_FAILURE;
        }
-       
+
        /* reset local seq number */
-       krb5_auth_con_setlocalseqnumber(context, ctx->auth_context, local_seq); 
+       krb5_auth_con_setlocalseqnumber(context, ctx->auth_context, local_seq);
 
        output_token->length = outbuf.length;
        output_token->value  = outbuf.data;
@@ -953,7 +953,7 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_init_sec_context
                        ret_flags,
                        time_rec);
        if (ret != GSS_S_COMPLETE)
-           break;      
+           break;
        /* FALL THOUGH */
     case INITIATOR_RESTART:
        ret = init_auth_restart(minor_status,
index d3798623ff3fceaa091515983da5a1807f1a1362..f88199692cd7ad537aa7b7545156f4d94a6c6fa1 100644 (file)
@@ -95,12 +95,12 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_inquire_cred
     if (output_name != NULL) {
        if (icred && icred->principal != NULL) {
            gss_name_t name;
-       
+
            if (acred && acred->principal)
                name = (gss_name_t)acred->principal;
            else
                name = (gss_name_t)icred->principal;
-               
+
             ret = _gsskrb5_duplicate_name(minor_status, name, output_name);
             if (ret)
                goto out;
index dc02b99851a31ce8da8182b8637062f6a3343822..65bd49c971ba0b2662f16e8f2bc6674272b7afca 100644 (file)
@@ -72,6 +72,6 @@ OM_uint32 GSSAPI_CALLCONV _gsskrb5_inquire_names_for_mech (
 
     if (ret != GSS_S_COMPLETE)
        gss_release_oid_set(NULL, name_types);
-       
+
     return GSS_S_COMPLETE;
 }
index ed39fd9cb0941514e34b11600dd3f51fad0d1a03..b57217a4e8303d24d1d8c9a11ac2147dd8a9dfbb 100644 (file)
@@ -159,10 +159,10 @@ static OM_uint32 inquire_sec_context_get_subkey
 
     {
        gss_buffer_desc value;
-       
+
        value.length = data.length;
        value.value = data.data;
-       
+
        maj_stat = gss_add_buffer_set_member(minor_status,
                                             &value,
                                             data_set);
@@ -504,10 +504,10 @@ get_service_keyblock
 
     {
        gss_buffer_desc value;
-       
+
        value.length = data.length;
        value.value = data.data;
-       
+
        maj_stat = gss_add_buffer_set_member(minor_status,
                                             &value,
                                             data_set);
index c53b91aa634df98301cde6dfffa7ce212b4f0d9a..2e0e7b20f922565ca6f4a4bf2b1efff2a74d56a1 100644 (file)
@@ -64,7 +64,7 @@ msg_order_alloc(OM_uint32 *minor_status,
     if (*o == NULL) {
        *minor_status = ENOMEM;
        return GSS_S_FAILURE;
-    }  
+    }
 
     *minor_status = 0;
     return GSS_S_COMPLETE;
index 5ff6172fb92da53e1ae123ee83e2a482a1109695..bd3871675109f89da1620fd7feaffc3733e2b285 100644 (file)
@@ -209,7 +209,7 @@ no_ci_flags(OM_uint32 *minor_status,
 
     cred = (gsskrb5_cred)*cred_handle;
     cred->cred_flags |= GSS_CF_NO_CI_FLAGS;
-       
+
     *minor_status = 0;
     return GSS_S_COMPLETE;
 
@@ -241,7 +241,7 @@ _gsskrb5_set_cred_option
     if (gss_oid_equal(desired_object, GSS_KRB5_CRED_NO_CI_FLAGS_X)) {
        return no_ci_flags(minor_status, context, cred_handle, value);
     }
-       
+
 
     *minor_status = EINVAL;
     return GSS_S_FAILURE;
index d13cfb6db92f666afecb857c65b167ff2772860a..141ff722fb648ee96982daa7240149b8e0573f8c 100644 (file)
@@ -221,7 +221,7 @@ _gsskrb5_set_sec_context_option
            return maj_stat;
 
        t = time(NULL) + offset;
-       
+
        krb5_set_real_time(context, t, 0);
 
        *minor_status = 0;
index 21f9f6e8aba847d60aa1520b2332d0cd64953108..a3aa2fb83e7129287f011492d400d244a550d756 100644 (file)
@@ -103,7 +103,7 @@ _gsskrb5_store_cred(OM_uint32         *minor_status,
        *minor_status = ret;
        return(GSS_S_FAILURE);
     }
-       
+
     if (default_cred)
        krb5_cc_switch(context, id);
 
index 7abb35dd9b104d1778ac5549bce4968cfc06ab5e..9f7c9ef4e4301ebd8fcdf63f3ce93541fd11064d 100644 (file)
@@ -63,7 +63,7 @@ test_add(gss_cred_id_t cred_handle)
                                 NULL,
                                 &time_rec,
                                 NULL);
-                       
+
     if (GSS_ERROR(major_status))
        errx(1, "add_cred failed");
 
@@ -92,7 +92,7 @@ copy_cred(void)
                                    &time_rec);
     if (GSS_ERROR(major_status))
        errx(1, "acquire_cred failed");
-       
+
     print_time(time_rec);
 
     test_add(cred_handle);
@@ -135,7 +135,7 @@ acquire_cred_service(const char *service)
                                    &time_rec);
     if (GSS_ERROR(major_status))
        errx(1, "acquire_cred failed");
-       
+
     print_time(time_rec);
 
     major_status = gss_release_cred(&minor_status,
index b9db6d4e057def65d9f793b82420fa32c0623e5c..0b196fcad24d893a21075f742222d6f9ee518b62 100644 (file)
@@ -103,7 +103,7 @@ test_special(krb5_context context, krb5_crypto crypto,
     OM_uint32 minor;
 
     ctx.crypto = crypto;
-    
+
     ret = _gssapi_wrap_size_cfx(&minor,
                                &ctx,
                                context,
@@ -159,7 +159,7 @@ main(int argc, char **argv)
 
     test_special(context, crypto, 1, 60);
     test_special(context, crypto, 0, 60);
-    
+
     for (i = 0; i < sizeof(tests)/sizeof(tests[0]); i++) {
        test_range(&tests[i], 1, context, crypto);
        test_range(&tests[i], 0, context, crypto);
index 1acdad2e47c4698f12da6458563505c1d5f447fa..06dd6632d0be1630ccba3ff7db82166873c76e08 100644 (file)
@@ -86,7 +86,7 @@ acquire_release_loop(gss_name_t name, int counter, gss_cred_usage_t usage)
        if (maj_stat != GSS_S_COMPLETE)
            gss_err(1, min_stat, "aquire %d %d != GSS_S_COMPLETE",
                    i, (int)maj_stat);
-                               
+
        maj_stat = gss_release_cred(&min_stat, &cred);
        if (maj_stat != GSS_S_COMPLETE)
            gss_err(1, min_stat, "release %d %d != GSS_S_COMPLETE",
@@ -122,7 +122,7 @@ acquire_add_release_add(gss_name_t name, gss_cred_usage_t usage)
                            NULL,
                            NULL,
                            NULL);
-                       
+
     if (maj_stat != GSS_S_COMPLETE)
        gss_err(1, min_stat, "add_cred %d != GSS_S_COMPLETE", (int)maj_stat);
 
index bdb9e8379258d40d60b7385a5d9448cd05531d0e..f53ce783bb071e9e1b71d82b4322f79e047201cf 100644 (file)
@@ -89,7 +89,7 @@ copy_import(void)
        errx(1, "gss_compare_name");
     if (!equal)
        errx(1, "names not equal");
-       
+
     if (lifetime1 != lifetime1)
        errx(1, "lifetime not equal");
 
index 92d7e7f05d7c9fbaf48142d00df5fcdb0b9513fe..bf7ea03f72e4534a778df4899f720b9918effd93 100644 (file)
@@ -34,17 +34,17 @@ parse_header(const gss_buffer_t input_token, gss_OID mech_oid)
        unsigned char *p = input_token->value;
        size_t len = input_token->length;
        size_t a, b;
-       
+
        /*
         * Token must start with [APPLICATION 0] SEQUENCE.
         * But if it doesn't assume it is DCE-STYLE Kerberos!
         */
        if (len == 0)
                return (GSS_S_DEFECTIVE_TOKEN);
-       
+
        p++;
        len--;
-               
+
        /*
         * Decode the length and make sure it agrees with the
         * token length.
@@ -71,7 +71,7 @@ parse_header(const gss_buffer_t input_token, gss_OID mech_oid)
        }
        if (a != len)
                return (GSS_S_DEFECTIVE_TOKEN);
-               
+
        /*
         * Decode the OID for the mechanism. Simplify life by
         * assuming that the OID length is less than 128 bytes.
@@ -84,9 +84,9 @@ parse_header(const gss_buffer_t input_token, gss_OID mech_oid)
        p += 2;
        len -= 2;
        mech_oid->elements = p;
-       
+
        return GSS_S_COMPLETE;
-}              
+}
 
 static gss_OID_desc krb5_mechanism =
     {9, rk_UNCONST("\x2a\x86\x48\x86\xf7\x12\x01\x02\x02")};
@@ -221,7 +221,7 @@ gss_accept_sec_context(OM_uint32 *minor_status,
                acceptor_mc = GSS_C_NO_CREDENTIAL;
        }
        delegated_mc = GSS_C_NO_CREDENTIAL;
-       
+
        mech_ret_flags = 0;
        major_status = m->gm_accept_sec_context(minor_status,
            &ctx->gc_ctx,
@@ -267,7 +267,7 @@ gss_accept_sec_context(OM_uint32 *minor_status,
                        mech_ret_flags &=
                            ~(GSS_C_DELEG_FLAG|GSS_C_DELEG_POLICY_FLAG);
                } else if (gss_oid_equal(mech_ret_type, &m->gm_mech_oid) == 0) {
-                       /* 
+                       /*
                         * If the returned mech_type is not the same
                         * as the mech, assume its pseudo mech type
                         * and the returned type is already a
index 191a4a305cb930dca838f7784706877f88bd6ba3..a23270511ebe4b24e4f5b5291d25237141d596c3 100644 (file)
@@ -47,7 +47,7 @@
  *
  * @returns a gss_error code, see gss_display_status() about printing
  *          the error code.
- *       
+ *
  * @ingroup gssapi
  */
 
index 99a13036bc18a5200d0694189fb05dc959b63b3d..3008c0d34484b61e2e15d2f42e6eca33c0ddfd80 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * AEAD support
- */ 
+ */
 
 #include "mech_locl.h"
 
@@ -90,7 +90,7 @@ gss_unwrap_iov(OM_uint32 *minor_status,
               int iov_count)
 {
        struct _gss_context *ctx = (struct _gss_context *) context_handle;
-       gssapi_mech_interface m;          
+       gssapi_mech_interface m;
 
        if (minor_status)
            *minor_status = 0;
index e87931dc78acf80a86831f3b978a67df7207636b..bd8ff5212071194ecd622aceef3ce009fe6b04bb 100644 (file)
@@ -48,7 +48,7 @@
  *
  *  @returns a gss_error code, see gss_display_status() about printing
  *         the error code.
- *       
+ *
  *  @ingroup gssapi
  */
 
index 31885e4f0614babde2a9f149560fc5cd7e48e28d..99de68776e26af94987f68ebef94c2a6ae23dbda 100644 (file)
@@ -183,7 +183,7 @@ gss_import_cred(OM_uint32 * minor_status,
        buffer.value = data.data;
        buffer.length = data.length;
 
-       major = m->gm_import_cred(minor_status, 
+       major = m->gm_import_cred(minor_status,
                                  &buffer, &mcred);
        krb5_data_free(&data);
        if (major) {
index e4bb317386a25df2eaf860498bad832d0723e100..3f2974e8ca5b78a65e3fa6fc9a23962e00204254 100644 (file)
@@ -55,7 +55,7 @@ gss_decapsulate_token(gss_const_buffer_t input_token,
     if (ret) {
        der_free_oid(&o);
        return GSS_S_FAILURE;
-    }  
+    }
 
     if (der_heim_oid_cmp(&ct.thisMech, &o) == 0) {
        status = GSS_S_COMPLETE;
index e08fe34fd1a929477af02d6d5180155eb3955367..cb35dd0eb16bcdc9161b1b27ba89e15682341454 100644 (file)
@@ -40,7 +40,7 @@ gss_delete_name_attribute(OM_uint32 *minor_status,
     OM_uint32 major_status = GSS_S_UNAVAILABLE;
     struct _gss_name *name = (struct _gss_name *) input_name;
     struct _gss_mechanism_name *mn;
-        
+
     *minor_status = 0;
 
     if (input_name == GSS_C_NO_NAME)
index 74bb616c2b026c21626c5af4eb5f7a13c87fe575..100271ad52b03acc3a60c1735ac6a97a69c3293a 100644 (file)
@@ -41,9 +41,9 @@ gss_destroy_cred(void *status,
        return GSS_S_CALL_INACCESSIBLE_READ;
     if (*cred_handle == GSS_C_NO_CREDENTIAL)
        return GSS_S_COMPLETE;
-    
+
     cred = (struct _gss_cred *)*cred_handle;
-    
+
     while (HEIM_SLIST_FIRST(&cred->gc_mc)) {
        mc = HEIM_SLIST_FIRST(&cred->gc_mc);
        HEIM_SLIST_REMOVE_HEAD(&cred->gc_mc, gmc_link);
index 48e62b37f7e7fa7e58ffda1c08939d0f70e1dfe2..6c0e5f332caee283551cce4efe1cbdbc9ebd74c9 100644 (file)
@@ -41,7 +41,7 @@ gss_display_name_ext(OM_uint32 *minor_status,
     OM_uint32 major_status = GSS_S_UNAVAILABLE;
     struct _gss_name *name = (struct _gss_name *) input_name;
     struct _gss_mechanism_name *mn;
-        
+
     *minor_status = 0;
     _mg_buffer_zero(display_name);
 
index d6aaf98827acd79e0bbdf6b35a2d0ff46ba40cad..1e508caa9baf0f04deda925192e97e56e4ee2456 100644 (file)
@@ -190,7 +190,7 @@ gss_display_status(OM_uint32 *minor_status,
                    oid.value = rk_UNCONST("unknown");
                    oid.length = 7;
                }
-               
+
                e = asprintf (&buf, "unknown mech-code %lu for mech %.*s",
                          (unsigned long)status_value,
                          (int)oid.length, (char *)oid.value);
index 053825bbc382f46f27feb5732fb1860003fce879..a76c87cb852aba74fb27623616c014ff5820f807 100644 (file)
@@ -52,7 +52,7 @@ gss_duplicate_name(OM_uint32 *minor_status,
                if (major_status != GSS_S_COMPLETE)
                        return (major_status);
                new_name = (struct _gss_name *) *dest_name;
-               
+
                HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
                    struct _gss_mechanism_name *mn2;
                    _gss_find_mn(minor_status, new_name,
@@ -67,10 +67,10 @@ gss_duplicate_name(OM_uint32 *minor_status,
                memset(new_name, 0, sizeof(struct _gss_name));
                HEIM_SLIST_INIT(&new_name->gn_mn);
                *dest_name = (gss_name_t) new_name;
-               
+
                HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
                        struct _gss_mechanism_name *new_mn;
-                       
+
                        new_mn = malloc(sizeof(*new_mn));
                        if (!new_mn) {
                                *minor_status = ENOMEM;
@@ -78,7 +78,7 @@ gss_duplicate_name(OM_uint32 *minor_status,
                        }
                        new_mn->gmn_mech = mn->gmn_mech;
                        new_mn->gmn_mech_oid = mn->gmn_mech_oid;
-                       
+
                        major_status =
                            mn->gmn_mech->gm_duplicate_name(minor_status,
                                mn->gmn_name, &new_mn->gmn_name);
index 394b355d5458c016394a47571b9a8e1748bebe69..1b1f973eaaa8aaf7519a6211bb82946f8cccd9ed 100644 (file)
@@ -58,7 +58,7 @@ gss_encapsulate_token(gss_const_buffer_t input_token,
     if (ret) {
        _mg_buffer_zero(output_token);
        return GSS_S_FAILURE;
-    }  
+    }
     if (output_token->length != size)
        abort();
 
index 8f6cddf809fc8ff6900fd4ce0c53170463935571..530a905aa7e8e58764be47499bb81ee3db16f517 100644 (file)
@@ -40,7 +40,7 @@ gss_export_name_composite(OM_uint32 *minor_status,
     OM_uint32 major_status = GSS_S_UNAVAILABLE;
     struct _gss_name *name = (struct _gss_name *) input_name;
     struct _gss_mechanism_name *mn;
-        
+
     *minor_status = 0;
     _mg_buffer_zero(exp_composite_name);
 
index babc8ebdf48a9be99dc764bbe1e0d046621117c9..369f3a22570e902f0b4e01ccc40ad1647505632d 100644 (file)
@@ -42,7 +42,7 @@ gss_export_sec_context(OM_uint32 *minor_status,
 
        major_status = m->gm_export_sec_context(minor_status,
            &ctx->gc_ctx, &buf);
-       
+
        if (major_status == GSS_S_COMPLETE) {
                unsigned char *p;
 
index cb59cc666ced5b5c85d483ca579e736ef6454616..450bbac46e9355bf9478bde63d84669a6b5e3217 100644 (file)
@@ -45,7 +45,7 @@ gss_get_name_attribute(OM_uint32 *minor_status,
     OM_uint32 major_status = GSS_S_UNAVAILABLE;
     struct _gss_name *name = (struct _gss_name *) input_name;
     struct _gss_mechanism_name *mn;
-        
+
     *minor_status = 0;
     if (authenticated != NULL)
         *authenticated = 0;
index bcd60a9986d0e6ebf7eed19ebfac3721cf5bb6dd..d1b3dc95b4a4d265ad618bbafa03c22092903c0b 100644 (file)
@@ -169,7 +169,7 @@ _gss_import_export_name(OM_uint32 *minor_status,
  *
  * @returns a gss_error code, see gss_display_status() about printing
  *        the error code.
- *  
+ *
  * @ingroup gssapi
  */
 
@@ -241,7 +241,7 @@ gss_import_name(OM_uint32 *minor_status,
        HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
                int present = 0;
 
-               major_status = gss_test_oid_set_member(minor_status, 
+               major_status = gss_test_oid_set_member(minor_status,
                    name_type, m->gm_name_types, &present);
 
                if (major_status || present == 0)
index 2a376fefeaeacf7ac83c41e3d3f46de9ae5b707f..9865db78d419bb06d9136717a2aa909892a8788a 100644 (file)
@@ -58,7 +58,7 @@ gss_import_sec_context(OM_uint32 *minor_status,
        mech_oid.elements = p + 2;
        buf.length = len - 2 - mech_oid.length;
        buf.value = p + 2 + mech_oid.length;
-       
+
        m = __gss_get_mechanism(&mech_oid);
        if (!m)
                return (GSS_S_DEFECTIVE_TOKEN);
index 475dbfba0a05fbf7ad5843aed987da35e4124782..8fd53d956d58926b37fc72fb61f02245bcddd321 100644 (file)
@@ -42,7 +42,7 @@ gss_indicate_mechs(OM_uint32 *minor_status,
        major_status = gss_create_empty_oid_set(minor_status, mech_set);
        if (major_status)
                return (major_status);
-       
+
        HEIM_SLIST_FOREACH(m, &_gss_mechs, gm_link) {
                if (m->gm_mech.gm_indicate_mechs) {
                        major_status = m->gm_mech.gm_indicate_mechs(
index cf111ecbae096cb46e58404e0539e78b99a4d8bf..af0170a50a51a4cb720fa4458ceae641c52c0f0c 100644 (file)
@@ -99,7 +99,7 @@ _gss_mech_cred_find(gss_cred_id_t cred_handle, gss_OID mech_type)
  *
  * @returns a gss_error code, see gss_display_status() about printing
  *          the error code.
- *       
+ *
  * @ingroup gssapi
  */
 
index 3eb36dbacb997b2e73b9ad155d5496a07763a310..10acaaae19c7c6e818d217fc18407b0b5394a011 100644 (file)
@@ -42,7 +42,7 @@ gss_inquire_name(OM_uint32 *minor_status,
     OM_uint32 major_status = GSS_S_UNAVAILABLE;
     struct _gss_name *name = (struct _gss_name *) input_name;
     struct _gss_mechanism_name *mn;
-        
+
     *minor_status = 0;
     if (name_is_MN != NULL)
         *name_is_MN = 0;
index e62d00207c795868f271f2544980a928367e6733..55e01094ff91c793ce900b16a70fc61c01930b62 100644 (file)
@@ -62,7 +62,7 @@ _gss_string_to_oid(const char* s, gss_OID oid)
                if (q) q = q + 1;
                number_count++;
        }
-       
+
        /*
         * The first two numbers are in the first byte and each
         * subsequent number is encoded in a variable byte sequence.
@@ -126,7 +126,7 @@ _gss_string_to_oid(const char* s, gss_OID oid)
                                while (bytes) {
                                        if (res) {
                                                int bit = 7*(bytes-1);
-                                               
+
                                                *res = (number >> bit) & 0x7f;
                                                if (bytes != 1)
                                                        *res |= 0x80;
index 4b470c775f24859161fbbc812cb694de064c19eb..43e0e2a85cb2afa268000bd05754e7de089b9e6e 100644 (file)
@@ -58,7 +58,7 @@ _gss_find_mn(OM_uint32 *minor_status, struct _gss_name *name, gss_OID mech,
                mn = malloc(sizeof(struct _gss_mechanism_name));
                if (!mn)
                        return GSS_S_FAILURE;
-               
+
                major_status = m->gm_import_name(minor_status,
                    &name->gn_value,
                    (name->gn_type.elements
index 7d6ded39e479744226c0beab0cb8defdd3ddf530..b125ede66fa3754120a61e542fc7e00b7d69a157 100644 (file)
@@ -43,7 +43,7 @@
  *
  * @return non-zero when both oid are the same OID, zero when they are
  *         not the same.
- *         
+ *
  * @ingroup gssapi
  */
 
index 759eaec4c32fab88ec08087de770100c00d5ef40..fd0b5df36bed8197fc3ad20c2d95c8291e3035fd 100644 (file)
@@ -40,7 +40,7 @@
  *
  * @returns a gss_error code, see gss_display_status() about printing
  *        the error code.
- *  
+ *
  * @ingroup gssapi
  */
 GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL
index 62be485a0783506f8fa17a90c2ccac46d0dc4755..d33453d92feb34238229b09a3b602b6a326874c0 100644 (file)
@@ -93,13 +93,13 @@ gss_set_cred_option (OM_uint32 *minor_status,
 
                HEIM_SLIST_FOREACH(mc, &cred->gc_mc, gmc_link) {
                        m = mc->gmc_mech;
-       
+
                        if (m == NULL)
                                return GSS_S_BAD_MECH;
-       
+
                        if (m->gm_set_cred_option == NULL)
                                continue;
-       
+
                        major_status = m->gm_set_cred_option(minor_status,
                            &mc->gmc_cred, object, value);
                        if (major_status == GSS_S_COMPLETE)
index b0d39d9cd8a77bf8f8af254c40bcc3c9d3dc0147..ada7a0612ec7befa07bbec3b356ddc3f6e10378f 100644 (file)
@@ -42,7 +42,7 @@ gss_set_name_attribute(OM_uint32 *minor_status,
     OM_uint32 major_status = GSS_S_UNAVAILABLE;
     struct _gss_name *name = (struct _gss_name *) input_name;
     struct _gss_mechanism_name *mn;
-        
+
     *minor_status = 0;
 
     if (input_name == GSS_C_NO_NAME)
index b6a8a4c877bdc4b7edfea027f016bb597d001063..4d2bfdec8b1a5c1f907cde911d9772ba9016d8fd 100644 (file)
@@ -53,7 +53,7 @@ gss_store_cred(OM_uint32         *minor_status,
        *elements_stored = NULL;
     if (cred_usage_stored)
        *cred_usage_stored = 0;
-       
+
     if (cred == NULL)
        return GSS_S_NO_CONTEXT;
 
index e79814aea720b4c139d08ec6cb5dd39cf852809a..9bebcf6cf08e8d520033da7635bc2d1dc9eea52c 100644 (file)
@@ -38,7 +38,7 @@ gss_wrap_size_limit(OM_uint32 *minor_status,
 {
        struct _gss_context *ctx = (struct _gss_context *) context_handle;
        gssapi_mech_interface m;
-       
+
        *max_input_size = 0;
        if (ctx == NULL) {
            *minor_status = 0;
index f3b734828051a12dcbd61f9e0498ae4902e10d34..e7b083d3158ad755d5df8601c0c285aecb91e57e 100644 (file)
@@ -55,10 +55,10 @@ must be enclosed in brackets ([ ]) to differentiate them from the
 optional kernel module entry.
 .El
 .Pp
-The 
+The
 .Pa "/etc/gss/qop"
 file contains a list of Quality of Protection values for use with
-GSS-API. 
+GSS-API.
 Each line of the file either contains a comment if the first character
 is '#' or it contains three fields with the following meanings:
 .Bl -tag
index 2fd07913fabf7f1514a2e8bbb8fff3b2157c5fbc..533fc15df8f3c4b82b1f16b6bd6d637155d46343 100644 (file)
@@ -42,13 +42,13 @@ _gss_ntlm_allocate_ctx(OM_uint32 *minor_status, ntlm_ctx *ctx)
 {
     OM_uint32 maj_stat;
     struct ntlm_server_interface *ns_interface = NULL;
-    
+
 #ifdef DIGEST
     ns_interface = &ntlmsspi_kdc_digest;
 #endif
     if (ns_interface == NULL)
        return GSS_S_FAILURE;
-    
+
     *ctx = calloc(1, sizeof(**ctx));
 
     (*ctx)->server = ns_interface;
@@ -91,7 +91,7 @@ _gss_ntlm_accept_sec_context
 
     if (context_handle == NULL)
        return GSS_S_FAILURE;
-       
+
     if (input_token_buffer == GSS_C_NO_BUFFER)
        return GSS_S_FAILURE;
 
@@ -116,7 +116,7 @@ _gss_ntlm_accept_sec_context
        if (major_status)
            return major_status;
        *context_handle = (gss_ctx_id_t)ctx;
-       
+
        /* check if the mechs is allowed by remote service */
        major_status = (*ctx->server->nsi_probe)(minor_status, ctx->ictx, NULL);
        if (major_status) {
@@ -126,7 +126,7 @@ _gss_ntlm_accept_sec_context
 
        data.data = input_token_buffer->value;
        data.length = input_token_buffer->length;
-       
+
        ret = heim_ntlm_decode_type1(&data, &type1);
        if (ret) {
            _gss_ntlm_delete_sec_context(minor_status, context_handle, NULL);
@@ -215,20 +215,20 @@ _gss_ntlm_accept_sec_context
                return maj_stat;
            }
            *src_name = (gss_name_t)n;
-       }       
+       }
 
        heim_ntlm_free_type3(&type3);
 
        ret = krb5_data_copy(&ctx->sessionkey,
                             session.data, session.length);
-       if (ret) {      
+       if (ret) {
            if (src_name)
                _gss_ntlm_release_name(&junk, src_name);
            _gss_ntlm_delete_sec_context(minor_status, context_handle, NULL);
            *minor_status = ret;
            return GSS_S_FAILURE;
        }
-       
+
        if (session.length != 0) {
 
            ctx->status |= STATUS_SESSIONKEY;
index 37e2c68a1b38d0120873d9bb42f118e5eccf630a..b186271f590fb54a9bb17ea632338e9150eb3cec 100644 (file)
@@ -63,7 +63,7 @@ OM_uint32 GSSAPI_CALLCONV _gss_ntlm_acquire_cred
        maj_stat = _gss_ntlm_allocate_ctx(min_stat, &ctx);
        if (maj_stat != GSS_S_COMPLETE)
            return maj_stat;
-       
+
        maj_stat = (*ctx->server->nsi_probe)(min_stat, ctx->ictx,
                                             name->domain);
        {
@@ -73,7 +73,7 @@ OM_uint32 GSSAPI_CALLCONV _gss_ntlm_acquire_cred
        }
        if (maj_stat)
            return maj_stat;
-    }  
+    }
     if (cred_usage == GSS_C_BOTH || cred_usage == GSS_C_INITIATE) {
        ntlm_cred cred;
 
index a7b487fb9239cd799478990f370fec05908fd399..85dc638dda58dbacb58c2730d2e240f0e328187e 100644 (file)
@@ -495,7 +495,7 @@ _gss_ntlm_wrap
 
        RC4(&ctx->u.v1.crypto_send.key, input_message_buffer->length,
            input_message_buffer->value, output_message_buffer->value);
-       
+
        ret = _gss_ntlm_get_mic(minor_status, context_handle,
                                0, input_message_buffer,
                                &trailer);
@@ -567,10 +567,10 @@ _gss_ntlm_unwrap
            output_message_buffer->length = 0;
            return GSS_S_FAILURE;
        }
-       
+
        RC4(&ctx->u.v1.crypto_recv.key, output_message_buffer->length,
            input_message_buffer->value, output_message_buffer->value);
-       
+
        trailer.value = ((unsigned char *)input_message_buffer->value) +
            output_message_buffer->length;
        trailer.length = 16;
index ef2337d7d57a5d8fc7356de996c3da643510139f..4f8e3e6828c4e90ea4e3a182f57b170dd4dd299e 100644 (file)
@@ -50,7 +50,7 @@ _gss_ntlm_display_name
        ntlm_name n = (ntlm_name)input_name;
        char *str = NULL;
        int len;
-       
+
        output_name_buffer->length = 0;
        output_name_buffer->value = NULL;
 
index 39f7e8a28f089e3a1d24a49032ddd5137c7159f5..560327f696cf8c27a1d449b99740b309355a00ee 100644 (file)
@@ -36,7 +36,7 @@
 static int
 from_file(const char *fn, const char *target_domain,
          char **username, struct ntlm_buf *key)
-{      
+{
     char *str, buf[1024];
     FILE *f;
 
@@ -247,7 +247,7 @@ _gss_ntlm_init_sec_context
        struct ntlm_buf data;
        uint32_t flags = 0;
        int ret;
-       
+
        ctx = calloc(1, sizeof(*ctx));
        if (ctx == NULL) {
            *minor_status = EINVAL;
@@ -280,23 +280,23 @@ _gss_ntlm_init_sec_context
        flags |= NTLM_NEG_KEYEX;
 
        memset(&type1, 0, sizeof(type1));
-       
+
        type1.flags = flags;
        type1.domain = name->domain;
        type1.hostname = NULL;
        type1.os[0] = 0;
        type1.os[1] = 0;
-       
+
        ret = heim_ntlm_encode_type1(&type1, &data);
        if (ret) {
            _gss_ntlm_delete_sec_context(minor_status, context_handle, NULL);
            *minor_status = ret;
            return GSS_S_FAILURE;
        }
-       
+
        output_token->value = data.data;
        output_token->length = data.length;
-       
+
        return GSS_S_CONTINUE_NEEDED;
     } else {
        krb5_error_code ret;
@@ -397,7 +397,7 @@ _gss_ntlm_init_sec_context
            struct ntlm_targetinfo ti;
 
            /* verify infotarget */
-       
+
            ret = heim_ntlm_decode_targetinfo(&type2.targetinfo, 1, &ti);
            if(ret) {
                _gss_ntlm_delete_sec_context(minor_status,
@@ -438,7 +438,7 @@ _gss_ntlm_init_sec_context
                *minor_status = ret;
                return GSS_S_FAILURE;
            }
-       
+
            ctx->flags |= NTLM_NEG_NTLM2_SESSION;
 
            ret = krb5_data_copy(&ctx->sessionkey,
@@ -469,7 +469,7 @@ _gss_ntlm_init_sec_context
                        ctx->sessionkey.length,
                        ctx->sessionkey.data);
        }
-       
+
 
 
        ret = heim_ntlm_encode_type3(&type3, &data);
index 81032be2d9c6dd15cfe3257e177141d269a0a6a1..34456db5da8f826f2e80ecccbdab9b7a5f1cffaf 100644 (file)
@@ -45,7 +45,7 @@ _gss_ntlm_iter_creds_f(OM_uint32 flags,
     krb5_context context = NULL;
     krb5_storage *request, *response;
     krb5_data response_data;
-    
+
     ret = krb5_init_context(&context);
     if (ret)
        goto done;
@@ -96,4 +96,4 @@ _gss_ntlm_iter_creds_f(OM_uint32 flags,
        krb5_free_context(context);
 #endif /* HAVE_KCM */
     (*cred_iter)(userctx, NULL, NULL);
-}               
+}
index 6ca5a4dfba4162d426dcf054717fd5661b008ac4..7d56c7510fbb9d9015932b2aba72ba01554e6b59 100644 (file)
@@ -322,7 +322,7 @@ kdc_type2(OM_uint32 *minor_status,
 
     type2.targetinfo.data = ti.data;
     type2.targetinfo.length = ti.length;
-       
+
     ret = heim_ntlm_encode_type2(&type2, &data);
     free(type2.targetname);
     krb5_data_free(&ti);
@@ -330,7 +330,7 @@ kdc_type2(OM_uint32 *minor_status,
        *minor_status = ret;
        return GSS_S_FAILURE;
     }
-       
+
     out->data = data.data;
     out->length = data.length;
 
index 45777a4fe7e861c606a1295820b47ec06f4d4bab..3a51dd3a0a6160e4a45cd3f8bd646e12c5191915 100644 (file)
@@ -434,11 +434,11 @@ acceptor_complete(OM_uint32 * minor_status,
            verify_mic = 0;
            *get_mic = 1;
        }
-       
+
        if (verify_mic || *get_mic) {
            int eret;
            size_t buf_len = 0;
-       
+
            ASN1_MALLOC_ENCODE(MechTypeList,
                               mech_buf->value, mech_buf->length,
                               &ctx->initiator_mech_types, &buf_len, eret);
@@ -449,7 +449,7 @@ acceptor_complete(OM_uint32 * minor_status,
            heim_assert(mech_buf->length == buf_len, "Internal ASN.1 error");
            UNREACHABLE(return GSS_S_FAILURE);
        }
-       
+
        if (verify_mic) {
            ret = verify_mechlist_mic(minor_status, ctx, mech_buf, mic);
            if (ret) {
@@ -500,7 +500,7 @@ acceptor_start
 
     if (input_token_buffer->length == 0)
        return send_supported_mechs (minor_status, output_token);
-       
+
     ret = _gss_spnego_alloc_sec_context(minor_status, context_handle);
     if (ret != GSS_S_COMPLETE)
        return ret;
@@ -566,7 +566,7 @@ acceptor_start
 
        if (ctx->mech_src_name != GSS_C_NO_NAME)
            gss_release_name(&junk, &ctx->mech_src_name);
-       
+
        ret = gss_accept_sec_context(minor_status,
                                     &ctx->negotiated_ctx_id,
                                     acceptor_cred_handle,
index 8c786f811a25f3059b1bba2a4031ced262fc147f..e1a929bf962035036fcb7c1d23eefa9df0ffeb63 100644 (file)
@@ -79,7 +79,7 @@ test_add(gss_cred_id_t cred_handle)
                                 NULL,
                                 &time_rec,
                                 NULL);
-                       
+
     if (GSS_ERROR(major_status))
        errx(1, "add_cred failed");
 
@@ -108,7 +108,7 @@ copy_cred(void)
                                    &time_rec);
     if (GSS_ERROR(major_status))
        errx(1, "acquire_cred failed");
-       
+
     print_time(time_rec);
 
     test_add(cred_handle);
@@ -137,7 +137,7 @@ acquire_cred_service(const char *service,
     if (service) {
        name_buffer.value = rk_UNCONST(service);
        name_buffer.length = strlen(service);
-       
+
        major_status = gss_import_name(&minor_status,
                                       &name_buffer,
                                       nametype,
@@ -205,7 +205,7 @@ usage (int ret)
 int
 main(int argc, char **argv)
 {
-    gss_OID_set oidset = GSS_C_NULL_OID_SET; 
+    gss_OID_set oidset = GSS_C_NULL_OID_SET;
     gss_OID mechoid = GSS_C_NO_OID;
     OM_uint32 maj_stat, min_stat;
     gss_cred_id_t cred;
@@ -243,7 +243,7 @@ main(int argc, char **argv)
            errx(1, "unknown type %s", acquire_type);
     } else
        flag = GSS_C_ACCEPT;
-       
+
     if (name_type) {
        if (strcasecmp("hostbased-service", name_type) == 0)
            type = GSS_C_NT_HOSTBASED_SERVICE;
@@ -263,13 +263,13 @@ main(int argc, char **argv)
 
     if (kerberos_flag) {
        mechoid = GSS_KRB5_MECHANISM;
-       
-       maj_stat = gss_create_empty_oid_set(&min_stat, &oidset); 
+
+       maj_stat = gss_create_empty_oid_set(&min_stat, &oidset);
        if (maj_stat != GSS_S_COMPLETE)
            errx(1, "gss_create_empty_oid_set: %s",
                 gssapi_err(maj_stat, min_stat, GSS_C_NO_OID));
-       
-       maj_stat = gss_add_oid_set_member(&min_stat, GSS_KRB5_MECHANISM, &oidset); 
+
+       maj_stat = gss_add_oid_set_member(&min_stat, GSS_KRB5_MECHANISM, &oidset);
        if (maj_stat != GSS_S_COMPLETE)
            errx(1, "gss_add_oid_set_member: %s",
                 gssapi_err(maj_stat, min_stat, GSS_C_NO_OID));
@@ -278,10 +278,10 @@ main(int argc, char **argv)
     if (target_name) {
        gss_buffer_desc name;
 
-       name.value = target_name; 
-       name.length = strlen(target_name); 
+       name.value = target_name;
+       name.length = strlen(target_name);
        maj_stat = gss_import_name(&min_stat, &name,
-                                  GSS_C_NT_HOSTBASED_SERVICE, &target); 
+                                  GSS_C_NT_HOSTBASED_SERVICE, &target);
        if (maj_stat != GSS_S_COMPLETE)
            errx(1, "gss_import_name: %s",
                 gssapi_err(maj_stat, min_stat, GSS_C_NO_OID));
@@ -293,14 +293,14 @@ main(int argc, char **argv)
 
        if (enctype) {
            int32_t enctypelist = enctype;
-           
-           maj_stat = gss_krb5_set_allowable_enctypes(&min_stat, cred, 
-                                                      1, &enctypelist); 
+
+           maj_stat = gss_krb5_set_allowable_enctypes(&min_stat, cred,
+                                                      1, &enctypelist);
            if (maj_stat)
                errx(1, "gss_krb5_set_allowable_enctypes: %s",
                     gssapi_err(maj_stat, min_stat, GSS_C_NO_OID));
        }
-       
+
        if (target) {
            gss_ctx_id_t context = GSS_C_NO_CONTEXT;
            gss_buffer_desc out;
@@ -308,12 +308,12 @@ main(int argc, char **argv)
            out.length = 0;
            out.value = NULL;
 
-           maj_stat = gss_init_sec_context(&min_stat, 
-                                           cred, &context, 
-                                           target, mechoid, 
+           maj_stat = gss_init_sec_context(&min_stat,
+                                           cred, &context,
+                                           target, mechoid,
                                            GSS_C_MUTUAL_FLAG, 0, NULL,
-                                           GSS_C_NO_BUFFER, NULL, 
-                                           &out, NULL, NULL); 
+                                           GSS_C_NO_BUFFER, NULL,
+                                           &out, NULL, NULL);
            if (maj_stat != GSS_S_COMPLETE && maj_stat != GSS_S_CONTINUE_NEEDED)
                errx(1, "init_sec_context failed: %s",
                     gssapi_err(maj_stat, min_stat, GSS_C_NO_OID));
index b2f9ff8058636a2fe737ea00e54180e8fe673916..8251aef867c509e8a05716e011c49e21ff65dbf0 100644 (file)
@@ -49,7 +49,7 @@ gssapi_err(OM_uint32 maj_stat, OM_uint32 min_stat, gss_OID mech)
        maj_error_message.value = NULL;
        min_error_message.length = 0;
        min_error_message.value = NULL;
-       
+
        disp_maj_stat = gss_display_status(&disp_min_stat, maj_stat,
                                           GSS_C_GSS_CODE,
                                           mech, &msg_ctx, &maj_error_message);
index e91738e64309d25e09e0eae08c1a69231895fa9c..bdf445e6a967932dd6f389678b43b188553762ab 100644 (file)
@@ -211,7 +211,7 @@ loop(gss_OID mechoid,
            ;
        else
            server_done = 1;
-    }  
+    }
     if (output_token.length != 0)
        gss_release_buffer(&min_stat, &output_token);
     if (input_token.length != 0)
@@ -361,10 +361,10 @@ wrapunwrap_iov(gss_ctx_id_t cctx, gss_ctx_id_t sctx, int flags, gss_OID mechoid)
        errx(1, "gss_wrap_iov failed");
 
     token.length =
-       iov[0].buffer.length + 
+       iov[0].buffer.length +
        iov[1].buffer.length +
        iov[2].buffer.length +
-       iov[3].buffer.length + 
+       iov[3].buffer.length +
        iov[4].buffer.length +
        iov[5].buffer.length;
     token.data = emalloc(token.length);
@@ -402,11 +402,11 @@ wrapunwrap_iov(gss_ctx_id_t cctx, gss_ctx_id_t sctx, int flags, gss_OID mechoid)
     } else {
        maj_stat = gss_unwrap_iov(&min_stat, sctx, &conf_state2, &qop_state,
                                  iov, iov_len);
-       
+
        if (maj_stat != GSS_S_COMPLETE)
            errx(1, "gss_unwrap_iov failed: %x %s", flags,
                 gssapi_err(maj_stat, min_stat, mechoid));
-       
+
     }
     if (conf_state2 != conf_state)
        errx(1, "conf state wrong for iov: %x", flags);
@@ -448,7 +448,7 @@ empty_release(void)
     gss_name_t name = GSS_C_NO_NAME;
     gss_OID_set oidset = GSS_C_NO_OID_SET;
     OM_uint32 junk;
-    
+
     gss_delete_sec_context(&junk, &ctx, NULL);
     gss_release_cred(&junk, &cred);
     gss_release_name(&junk, &name);
@@ -620,7 +620,7 @@ main(int argc, char **argv)
            errx(1, "client_cred missing");
 
        maj_stat = gss_krb5_set_allowable_enctypes(&min_stat, client_cred,
-                                                  1, &limit_enctype); 
+                                                  1, &limit_enctype);
        if (maj_stat)
            errx(1, "gss_krb5_set_allowable_enctypes: %s",
                 gssapi_err(maj_stat, min_stat, GSS_C_NO_OID));
@@ -654,7 +654,7 @@ main(int argc, char **argv)
        ret = krb5_timeofday(context, &now);
        if (ret)
            errx(1, "krb5_timeofday failed");
-       
+
        /* client */
        maj_stat = gss_krb5_export_lucid_sec_context(&min_stat,
                                                     &cctx,
@@ -663,13 +663,13 @@ main(int argc, char **argv)
        if (maj_stat != GSS_S_COMPLETE)
            errx(1, "gss_krb5_export_lucid_sec_context failed: %s",
                 gssapi_err(maj_stat, min_stat, actual_mech));
-       
-       
+
+
        maj_stat = gss_krb5_free_lucid_sec_context(&maj_stat, ctx);
        if (maj_stat != GSS_S_COMPLETE)
            errx(1, "gss_krb5_free_lucid_sec_context failed: %s",
                     gssapi_err(maj_stat, min_stat, actual_mech));
-       
+
        /* server */
        maj_stat = gss_krb5_export_lucid_sec_context(&min_stat,
                                                     &sctx,
@@ -692,7 +692,7 @@ main(int argc, char **argv)
 
        if (time > now)
            errx(1, "gsskrb5_extract_authtime_from_sec_context failed: "
-                "time authtime is before now: %ld %ld", 
+                "time authtime is before now: %ld %ld",
                 (long)time, (long)now);
 
        maj_stat = gsskrb5_extract_service_keyblock(&min_stat,
@@ -716,7 +716,7 @@ main(int argc, char **argv)
            keyblock = NULL;
        else if (limit_enctype && keyblock->keytype != limit_enctype)
            errx(1, "gsskrb5_get_subkey wrong enctype");
-       
+
        maj_stat = gsskrb5_get_subkey(&min_stat,
                                      cctx,
                                      &keyblock2);
@@ -751,7 +751,7 @@ main(int argc, char **argv)
            ret = krb5_string_to_enctype(context,
                                         session_enctype_string,
                                         &enctype);
-       
+
            if (ret)
                krb5_err(context, 1, ret, "krb5_string_to_enctype");
 
@@ -803,7 +803,7 @@ main(int argc, char **argv)
            errx(1, "prf len mismatch");
        if (memcmp(out1.value, out2.value, out1.length) != 0)
            errx(1, "prf data mismatch");
-       
+
        gss_release_buffer(&min_stat, &out1);
 
        gss_pseudo_random(&min_stat, sctx, GSS_C_PRF_KEY_FULL, &in,
@@ -896,7 +896,7 @@ main(int argc, char **argv)
        gss_buffer_desc cb;
 
        if (verbose_flag)
-           printf("checking actual mech (%s) on delegated cred\n", 
+           printf("checking actual mech (%s) on delegated cred\n",
                   oid_to_string(actual_mech));
        loop(actual_mech, nameoid, argv[0], deleg_cred, &sctx, &cctx, &actual_mech2, &cred2);
 
@@ -928,12 +928,12 @@ main(int argc, char **argv)
            if (maj_stat != GSS_S_COMPLETE)
                errx(1, "import failed: %s",
                     gssapi_err(maj_stat, min_stat, NULL));
-           
+
            gss_release_buffer(&min_stat, &cb);
            gss_release_cred(&min_stat, &deleg_cred);
-           
+
            if (verbose_flag)
-               printf("checking actual mech (%s) on export/imported cred\n", 
+               printf("checking actual mech (%s) on export/imported cred\n",
                       oid_to_string(actual_mech));
            loop(actual_mech, nameoid, argv[0], cred2, &sctx, &cctx,
                 &actual_mech2, &deleg_cred);
@@ -950,7 +950,7 @@ main(int argc, char **argv)
                 &actual_mech2, &deleg_cred);
 
            gss_release_cred(&min_stat, &deleg_cred);
-           
+
            gss_delete_sec_context(&min_stat, &cctx, NULL);
            gss_delete_sec_context(&min_stat, &sctx, NULL);
 
@@ -963,7 +963,7 @@ main(int argc, char **argv)
     }
 
     empty_release();
-    
+
     krb5_free_context(context);
 
     return 0;
index 87b1c2b8953a155be74139131b59995fb445efc0..23428050d1e85f86293600651386e1884d0b8a5c 100644 (file)
@@ -99,7 +99,7 @@ acquire_release_loop(gss_name_t name, int counter, gss_cred_usage_t usage)
        if (maj_stat != GSS_S_COMPLETE)
            gss_err(1, min_stat, "aquire %d %d != GSS_S_COMPLETE",
                    i, (int)maj_stat);
-                               
+
        maj_stat = gss_release_cred(&min_stat, &cred);
        if (maj_stat != GSS_S_COMPLETE)
            gss_err(1, min_stat, "release %d %d != GSS_S_COMPLETE",
@@ -135,7 +135,7 @@ acquire_add_release_add(gss_name_t name, gss_cred_usage_t usage)
                            NULL,
                            NULL,
                            NULL);
-                       
+
     if (maj_stat != GSS_S_COMPLETE)
        gss_err(1, min_stat, "add_cred %d != GSS_S_COMPLETE", (int)maj_stat);
 
index 7efac1cf4252c190b653f358ff1ddc57ff7ede39..a22d4ec9b8be75d05b5b2acff396463f1e9cfedb 100644 (file)
@@ -101,7 +101,7 @@ copy_import(void)
        errx(1, "gss_compare_name");
     if (!equal)
        errx(1, "names not equal");
-       
+
     if (lifetime1 != lifetime2)
        errx(1, "lifetime not equal %lu != %lu",
             (unsigned long)lifetime1, (unsigned long)lifetime2);
@@ -125,7 +125,7 @@ copy_import(void)
        errx(1, "gss_compare_name");
     if (!equal)
        errx(1, "names not equal");
-       
+
     if (lifetime1 != lifetime2)
        errx(1, "lifetime not equal %lu != %lu",
             (unsigned long)lifetime1, (unsigned long)lifetime2);
index a7b357ac6bf10dd0a95345e248c6325933ff3f18..4a27a94aa4f99c3abaaaf725b27068da2f6055e9 100644 (file)
@@ -1057,7 +1057,7 @@ static void camellia_encrypt128(const u32 *subkey, u32 *io)
     io[1] = io[3];
     io[2] = t0;
     io[3] = t1;
-       
+
     return;
 }
 
@@ -1275,7 +1275,7 @@ static void camellia_decrypt256(const u32 *subkey, u32 *io)
     /* pre whitening but absorb kw2*/
     io[0] ^= CamelliaSubkeyL(32);
     io[1] ^= CamelliaSubkeyR(32);
-       
+
     /* main iteration */
     CAMELLIA_ROUNDSM(io[0],io[1],
                     CamelliaSubkeyL(31),CamelliaSubkeyR(31),
index 43ff8a3f502c14878ad7ddd0e0db110b3c605558..2e3192bff8ad86755ee42c716ba966da16e0e136 100644 (file)
@@ -254,10 +254,10 @@ DES_set_key_unchecked(DES_cblock *key, DES_key_schedule *ks)
 
     for (i = 0; i < 16; i++) {
        uint32_t kc, kd;
-       
+
        ROTATE_LEFT28(c, shifts[i]);
        ROTATE_LEFT28(d, shifts[i]);
-       
+
        kc = pc2_c_1[(c >> 22) & 0x3f] |
            pc2_c_2[((c >> 16) & 0x30) | ((c >> 15) & 0xf)] |
            pc2_c_3[((c >> 9 ) & 0x3c) | ((c >> 8 ) & 0x3)] |
@@ -780,7 +780,7 @@ DES_cbc_cksum(const void *in, DES_cblock *output,
        u[0] ^= uiv[0]; u[1] ^= uiv[1];
        DES_encrypt(u, ks, 1);
        uiv[0] = u[0]; uiv[1] = u[1];
-       
+
        length -= DES_CBLOCK_LEN;
        input += DES_CBLOCK_LEN;
     }
index 99eb76c818e78ea3eb8f9b1945a6e42f198874ea..0824408c47faa056796a4c89d0c6994c7b1dce05 100644 (file)
@@ -87,7 +87,7 @@ typedef struct DES_key_schedule
 #ifndef HC_DEPRECATED
 #if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1 )))
 #define HC_DEPRECATED __attribute__((deprecated))
-#elif defined(_MSC_VER) && (_MSC_VER>1200) 
+#elif defined(_MSC_VER) && (_MSC_VER>1200)
 #define HC_DEPRECATED __declspec(deprecated)
 #else
 #define HC_DEPRECATED
index b348eaaff3733d307fa23aa433fa8c0f1b3636e5..2f70d8bee87e206a553697d9dafcbfb22a530097 100644 (file)
@@ -493,7 +493,7 @@ main(int argc, char **argv)
              24,
              0x14a5029a,
              "\x33\xd2\xb5\x8a\x14\xa5\x02\x9a");
-       
+
     cbc_cksum("\xfb\x89\xa1\x9d\xa7\xec\xc1\x5e",
              "\x9c\x7f\x47\xd0\x79\x5d\x4b\x97",
              "\xb6\x8b\x48\xe0\x01\x78\xec\x50\x7f\xf1\xfd\xd2\x87\x76\xba\x4b\x9c\x5c\xc7\x25",
@@ -599,7 +599,7 @@ main(int argc, char **argv)
               "\x38\xef\x49\xbc\xdd\xbb\x6b\x73\xc0\xd7\xa6\x70\xe0\x1b\xde\x8d\xe6\xb4\xc6\x69\xca\x5e\x1e");
 
     weak_test(1, "\x01\x01\x01\x01\x01\x01\x01\x01"); /* weak keys */
-    weak_test(1, "\x01\x01\x01\x01\x01\x01\x01\x01"); 
+    weak_test(1, "\x01\x01\x01\x01\x01\x01\x01\x01");
     weak_test(1, "\xFE\xFE\xFE\xFE\xFE\xFE\xFE\xFE");
     weak_test(1, "\x1F\x1F\x1F\x1F\x0E\x0E\x0E\x0E");
     weak_test(1, "\xE0\xE0\xE0\xE0\xF1\xF1\xF1\xF1");
index f66cd5aff2e2a5e62a6c3448696c8588fe0a252d..6af43cf044ee4483a61c057e9e4751fb7b9654ed 100644 (file)
@@ -112,11 +112,11 @@ ltm_dh_generate_key(DH *dh)
            BN_free(dh->pub_key);
 
        mp_init_multi(&pub, &priv_key, &g, &p, NULL);
-       
+
        BN2mpz(&priv_key, dh->priv_key);
        BN2mpz(&g, dh->g);
        BN2mpz(&p, dh->p);
-       
+
        res = mp_exptmod(&g, &priv_key, &p, &pub);
 
        mp_clear_multi(&priv_key, &g, &p, NULL);
@@ -127,7 +127,7 @@ ltm_dh_generate_key(DH *dh)
        mp_clear(&pub);
        if (dh->pub_key == NULL)
            return 0;
-       
+
        if (DH_check_pubkey(dh, dh->pub_key, &codes) && codes == 0)
            break;
        if (have_private_key)
index 7b6eba4e5640654fe03e3683631d0fff444f52ae..0ebba6ffe77ea24b7639250ae9ba665f7fbeeef2 100644 (file)
@@ -112,11 +112,11 @@ tfm_dh_generate_key(DH *dh)
            BN_free(dh->pub_key);
 
        fp_init_multi(&pub, &priv_key, &g, &p, NULL);
-       
+
        BN2mpz(&priv_key, dh->priv_key);
        BN2mpz(&g, dh->g);
        BN2mpz(&p, dh->p);
-       
+
        res = fp_exptmod(&g, &priv_key, &p, &pub);
 
        fp_zero(&priv_key);
@@ -129,7 +129,7 @@ tfm_dh_generate_key(DH *dh)
        fp_zero(&pub);
        if (dh->pub_key == NULL)
            return 0;
-       
+
        if (DH_check_pubkey(dh, dh->pub_key, &codes) && codes == 0)
            break;
        if (have_private_key)
index 8ff3b0c9168da902afdb64d36634e733e60f6749..a41efdb68c4bcc425d7c616ef6563eee85be878e 100644 (file)
@@ -91,7 +91,7 @@ EC_KEY *
 EC_KEY_new_by_curve_name(EC_GROUP_ID nid)
 {
     EC_KEY *key;
-    
+
     key = calloc(1, sizeof(*key));
     return key;
 }
index ab715a782b2963ad214db6bd7afa7b122e4a1426..84886f4078fe0bf779a073b2cf5497190d4a936e 100644 (file)
@@ -42,7 +42,7 @@
 
 int ECDSA_verify(int, const unsigned char *, unsigned int,
                 unsigned char *, unsigned int, EC_KEY *);
-            
+
 int ECDSA_sign(int, const unsigned char *, unsigned int,
               unsigned char *, unsigned int *, EC_KEY *);
 
index 15853420f6de5d7501533c683993c771e8ba3ffb..3b22e56201120cb3f6503b11df0e59e8618194b4 100644 (file)
@@ -339,7 +339,7 @@ ENGINE_by_dso(const char *path, const char *id)
            dlclose(handle);
            free(engine);
            return NULL;
-       }       
+       }
     }
 
     {
@@ -357,7 +357,7 @@ ENGINE_by_dso(const char *path, const char *id)
            dlclose(handle);
            free(engine);
            return NULL;
-       }       
+       }
     }
 
     ENGINE_up_ref(engine);
index 7bd066fd5dccb8e446c22e6b404aa67a5a55166a..75eefc49312e3acbf241e2eb591939280c9239bc 100644 (file)
@@ -415,7 +415,7 @@ EVP_sha1(void)
 
 const EVP_MD *
 EVP_sha(void) HC_DEPRECATED
-    
+
 {
     hcrypto_validate();
     return EVP_sha1();
@@ -875,7 +875,7 @@ EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, void *out, int *outlen,
            ctx->buf_len += inlen;
            return 1;
        }
-       
+
        /* fill in local buffer and encrypt */
        memcpy(ctx->buf + ctx->buf_len, in, left);
        ret = (*ctx->cipher->do_cipher)(ctx, out, ctx->buf, blocksize);
@@ -893,7 +893,7 @@ EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, void *out, int *outlen,
     if (inlen) {
        ctx->buf_len = (inlen & ctx->block_mask);
        inlen &= ~ctx->block_mask;
-       
+
        ret = (*ctx->cipher->do_cipher)(ctx, out, in, inlen);
        if (ret != 1)
            return ret;
index c56eedec45b29956a679e81f54e0bcc863437658..626c46329614b1510f8500085319eab256f4bb4d 100644 (file)
@@ -195,7 +195,7 @@ struct hc_evp_md {
 #ifndef HC_DEPRECATED
 #if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1 )))
 #define HC_DEPRECATED __attribute__((deprecated))
-#elif defined(_MSC_VER) && (_MSC_VER>1200) 
+#elif defined(_MSC_VER) && (_MSC_VER>1200)
 #define HC_DEPRECATED __declspec(deprecated)
 #else
 #define HC_DEPRECATED
index fe182bf6bb2dd718f0c375261e41d5de706c7e16..f07ba8f9989075aa1b0d8860e3e00b32c48283c0 100644 (file)
@@ -117,7 +117,7 @@ main(int argc, char **argv)
      */
     EVP_CIPHER_CTX_init(&ctx);
     EVP_CipherInit_ex(&ctx, c, NULL, key, ivec, encryptp);
-       
+
     /* read in buffer */
     while ((ilen = fread(ibuf, 1, block_size, in)) > 0) {
        /* encrypto/decrypt */
index ff03dfffe3d9769d62bbb78a64ae4242951c94fa..f4780d8e8ccde36215ee6ae1dc29968ccb85c005 100644 (file)
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* computes the modular inverse via binary extended euclidean algorithm, 
- * that is c = 1/a mod b 
+/* computes the modular inverse via binary extended euclidean algorithm,
+ * that is c = 1/a mod b
  *
- * Based on slow invmod except this is optimized for the case where b is 
+ * Based on slow invmod except this is optimized for the case where b is
  * odd as per HAC Note 14.64 on pp. 610
  */
 int fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c)
index 91e10d670fe1d577eb6ac9dfa88383f998b4bf8b..90f161b102318838e7de84ad6935f9eebcf16d9d 100644 (file)
 
 /* Fast (comba) multiplier
  *
- * This is the fast column-array [comba] multiplier.  It is 
- * designed to compute the columns of the product first 
- * then handle the carries afterwards.  This has the effect 
+ * This is the fast column-array [comba] multiplier.  It is
+ * designed to compute the columns of the product first
+ * then handle the carries afterwards.  This has the effect
  * of making the nested loops that compute the columns very
  * simple and schedulable on super-scalar processors.
  *
- * This has been modified to produce a variable number of 
- * digits of output so if say only a half-product is required 
- * you don't have to compute the upper half (a feature 
+ * This has been modified to produce a variable number of
+ * digits of output so if say only a half-product is required
+ * you don't have to compute the upper half (a feature
  * required for fast Barrett reduction).
  *
  * Based on Algorithm 14.12 on pp.595 of HAC.
@@ -49,7 +49,7 @@ int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs)
 
   /* clear the carry */
   _W = 0;
-  for (ix = 0; ix < pa; ix++) { 
+  for (ix = 0; ix < pa; ix++) {
       int      tx, ty;
       int      iy;
       mp_digit *tmpx, *tmpy;
@@ -62,7 +62,7 @@ int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs)
       tmpx = a->dp + tx;
       tmpy = b->dp + ty;
 
-      /* this is the number of times the loop will iterrate, essentially 
+      /* this is the number of times the loop will iterrate, essentially
          while (tx++ < a->used && ty-- >= 0) { ... }
        */
       iy = MIN(a->used-tx, ty+1);
index 5b114d717abec2bbfbde0d64ac90808d2d28e25f..a03b9f1324f82acab75ffe63dc143df8fc51dde1 100644 (file)
@@ -41,7 +41,7 @@ int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs)
   /* number of output digits to produce */
   pa = a->used + b->used;
   _W = 0;
-  for (ix = digs; ix < pa; ix++) { 
+  for (ix = digs; ix < pa; ix++) {
       int      tx, ty, iy;
       mp_digit *tmpx, *tmpy;
 
@@ -53,7 +53,7 @@ int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs)
       tmpx = a->dp + tx;
       tmpy = b->dp + ty;
 
-      /* this is the number of times the loop will iterrate, essentially its 
+      /* this is the number of times the loop will iterrate, essentially its
          while (tx++ < a->used && ty-- >= 0) { ... }
        */
       iy = MIN(a->used-tx, ty+1);
@@ -69,7 +69,7 @@ int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs)
       /* make next carry */
       _W = _W >> ((mp_word)DIGIT_BIT);
   }
-  
+
   /* setup dest */
   olduse  = c->used;
   c->used = pa;
index 19e92ef1807f2772ead6743256de93eab82fecba..848eaf04630f7481cfbc20158f5c98a1400f766f 100644 (file)
  */
 
 /* the jist of squaring...
- * you do like mult except the offset of the tmpx [one that 
- * starts closer to zero] can't equal the offset of tmpy.  
+ * you do like mult except the offset of the tmpx [one that
+ * starts closer to zero] can't equal the offset of tmpy.
  * So basically you set up iy like before then you min it with
- * (ty-tx) so that it never happens.  You double all those 
+ * (ty-tx) so that it never happens.  You double all those
  * you add in the inner loop
 
 After that loop you do the squares and add them in.
@@ -41,7 +41,7 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b)
 
   /* number of output digits to produce */
   W1 = 0;
-  for (ix = 0; ix < pa; ix++) { 
+  for (ix = 0; ix < pa; ix++) {
       int      tx, ty, iy;
       mp_word  _W;
       mp_digit *tmpy;
@@ -62,7 +62,7 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b)
        */
       iy = MIN(a->used-tx, ty+1);
 
-      /* now for squaring tx can never equal ty 
+      /* now for squaring tx can never equal ty
        * we halve the distance since they approach at a rate of 2x
        * and we have to round because odd cases need to be executed
        */
index f422ffc9946b457a9c53c5ce3ad46b5aaee10972..11a508c7fb73c71873a30ea39ee68b6495d8e115 100644 (file)
@@ -15,7 +15,7 @@
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* computes a = 2**b 
+/* computes a = 2**b
  *
  * Simple algorithm which zeroes the int, grows it then just sets one bit
  * as required.
index 09dd7229eb5d69773780a57aa1257436019e41c0..d97e8db05f137d9689f5af2d1040d1c4f563015b 100644 (file)
@@ -15,7 +15,7 @@
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* b = |a| 
+/* b = |a|
  *
  * Simple function copies the input and fixes the sign to positive
  */
index 359c2ff24d2a173950a3d30b94930eac18760b0c..2a565e8dbd285b2b8f7fe8c67ffcff72ee7c1c03 100644 (file)
@@ -15,7 +15,7 @@
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* trim unused digits 
+/* trim unused digits
  *
  * This is used to ensure that leading zero digits are
  * trimed and the leading "used" digit will be non-zero
index daaea79a3bd0ec49b47fda7f2b92577ffab10020..e5e3da340aea90acc05fcc6119eaac7d6b920acf 100644 (file)
@@ -16,7 +16,7 @@
  */
 #include <stdarg.h>
 
-void mp_clear_multi(mp_int *mp, ...) 
+void mp_clear_multi(mp_int *mp, ...)
 {
     mp_int* next_mp = mp;
     va_list args;
index 533f36bf931c739ca064b952197fc86535a5748f..ccd2c8eb9b9b4f724f8c1583a60ec4415e5715e5 100644 (file)
@@ -27,7 +27,7 @@ mp_cmp (mp_int * a, mp_int * b)
         return MP_GT;
      }
   }
-  
+
   /* compare digits */
   if (a->sign == MP_NEG) {
      /* if negative compare opposite direction */
index 693eb7cc7294db0b0df712e149fbd236754aba09..4a505238a031db3b934abf4d94d6c9fc3cee8268 100644 (file)
@@ -25,7 +25,7 @@ int mp_cmp_mag (mp_int * a, mp_int * b)
   if (a->used > b->used) {
     return MP_GT;
   }
-  
+
   if (a->used < b->used) {
     return MP_LT;
   }
index 66d1a74714b577623d09fcbde06a6845de9a6296..2d4a8d4f0f201e6682bbe199fad01b0c0d9278b6 100644 (file)
@@ -15,7 +15,7 @@
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-static const int lnz[16] = { 
+static const int lnz[16] = {
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
 };
 
index 8bc5657a333583d116e20c35d63d7f5ddc6b0cdb..5dfd5f375cb66d8ad661c18aa180b6c5f0472825 100644 (file)
@@ -29,7 +29,7 @@ mp_count_bits (mp_int * a)
 
   /* get number of digits and add that */
   r = (a->used - 1) * DIGIT_BIT;
-  
+
   /* take the last digit and count the bits in it */
   q = a->dp[a->used - 1];
   while (q > ((mp_digit) 0)) {
index aee9c94324d40fb708c2795d34edafd75a29415c..2c364b396fc02c43c5fe6b13d54940010ed9a52f 100644 (file)
@@ -40,7 +40,7 @@ int mp_div(mp_int * a, mp_int * b, mp_int * c, mp_int * d)
     }
     return res;
   }
-       
+
   /* init our temps */
   if ((res = mp_init_multi(&ta, &tb, &tq, &q, NULL) != MP_OKAY)) {
      return res;
@@ -50,7 +50,7 @@ int mp_div(mp_int * a, mp_int * b, mp_int * c, mp_int * d)
   mp_set(&tq, 1);
   n = mp_count_bits(a) - mp_count_bits(b);
   if (((res = mp_abs(a, &ta)) != MP_OKAY) ||
-      ((res = mp_abs(b, &tb)) != MP_OKAY) || 
+      ((res = mp_abs(b, &tb)) != MP_OKAY) ||
       ((res = mp_mul_2d(&tb, n, &tb)) != MP_OKAY) ||
       ((res = mp_mul_2d(&tq, n, &tq)) != MP_OKAY)) {
       goto LBL_ERR;
@@ -87,17 +87,17 @@ LBL_ERR:
 
 #else
 
-/* integer signed division. 
+/* integer signed division.
  * c*b + d == a [e.g. a/b, c=quotient, d=remainder]
  * HAC pp.598 Algorithm 14.20
  *
- * Note that the description in HAC is horribly 
- * incomplete.  For example, it doesn't consider 
- * the case where digits are removed from 'x' in 
- * the inner loop.  It also doesn't consider the 
+ * Note that the description in HAC is horribly
+ * incomplete.  For example, it doesn't consider
+ * the case where digits are removed from 'x' in
+ * the inner loop.  It also doesn't consider the
  * case that y has fewer than three digits, etc..
  *
- * The overall algorithm is as described as 
+ * The overall algorithm is as described as
  * 14.20 from HAC but fixed to treat these cases.
 */
 int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d)
@@ -187,7 +187,7 @@ int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d)
       continue;
     }
 
-    /* step 3.1 if xi == yt then set q{i-t-1} to b-1, 
+    /* step 3.1 if xi == yt then set q{i-t-1} to b-1,
      * otherwise set q{i-t-1} to (xi*b + x{i-1})/yt */
     if (x.dp[i] == y.dp[t]) {
       q.dp[i - t - 1] = ((((mp_digit)1) << DIGIT_BIT) - 1);
@@ -201,10 +201,10 @@ int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d)
       q.dp[i - t - 1] = (mp_digit) (tmp & (mp_word) (MP_MASK));
     }
 
-    /* while (q{i-t-1} * (yt * b + y{t-1})) > 
-             xi * b**2 + xi-1 * b + xi-2 
-     
-       do q{i-t-1} -= 1; 
+    /* while (q{i-t-1} * (yt * b + y{t-1})) >
+             xi * b**2 + xi-1 * b + xi-2
+
+       do q{i-t-1} -= 1;
     */
     q.dp[i - t - 1] = (q.dp[i - t - 1] + 1) & MP_MASK;
     do {
@@ -255,10 +255,10 @@ int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d)
     }
   }
 
-  /* now q is the quotient and x is the remainder 
-   * [which we have to normalize] 
+  /* now q is the quotient and x is the remainder
+   * [which we have to normalize]
    */
-  
+
   /* get sign before writing to c */
   x.sign = x.used == 0 ? MP_ZPOS : a->sign;
 
index 3c60269ecea8a7dbe5e69c6b2ee77dc01e7f67f9..78e2381b6e73ec222026dc4e88b428c8f1d90c64 100644 (file)
@@ -23,14 +23,14 @@ mp_div_3 (mp_int * a, mp_int *c, mp_digit * d)
   mp_word  w, t;
   mp_digit b;
   int      res, ix;
-  
+
   /* b = 2**DIGIT_BIT / 3 */
   b = (((mp_word)1) << ((mp_word)DIGIT_BIT)) / ((mp_word)3);
 
   if ((res = mp_init_size(&q, a->used)) != MP_OKAY) {
      return res;
   }
-  
+
   q.used = a->used;
   q.sign = a->sign;
   w = 0;
@@ -68,7 +68,7 @@ mp_div_3 (mp_int * a, mp_int *c, mp_digit * d)
      mp_exch(&q, c);
   }
   mp_clear(&q);
-  
+
   return res;
 }
 
index 6a26d4f0cf64145aab95dc326110a08430aac093..7bd372c20d3783b0e1ae4cfbdf8b3ff93662dec1 100644 (file)
@@ -79,13 +79,13 @@ int mp_div_d (mp_int * a, mp_digit b, mp_int * c, mp_digit * d)
   if ((res = mp_init_size(&q, a->used)) != MP_OKAY) {
      return res;
   }
-  
+
   q.used = a->used;
   q.sign = a->sign;
   w = 0;
   for (ix = a->used - 1; ix >= 0; ix--) {
      w = (w << ((mp_word)DIGIT_BIT)) | ((mp_word)a->dp[ix]);
-     
+
      if (w >= b) {
         t = (mp_digit)(w / b);
         w -= ((mp_word)t) * ((mp_word)b);
@@ -94,17 +94,17 @@ int mp_div_d (mp_int * a, mp_digit b, mp_int * c, mp_digit * d)
       }
       q.dp[ix] = (mp_digit)t;
   }
-  
+
   if (d != NULL) {
      *d = (mp_digit)w;
   }
-  
+
   if (c != NULL) {
      mp_clamp(&q);
      mp_exch(&q, c);
   }
   mp_clear(&q);
-  
+
   return res;
 }
 
index 1d7d856ef0a00e5f681f751feafc84550d1455f6..b7d5ed7c03e1925ae7b8d567e94a8c4c5f34f355 100644 (file)
@@ -21,7 +21,7 @@ void mp_dr_setup(mp_int *a, mp_digit *d)
    /* the casts are required if DIGIT_BIT is one less than
     * the number of bits in a mp_digit [e.g. DIGIT_BIT==31]
     */
-   *d = (mp_digit)((((mp_word)1) << ((mp_word)DIGIT_BIT)) - 
+   *d = (mp_digit)((((mp_word)1) << ((mp_word)DIGIT_BIT)) -
         ((mp_word)a->dp[0]));
 }
 
index 38574e0a5e90bb19d7c1e92267138a0cba806d98..ee551bc3e19607a642b3024b6748615e1afbcab2 100644 (file)
@@ -15,7 +15,7 @@
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* swap the elements of two integers, for cases where you can't simply swap the 
+/* swap the elements of two integers, for cases where you can't simply swap the
  * mp_int pointers around
  */
 void
index 023191657ab36caa485ff43ab08d152f132dae8f..56d7c11d26e48ccb6ba5fcc31f3c3632f5cc4df6 100644 (file)
@@ -59,7 +59,7 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y)
      err = mp_exptmod(&tmpG, &tmpX, P, Y);
      mp_clear_multi(&tmpG, &tmpX, NULL);
      return err;
-#else 
+#else
      /* no invmod */
      return MP_VAL;
 #endif
@@ -86,7 +86,7 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y)
      dr = mp_reduce_is_2k(P) << 1;
   }
 #endif
-    
+
   /* if the modulus is odd or dr != 0 use the montgomery method */
 #ifdef BN_MP_EXPTMOD_FAST_C
   if (mp_isodd (P) == 1 || dr !=  0) {
index 2a3b3c9e8169e5a463998006e4af145538dc38ea..64fbe7fe21075c72abc327a4b8ac62dab87266e3 100644 (file)
@@ -84,7 +84,7 @@ int mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode
 
   /* determine and setup reduction code */
   if (redmode == 0) {
-#ifdef BN_MP_MONTGOMERY_SETUP_C     
+#ifdef BN_MP_MONTGOMERY_SETUP_C
      /* now setup montgomery  */
      if ((err = mp_montgomery_setup (P, &mp)) != MP_OKAY) {
         goto LBL_M;
@@ -99,7 +99,7 @@ int mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode
      if (((P->used * 2 + 1) < MP_WARRAY) &&
           P->used < (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) {
         redux = fast_mp_montgomery_reduce;
-     } else 
+     } else
 #endif
      {
 #ifdef BN_MP_MONTGOMERY_REDUCE_C
@@ -150,7 +150,7 @@ int mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode
      if ((err = mp_montgomery_calc_normalization (&res, P)) != MP_OKAY) {
        goto LBL_RES;
      }
-#else 
+#else
      err = MP_VAL;
      goto LBL_RES;
 #endif
index e6c4ce2b85394b6ed6454b0fb63855704810369f..daf0c95ea6ff1c8e8315c9129db409926ce8b109 100644 (file)
@@ -15,7 +15,7 @@
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* Extended euclidean algorithm of (a, b) produces 
+/* Extended euclidean algorithm of (a, b) produces
    a*u1 + b*u2 = u3
  */
 int mp_exteuclid(mp_int *a, mp_int *b, mp_int *U1, mp_int *U2, mp_int *U3)
index 0458744fc754a018ca9ede900d0ddcf663979a71..ef7b6532c5cd081e38903358278f512080d2c977 100644 (file)
@@ -1,7 +1,7 @@
 /* TomsFastMath, a fast ISO C bignum library.
- * 
+ *
  * This project is public domain and free for all purposes.
- * 
+ *
  * Love Hornquist Astrand <lha@h5l.org>
  */
 #include <tommath.h>
index b344b6f05def18b7b67d70ad8593b750a8c50767..52f7f32f0d10e4c2377cd2f55a1950c3c12ab79a 100644 (file)
 int mp_fread(mp_int *a, int radix, FILE *stream)
 {
    int err, ch, neg, y;
-   
+
    /* clear a */
    mp_zero(a);
-   
+
    /* if first digit is - then set negative */
    ch = fgetc(stream);
    if (ch == '-') {
@@ -31,7 +31,7 @@ int mp_fread(mp_int *a, int radix, FILE *stream)
    } else {
       neg = MP_ZPOS;
    }
-   
+
    for (;;) {
       /* find y in the radix map */
       for (y = 0; y < radix; y++) {
@@ -42,7 +42,7 @@ int mp_fread(mp_int *a, int radix, FILE *stream)
       if (y == radix) {
          break;
       }
-      
+
       /* shift up and add */
       if ((err = mp_mul_d(a, radix, a)) != MP_OKAY) {
          return err;
@@ -50,13 +50,13 @@ int mp_fread(mp_int *a, int radix, FILE *stream)
       if ((err = mp_add_d(a, y, a)) != MP_OKAY) {
          return err;
       }
-      
+
       ch = fgetc(stream);
    }
    if (mp_cmp_d(a, 0) != MP_EQ) {
       a->sign = neg;
    }
-   
+
    return MP_OKAY;
 }
 
index a0b4c6b6d1c594e9125440c39e5524c3b826da14..dc4529ba229171b16e9bf9de878c369fb74d2f59 100644 (file)
@@ -19,7 +19,7 @@ int mp_fwrite(mp_int *a, int radix, FILE *stream)
 {
    char *buf;
    int err, len, x;
-   
+
    if ((err = mp_radix_size(a, radix, &len)) != MP_OKAY) {
       return err;
    }
@@ -28,19 +28,19 @@ int mp_fwrite(mp_int *a, int radix, FILE *stream)
    if (buf == NULL) {
       return MP_MEM;
    }
-   
+
    if ((err = mp_toradix(a, buf, radix)) != MP_OKAY) {
       XFREE (buf);
       return err;
    }
-   
+
    for (x = 0; x < len; x++) {
        if (fputc(buf[x], stream) == EOF) {
           XFREE (buf);
           return MP_VAL;
        }
    }
-   
+
    XFREE (buf);
    return MP_OKAY;
 }
index b39ba9041dbf7f1f40180cb05862a9aede941243..89795d564ed9d46115479a1f50d9ae8b0582b870 100644 (file)
@@ -76,17 +76,17 @@ int mp_gcd (mp_int * a, mp_int * b, mp_int * c)
         /* swap u and v to make sure v is >= u */
         mp_exch(&u, &v);
      }
-     
+
      /* subtract smallest from largest */
      if ((res = s_mp_sub(&v, &u, &v)) != MP_OKAY) {
         goto LBL_V;
      }
-     
+
      /* Divide out all factors of two */
      if ((res = mp_div_2d(&v, mp_cnt_lsb(&v), &v, NULL)) != MP_OKAY) {
         goto LBL_V;
-     } 
-  } 
+     }
+  }
 
   /* multiply by 2**k which we divided out at the beginning */
   if ((res = mp_mul_2d (&u, k, c)) != MP_OKAY) {
index 17162e2bf1f8383adc0b8c37d6c1f05c9f13ed2a..e8e9b1d44073e1adab02fadf68ceb865462114bc 100644 (file)
@@ -16,7 +16,7 @@
  */
 
 /* get the lower 32-bits of an mp_int */
-unsigned long mp_get_int(mp_int * a) 
+unsigned long mp_get_int(mp_int * a)
 {
   int i;
   unsigned long res;
@@ -30,7 +30,7 @@ unsigned long mp_get_int(mp_int * a)
 
   /* get most significant digit of result */
   res = DIGIT(a,i);
-   
+
   while (--i >= 0) {
     res = (res << DIGIT_BIT) | DIGIT(a,i);
   }
index 59dc3a9ea759fa574d92deab46edbacc8c37e492..56e8602767520c8b735458392c81c347f6eaf491 100644 (file)
@@ -16,7 +16,7 @@
  */
 #include <stdarg.h>
 
-int mp_init_multi(mp_int *mp, ...) 
+int mp_init_multi(mp_int *mp, ...)
 {
     mp_err res = MP_OKAY;      /* Assume ok until proven otherwise */
     int n = 0;                 /* Number of ok inits */
@@ -30,11 +30,11 @@ int mp_init_multi(mp_int *mp, ...)
                succeeded in init-ing, then return error.
             */
             va_list clean_args;
-            
+
             /* end the current list */
             va_end(args);
-            
-            /* now start cleaning up */            
+
+            /* now start cleaning up */
             cur_arg = mp;
             va_start(clean_args, mp);
             while (n--) {
index 8e014183a3ee890851b285b81c71cfc2e1057007..9578ac754c6cb9550ec324cfaab1942bd8af9094 100644 (file)
@@ -21,8 +21,8 @@ int mp_init_size (mp_int * a, int size)
   int x;
 
   /* pad size so there are always extra digits */
-  size += (MP_PREC * 2) - (size % MP_PREC);    
-  
+  size += (MP_PREC * 2) - (size % MP_PREC);
+
   /* alloc mem */
   a->dp = OPT_CAST(mp_digit) XMALLOC (sizeof (mp_digit) * size);
   if (a->dp == NULL) {
index eedd47dcf13d8067f647d4b693389da4c86a8d34..4ec487efae2e703d0d25c028845a9151ece3bcd9 100644 (file)
@@ -27,7 +27,7 @@ int mp_invmod_slow (mp_int * a, mp_int * b, mp_int * c)
   }
 
   /* init temps */
-  if ((res = mp_init_multi(&x, &y, &u, &v, 
+  if ((res = mp_init_multi(&x, &y, &u, &v,
                            &A, &B, &C, &D, NULL)) != MP_OKAY) {
      return res;
   }
@@ -154,14 +154,14 @@ top:
          goto LBL_ERR;
       }
   }
-  
+
   /* too big */
   while (mp_cmp_mag(&C, b) != MP_LT) {
       if ((res = mp_sub(&C, b, &C)) != MP_OKAY) {
          goto LBL_ERR;
       }
   }
-  
+
   /* C is now the inverse */
   mp_exch (&C, c);
   res = MP_OKAY;
index 50c524444ec19f2fec2417c48416f611141cfedc..027fcd2f5addbbe76677274689d28940df720684 100644 (file)
@@ -38,7 +38,7 @@ static const char rem_105[105] = {
 };
 
 /* Store non-zero to ret if arg is square, and zero if not */
-int mp_is_square(mp_int *arg,int *ret) 
+int mp_is_square(mp_int *arg,int *ret)
 {
   int           res;
   mp_digit      c;
@@ -46,7 +46,7 @@ int mp_is_square(mp_int *arg,int *ret)
   unsigned long r;
 
   /* Default to Non-square :) */
-  *ret = MP_NO; 
+  *ret = MP_NO;
 
   if (arg->sign == MP_NEG) {
     return MP_VAL;
@@ -80,8 +80,8 @@ int mp_is_square(mp_int *arg,int *ret)
   r = mp_get_int(&t);
   /* Check for other prime modules, note it's not an ERROR but we must
    * free "t" so the easiest way is to goto ERR.  We know that res
-   * is already equal to MP_OKAY from the mp_mod call 
-   */ 
+   * is already equal to MP_OKAY from the mp_mod call
+   */
   if ( (1L<<(r%11)) & 0x5C4L )             goto ERR;
   if ( (1L<<(r%13)) & 0x9E4L )             goto ERR;
   if ( (1L<<(r%17)) & 0x5CE8L )            goto ERR;
index 07ce86f29601952b8b7b36d60e6d62cda467508c..d3678d5dc11ab1353524ddfab85620f9e3c1e4e4 100644 (file)
@@ -1,10 +1,10 @@
 /* TomsFastMath, a fast ISO C bignum library.
- * 
+ *
  * This project is meant to fill in where LibTomMath
  * falls short.  That is speed ;-)
  *
  * This project is public domain and free for all purposes.
- * 
+ *
  * Tom St Denis, tomstdenis@gmail.com
  */
 #include <tommath.h>
index 8ea2c2792a9af6d4a758847cdfe2613299cc806e..72a2319c067217379b6c19ddc59c3b76494b6e24 100644 (file)
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* c = |a| * |b| using Karatsuba Multiplication using 
+/* c = |a| * |b| using Karatsuba Multiplication using
  * three half size multiplications
  *
- * Let B represent the radix [e.g. 2**DIGIT_BIT] and 
- * let n represent half of the number of digits in 
+ * Let B represent the radix [e.g. 2**DIGIT_BIT] and
+ * let n represent half of the number of digits in
  * the min(a,b)
  *
  * a = a1 * B**n + a0
  * b = b1 * B**n + b0
  *
- * Then, a * b => 
+ * Then, a * b =>
    a1b1 * B**2n + ((a1 + a0)(b1 + b0) - (a0b0 + a1b1)) * B + a0b0
  *
- * Note that a1b1 and a0b0 are used twice and only need to be 
- * computed once.  So in total three half size (half # of 
- * digit) multiplications are performed, a0b0, a1b1 and 
+ * Note that a1b1 and a0b0 are used twice and only need to be
+ * computed once.  So in total three half size (half # of
+ * digit) multiplications are performed, a0b0, a1b1 and
  * (a1+b1)(a0+b0)
  *
  * Note that a multiplication of half the digits requires
- * 1/4th the number of single precision multiplications so in 
- * total after one call 25% of the single precision multiplications 
- * are saved.  Note also that the call to mp_mul can end up back 
- * in this function if the a0, a1, b0, or b1 are above the threshold.  
- * This is known as divide-and-conquer and leads to the famous 
- * O(N**lg(3)) or O(N**1.584) work which is asymptopically lower than 
- * the standard O(N**2) that the baseline/comba methods use.  
- * Generally though the overhead of this method doesn't pay off 
+ * 1/4th the number of single precision multiplications so in
+ * total after one call 25% of the single precision multiplications
+ * are saved.  Note also that the call to mp_mul can end up back
+ * in this function if the a0, a1, b0, or b1 are above the threshold.
+ * This is known as divide-and-conquer and leads to the famous
+ * O(N**lg(3)) or O(N**1.584) work which is asymptopically lower than
+ * the standard O(N**2) that the baseline/comba methods use.
+ * Generally though the overhead of this method doesn't pay off
  * until a certain size (N ~ 80) is reached.
  */
 int mp_karatsuba_mul (mp_int * a, mp_int * b, mp_int * c)
@@ -109,7 +109,7 @@ int mp_karatsuba_mul (mp_int * a, mp_int * b, mp_int * c)
     }
   }
 
-  /* only need to clamp the lower words since by definition the 
+  /* only need to clamp the lower words since by definition the
    * upper words x1/y1 must have a known number of digits
    */
   mp_clamp (&x0);
@@ -117,7 +117,7 @@ int mp_karatsuba_mul (mp_int * a, mp_int * b, mp_int * c)
 
   /* now calc the products x0y0 and x1y1 */
   /* after this x0 is no longer required, free temp [x0==t2]! */
-  if (mp_mul (&x0, &y0, &x0y0) != MP_OKAY)  
+  if (mp_mul (&x0, &y0, &x0y0) != MP_OKAY)
     goto X1Y1;          /* x0y0 = x0*y0 */
   if (mp_mul (&x1, &y1, &x1y1) != MP_OKAY)
     goto X1Y1;          /* x1y1 = x1*y1 */
index a5e198be12f9b8a969445d2ede66cca285ef78f2..56692c5ae700784e1323435988713fd39d9c9df1 100644 (file)
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* Karatsuba squaring, computes b = a*a using three 
+/* Karatsuba squaring, computes b = a*a using three
  * half size squarings
  *
- * See comments of karatsuba_mul for details.  It 
- * is essentially the same algorithm but merely 
+ * See comments of karatsuba_mul for details.  It
+ * is essentially the same algorithm but merely
  * tuned to perform recursive squarings.
  */
 int mp_karatsuba_sqr (mp_int * a, mp_int * b)
index 8b1117a63ba5a6f89a43444fa27de93c48bb14e7..816e7b2f0bd79d51aaad16dec2d261f9374ec551 100644 (file)
@@ -25,29 +25,29 @@ int mp_mul (mp_int * a, mp_int * b, mp_int * c)
 #ifdef BN_MP_TOOM_MUL_C
   if (MIN (a->used, b->used) >= TOOM_MUL_CUTOFF) {
     res = mp_toom_mul(a, b, c);
-  } else 
+  } else
 #endif
 #ifdef BN_MP_KARATSUBA_MUL_C
   /* use Karatsuba? */
   if (MIN (a->used, b->used) >= KARATSUBA_MUL_CUTOFF) {
     res = mp_karatsuba_mul (a, b, c);
-  } else 
+  } else
 #endif
   {
     /* can we use the fast multiplier?
      *
-     * The fast multiplier can be used if the output will 
-     * have less than MP_WARRAY digits and the number of 
+     * The fast multiplier can be used if the output will
+     * have less than MP_WARRAY digits and the number of
      * digits won't affect carry propagation
      */
     int     digs = a->used + b->used + 1;
 
 #ifdef BN_FAST_S_MP_MUL_DIGS_C
     if ((digs < MP_WARRAY) &&
-        MIN(a->used, b->used) <= 
+        MIN(a->used, b->used) <=
         (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) {
       res = fast_s_mp_mul_digs (a, b, c, digs);
-    } else 
+    } else
 #endif
 #ifdef BN_S_MP_MUL_DIGS_C
       res = s_mp_mul (a, b, c); /* uses s_mp_mul_digs */
index 02455fc35d4f8889b078730291ebb316bf140e34..f90654832bec01fc27bce489ea6dbaf91304982d 100644 (file)
@@ -35,24 +35,24 @@ int mp_mul_2(mp_int * a, mp_int * b)
 
     /* alias for source */
     tmpa = a->dp;
-    
+
     /* alias for dest */
     tmpb = b->dp;
 
     /* carry */
     r = 0;
     for (x = 0; x < a->used; x++) {
-    
-      /* get what will be the *next* carry bit from the 
-       * MSB of the current digit 
+
+      /* get what will be the *next* carry bit from the
+       * MSB of the current digit
        */
       rr = *tmpa >> ((mp_digit)(DIGIT_BIT - 1));
-      
+
       /* now shift up this digit, add in the carry [from the previous] */
       *tmpb++ = ((*tmpa++ << ((mp_digit)1)) | r) & MP_MASK;
-      
-      /* copy the carry that would be from the source 
-       * digit into the next iteration 
+
+      /* copy the carry that would be from the source
+       * digit into the next iteration
        */
       r = rr;
     }
@@ -64,8 +64,8 @@ int mp_mul_2(mp_int * a, mp_int * b)
       ++(b->used);
     }
 
-    /* now zero any excess digits on the destination 
-     * that we didn't write to 
+    /* now zero any excess digits on the destination
+     * that we didn't write to
      */
     tmpb = b->dp + b->used;
     for (x = b->used; x < oldused; x++) {
index efeff2e75188c698db1cca48f126b28097b80317..d023b382cc1233159861215d92e67da9ae90b016 100644 (file)
@@ -69,7 +69,7 @@ int mp_mul_2d (mp_int * a, int b, mp_int * c)
       /* set the carry to the carry bits of the current word */
       r = rr;
     }
-    
+
     /* set final carry */
     if (r != 0) {
        c->dp[(c->used)++] = r;
index 0e7bedca72c26125d6cb20e4c763ab2abc5f8358..85d335cb9ef15732b5024633e5f38011705fe3df 100644 (file)
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* find the n'th root of an integer 
+/* find the n'th root of an integer
  *
- * Result found such that (c)**b <= a and (c+1)**b > a 
+ * Result found such that (c)**b <= a and (c+1)**b > a
  *
- * This algorithm uses Newton's approximation 
- * x[i+1] = x[i] - f(x[i])/f'(x[i]) 
- * which will find the root in log(N) time where 
- * each step involves a fair bit.  This is not meant to 
+ * This algorithm uses Newton's approximation
+ * x[i+1] = x[i] - f(x[i])/f'(x[i])
+ * which will find the root in log(N) time where
+ * each step involves a fair bit.  This is not meant to
  * find huge roots [square and cube, etc].
  */
 int mp_n_root (mp_int * a, mp_digit b, mp_int * c)
@@ -61,31 +61,31 @@ int mp_n_root (mp_int * a, mp_digit b, mp_int * c)
     }
 
     /* t2 = t1 - ((t1**b - a) / (b * t1**(b-1))) */
-    
+
     /* t3 = t1**(b-1) */
-    if ((res = mp_expt_d (&t1, b - 1, &t3)) != MP_OKAY) {   
+    if ((res = mp_expt_d (&t1, b - 1, &t3)) != MP_OKAY) {
       goto LBL_T3;
     }
 
     /* numerator */
     /* t2 = t1**b */
-    if ((res = mp_mul (&t3, &t1, &t2)) != MP_OKAY) {    
+    if ((res = mp_mul (&t3, &t1, &t2)) != MP_OKAY) {
       goto LBL_T3;
     }
 
     /* t2 = t1**b - a */
-    if ((res = mp_sub (&t2, a, &t2)) != MP_OKAY) {  
+    if ((res = mp_sub (&t2, a, &t2)) != MP_OKAY) {
       goto LBL_T3;
     }
 
     /* denominator */
     /* t3 = t1**(b-1) * b  */
-    if ((res = mp_mul_d (&t3, b, &t3)) != MP_OKAY) {    
+    if ((res = mp_mul_d (&t3, b, &t3)) != MP_OKAY) {
       goto LBL_T3;
     }
 
     /* t3 = (t1**b - a)/(b * t1**(b-1)) */
-    if ((res = mp_div (&t2, &t3, &t3, NULL)) != MP_OKAY) {  
+    if ((res = mp_div (&t2, &t3, &t3, NULL)) != MP_OKAY) {
       goto LBL_T3;
     }
 
index c23d77f6de75b488d02bb290982d620cde57f107..8e74a337c543d7f1cb15be4737bf1a5e4fc7b78b 100644 (file)
@@ -16,7 +16,7 @@
  */
 
 /* performs one Fermat test.
- * 
+ *
  * If "a" were prime then b**a == b (mod a) since the order of
  * the multiplicative sub-group would be phi(a) = a-1.  That means
  * it would be the same as b**(a mod (a-1)) == b**1 == b (mod a).
index 8e7871c2c65792a831a0e1d683a5da70293a8f04..766cde95a6839c44296fa5885aa82c52db8fdf49 100644 (file)
@@ -15,7 +15,7 @@
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* determines if an integers is divisible by one 
+/* determines if an integers is divisible by one
  * of the first PRIME_SIZE primes or not
  *
  * sets result to 0 if not, 1 if yes
index ddf03582ac443a48167ac9a21a8bb29d1af2b6cb..60a8c48eae952ffc3bbb74befb939f32c0d910d6 100644 (file)
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* Miller-Rabin test of "a" to the base of "b" as described in 
+/* Miller-Rabin test of "a" to the base of "b" as described in
  * HAC pp. 139 Algorithm 4.24
  *
  * Sets result to 0 if definitely composite or 1 if probably prime.
- * Randomly the chance of error is no more than 1/4 and often 
+ * Randomly the chance of error is no more than 1/4 and often
  * very much lower.
  */
 int mp_prime_miller_rabin (mp_int * a, mp_int * b, int *result)
@@ -33,7 +33,7 @@ int mp_prime_miller_rabin (mp_int * a, mp_int * b, int *result)
   /* ensure b > 1 */
   if (mp_cmp_d(b, 1) != MP_GT) {
      return MP_VAL;
-  }     
+  }
 
   /* get n1 = a - 1 */
   if ((err = mp_init_copy (&n1, a)) != MP_OKAY) {
index 07aae4b072e15355ca78263f4f749733f1237c72..7b0d15c94d7f62fa4f9fde784a31e94088fa30e5 100644 (file)
@@ -18,7 +18,7 @@
 /* makes a truly random prime of a given size (bits),
  *
  * Flags are as follows:
- * 
+ *
  *   LTM_PRIME_BBS      - make prime congruent to 3 mod 4
  *   LTM_PRIME_SAFE     - make sure (p-1)/2 is prime as well (implies LTM_PRIME_BBS)
  *   LTM_PRIME_2MSB_OFF - make the 2nd highest bit zero
@@ -63,7 +63,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback
    maskOR_msb_offset = ((size & 7) == 1) ? 1 : 0;
    if (flags & LTM_PRIME_2MSB_ON) {
       maskOR_msb       |= 0x80 >> ((9 - size) & 7);
-   }  
+   }
 
    /* get the maskOR_lsb */
    maskOR_lsb         = 1;
@@ -77,7 +77,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback
          err = MP_VAL;
          goto error;
       }
+
       /* work over the MSbyte */
       tmp[0]    &= maskAND;
       tmp[0]    |= 1 << ((size - 1) & 7);
@@ -91,7 +91,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback
 
       /* is it prime? */
       if ((err = mp_prime_is_prime(a, t, &res)) != MP_OKAY)           { goto error; }
-      if (res == MP_NO) {  
+      if (res == MP_NO) {
          continue;
       }
 
@@ -99,7 +99,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback
          /* see if (a-1)/2 is prime */
          if ((err = mp_sub_d(a, 1, a)) != MP_OKAY)                    { goto error; }
          if ((err = mp_div_2(a, a)) != MP_OKAY)                       { goto error; }
+
          /* is it prime? */
          if ((err = mp_prime_is_prime(a, t, &res)) != MP_OKAY)        { goto error; }
       }
index 1b61e3a1be99d96f947cbd3519706a00262019f3..af94be8676ab6e16f0c1c7edd0aa2e5995f654bb 100644 (file)
@@ -54,7 +54,7 @@ int mp_radix_size (mp_int * a, int radix, int *size)
   }
 
   /* force temp to positive */
-  t.sign = MP_ZPOS; 
+  t.sign = MP_ZPOS;
 
   /* fetch out all of the digits */
   while (mp_iszero (&t) == MP_NO) {
index 91c46c22f748ad35c6bd3c54604420b68108be0a..35ca886736a1c358ad0d7509b44d58e0b9c1eec8 100644 (file)
@@ -29,8 +29,8 @@ int mp_read_radix (mp_int * a, const char *str, int radix)
     return MP_VAL;
   }
 
-  /* if the leading digit is a 
-   * minus set the sign to negative. 
+  /* if the leading digit is a
+   * minus set the sign to negative.
    */
   if (*str == '-') {
     ++str;
@@ -41,7 +41,7 @@ int mp_read_radix (mp_int * a, const char *str, int radix)
 
   /* set the integer to the default of zero */
   mp_zero (a);
-  
+
   /* process each digit of the string */
   while (*str) {
     /* if the radix < 36 the conversion is case insensitive
@@ -55,9 +55,9 @@ int mp_read_radix (mp_int * a, const char *str, int radix)
       }
     }
 
-    /* if the char was found in the map 
+    /* if the char was found in the map
      * and is less than the given radix add it
-     * to the number, otherwise exit the loop. 
+     * to the number, otherwise exit the loop.
      */
     if (y < radix) {
       if ((res = mp_mul_d (a, (mp_digit) radix, a)) != MP_OKAY) {
@@ -71,7 +71,7 @@ int mp_read_radix (mp_int * a, const char *str, int radix)
     }
     ++str;
   }
-  
+
   /* set the sign only if a != 0 */
   if (mp_iszero(a) != 1) {
      a->sign = neg;
index 21d073090586f8b09ac63930238ade7ff2f090ad..ae57a6a0033408b2a3823ab624e1cf8a0260828c 100644 (file)
@@ -15,7 +15,7 @@
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* reduces x mod m, assumes 0 < x < m**2, mu is 
+/* reduces x mod m, assumes 0 < x < m**2, mu is
  * precomputed via mp_reduce_setup.
  * From HAC pp.604 Algorithm 14.42
  */
@@ -30,7 +30,7 @@ int mp_reduce (mp_int * x, mp_int * m, mp_int * mu)
   }
 
   /* q1 = x / b**(k-1)  */
-  mp_rshd (&q, um - 1);         
+  mp_rshd (&q, um - 1);
 
   /* according to HAC this optimization is ok */
   if (((unsigned long) um) > (((mp_digit)1) << (DIGIT_BIT - 1))) {
@@ -46,8 +46,8 @@ int mp_reduce (mp_int * x, mp_int * m, mp_int * mu)
     if ((res = fast_s_mp_mul_high_digs (&q, mu, &q, um)) != MP_OKAY) {
       goto CLEANUP;
     }
-#else 
-    { 
+#else
+    {
       res = MP_VAL;
       goto CLEANUP;
     }
@@ -55,7 +55,7 @@ int mp_reduce (mp_int * x, mp_int * m, mp_int * mu)
   }
 
   /* q3 = q2 / b**(k+1) */
-  mp_rshd (&q, um + 1);         
+  mp_rshd (&q, um + 1);
 
   /* x = x mod b**(k+1), quick (no division) */
   if ((res = mp_mod_2d (x, DIGIT_BIT * (um + 1), x)) != MP_OKAY) {
@@ -87,7 +87,7 @@ int mp_reduce (mp_int * x, mp_int * m, mp_int * mu)
       goto CLEANUP;
     }
   }
-  
+
 CLEANUP:
   mp_clear (&q);
 
index d9620c221c279fffbd38edef866b230c9bcc87cb..1c4a751dda5a706b2854638711e5a751cae2f47b 100644 (file)
@@ -20,35 +20,35 @@ int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d)
 {
    mp_int q;
    int    p, res;
-   
+
    if ((res = mp_init(&q)) != MP_OKAY) {
       return res;
    }
-   
-   p = mp_count_bits(n);    
+
+   p = mp_count_bits(n);
 top:
    /* q = a/2**p, a = a mod 2**p */
    if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) {
       goto ERR;
    }
-   
+
    if (d != 1) {
       /* q = q * d */
-      if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) { 
+      if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) {
          goto ERR;
       }
    }
-   
+
    /* a = a + q */
    if ((res = s_mp_add(a, &q, a)) != MP_OKAY) {
       goto ERR;
    }
-   
+
    if (mp_cmp_mag(a, n) != MP_LT) {
       s_mp_sub(a, n, a);
       goto top;
    }
-   
+
 ERR:
    mp_clear(&q);
    return res;
index f06103d6a67e85087dd373382127cc5ee9aa6fd8..71abeaebba72207254c96a2e81ebd45191833c86 100644 (file)
@@ -15,7 +15,7 @@
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* reduces a modulo n where n is of the form 2**p - d 
+/* reduces a modulo n where n is of the form 2**p - d
    This differs from reduce_2k since "d" can be larger
    than a single digit.
 */
@@ -23,33 +23,33 @@ int mp_reduce_2k_l(mp_int *a, mp_int *n, mp_int *d)
 {
    mp_int q;
    int    p, res;
-   
+
    if ((res = mp_init(&q)) != MP_OKAY) {
       return res;
    }
-   
-   p = mp_count_bits(n);    
+
+   p = mp_count_bits(n);
 top:
    /* q = a/2**p, a = a mod 2**p */
    if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) {
       goto ERR;
    }
-   
+
    /* q = q * d */
-   if ((res = mp_mul(&q, d, &q)) != MP_OKAY) { 
+   if ((res = mp_mul(&q, d, &q)) != MP_OKAY) {
       goto ERR;
    }
-   
+
    /* a = a + q */
    if ((res = s_mp_add(a, &q, a)) != MP_OKAY) {
       goto ERR;
    }
-   
+
    if (mp_cmp_mag(a, n) != MP_LT) {
       s_mp_sub(a, n, a);
       goto top;
    }
-   
+
 ERR:
    mp_clear(&q);
    return res;
index a80e7a22f2275f7219cf9c395f34122640f68c4d..dca723c815683350f8f531b08a9e2ecccf1c30a6 100644 (file)
@@ -20,22 +20,22 @@ int mp_reduce_2k_setup(mp_int *a, mp_digit *d)
 {
    int res, p;
    mp_int tmp;
-   
+
    if ((res = mp_init(&tmp)) != MP_OKAY) {
       return res;
    }
-   
+
    p = mp_count_bits(a);
    if ((res = mp_2expt(&tmp, p)) != MP_OKAY) {
       mp_clear(&tmp);
       return res;
    }
-   
+
    if ((res = s_mp_sub(&tmp, a, &tmp)) != MP_OKAY) {
       mp_clear(&tmp);
       return res;
    }
-   
+
    *d = tmp.dp[0];
    mp_clear(&tmp);
    return MP_OKAY;
index 7cf002e8885ac4b9e0d6ef8200f4860fe537c9e1..cc59a6e715850cc64b394529d7e90a8c6cee3ef7 100644 (file)
@@ -20,19 +20,19 @@ int mp_reduce_2k_setup_l(mp_int *a, mp_int *d)
 {
    int    res;
    mp_int tmp;
-   
+
    if ((res = mp_init(&tmp)) != MP_OKAY) {
       return res;
    }
-   
+
    if ((res = mp_2expt(&tmp, mp_count_bits(a))) != MP_OKAY) {
       goto ERR;
    }
-   
+
    if ((res = s_mp_sub(&tmp, a, d)) != MP_OKAY) {
       goto ERR;
    }
-   
+
 ERR:
    mp_clear(&tmp);
    return res;
index 7308be73e2b25b10c8a05096d8baa8a7c79a13c2..c8d25d83e226a32c321b10723ab23d2b47177e4c 100644 (file)
@@ -20,7 +20,7 @@ int mp_reduce_is_2k(mp_int *a)
 {
    int ix, iy, iw;
    mp_digit iz;
-   
+
    if (a->used == 0) {
       return MP_NO;
    } else if (a->used == 1) {
@@ -29,7 +29,7 @@ int mp_reduce_is_2k(mp_int *a)
       iy = mp_count_bits(a);
       iz = 1;
       iw = 1;
-    
+
       /* Test every bit from the second digit up, must be 1 */
       for (ix = DIGIT_BIT; ix < iy; ix++) {
           if ((a->dp[iw] & iz) == 0) {
index 14a4d218461e2146517796c35126d1f1954638b7..ad006f39c50e8e20490e20e4ef0103402559e965 100644 (file)
@@ -19,7 +19,7 @@
 int mp_reduce_is_2k_l(mp_int *a)
 {
    int ix, iy;
-   
+
    if (a->used == 0) {
       return MP_NO;
    } else if (a->used == 1) {
@@ -32,7 +32,7 @@ int mp_reduce_is_2k_l(mp_int *a)
           }
       }
       return (iy >= (a->used/2)) ? MP_YES : MP_NO;
-      
+
    }
    return MP_NO;
 }
index 370f20bb17c7b66310249bf30b43d66e7b17b76f..035419bf347263068e8810a63c820f48db4e77c1 100644 (file)
@@ -21,7 +21,7 @@
 int mp_reduce_setup (mp_int * a, mp_int * b)
 {
   int     res;
-  
+
   if ((res = mp_2expt (a, b->used * 2 * DIGIT_BIT)) != MP_OKAY) {
     return res;
   }
index 2a693c5a5b3c9e7cd0a35f6e1c2ead45509578b3..ed13ce59a4926835482f1fc8c4d402d342b3a18b 100644 (file)
@@ -42,8 +42,8 @@ void mp_rshd (mp_int * a, int b)
     /* top [offset into digits] */
     top = a->dp + b;
 
-    /* this is implemented as a sliding window where 
-     * the window is b-digits long and digits from 
+    /* this is implemented as a sliding window where
+     * the window is b-digits long and digits from
      * the top of the window are copied to the bottom
      *
      * e.g.
@@ -61,7 +61,7 @@ void mp_rshd (mp_int * a, int b)
       *bottom++ = 0;
     }
   }
-  
+
   /* remove excess digits */
   a->used -= b;
 }
index cf10ea1a448bd957185b9533a55768cffde3a672..3072e76e1c4394c4207e9d087ec929d3c506d3f1 100644 (file)
@@ -21,7 +21,7 @@ int mp_set_int (mp_int * a, unsigned long b)
   int     x, res;
 
   mp_zero (a);
-  
+
   /* set four bits at a time */
   for (x = 0; x < 8; x++) {
     /* shift the number up four bits */
index 868ccbbaef54b0738b5e4aa24ead4c50479883e8..90f4dd6d72732d4220b4072bc7f9a5334bc4314e 100644 (file)
@@ -26,18 +26,18 @@ mp_sqr (mp_int * a, mp_int * b)
   if (a->used >= TOOM_SQR_CUTOFF) {
     res = mp_toom_sqr(a, b);
   /* Karatsuba? */
-  } else 
+  } else
 #endif
 #ifdef BN_MP_KARATSUBA_SQR_C
 if (a->used >= KARATSUBA_SQR_CUTOFF) {
     res = mp_karatsuba_sqr (a, b);
-  } else 
+  } else
 #endif
   {
 #ifdef BN_FAST_S_MP_SQR_C
     /* can we use the fast comba multiplier? */
-    if ((a->used * 2 + 1) < MP_WARRAY && 
-         a->used < 
+    if ((a->used * 2 + 1) < MP_WARRAY &&
+         a->used <
          (1 << (sizeof(mp_word) * CHAR_BIT - 2*DIGIT_BIT - 1))) {
       res = fast_s_mp_sqr (a, b);
     } else
index 8fd057ceedbccdd434f3d943e80db0b5fcf681b5..8391297f7e52700b27a0562c5780db48d1caf0bf 100644 (file)
@@ -16,7 +16,7 @@
  */
 
 /* this function is less generic than mp_n_root, simpler and faster */
-int mp_sqrt(mp_int *arg, mp_int *ret) 
+int mp_sqrt(mp_int *arg, mp_int *ret)
 {
   int res;
   mp_int t1,t2;
@@ -43,7 +43,7 @@ int mp_sqrt(mp_int *arg, mp_int *ret)
   /* First approx. (not very bad for large arg) */
   mp_rshd (&t1,t1.used/2);
 
-  /* t1 > 0  */ 
+  /* t1 > 0  */
   if ((res = mp_div(arg,&t1,&t2,NULL)) != MP_OKAY) {
     goto E1;
   }
@@ -54,7 +54,7 @@ int mp_sqrt(mp_int *arg, mp_int *ret)
     goto E1;
   }
   /* And now t1 > sqrt(arg) */
-  do { 
+  do {
     if ((res = mp_div(arg,&t1,&t2,NULL)) != MP_OKAY) {
       goto E1;
     }
index ad5d9e9b6497233d0dd80e74418e4c534ffa1e7d..b996342466c2689f97a8f44adeb135ec719bb26a 100644 (file)
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* multiplication using the Toom-Cook 3-way algorithm 
+/* multiplication using the Toom-Cook 3-way algorithm
  *
- * Much more complicated than Karatsuba but has a lower 
- * asymptotic running time of O(N**1.464).  This algorithm is 
- * only particularly useful on VERY large inputs 
+ * Much more complicated than Karatsuba but has a lower
+ * asymptotic running time of O(N**1.464).  This algorithm is
+ * only particularly useful on VERY large inputs
  * (we're talking 1000s of digits here...).
 */
 int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
 {
     mp_int w0, w1, w2, w3, w4, tmp1, tmp2, a0, a1, a2, b0, b1, b2;
     int res, B;
-        
+
     /* init temps */
-    if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, 
-                             &a0, &a1, &a2, &b0, &b1, 
+    if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4,
+                             &a0, &a1, &a2, &b0, &b1,
                              &b2, &tmp1, &tmp2, NULL)) != MP_OKAY) {
        return res;
     }
-    
+
     /* B */
     B = MIN(a->used, b->used) / 3;
-    
+
     /* a = a2 * B**2 + a1 * B + a0 */
     if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) {
        goto ERR;
@@ -52,7 +52,7 @@ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
        goto ERR;
     }
     mp_rshd(&a2, B*2);
-    
+
     /* b = b2 * B**2 + b1 * B + b0 */
     if ((res = mp_mod_2d(b, DIGIT_BIT * B, &b0)) != MP_OKAY) {
        goto ERR;
@@ -68,17 +68,17 @@ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
        goto ERR;
     }
     mp_rshd(&b2, B*2);
-    
+
     /* w0 = a0*b0 */
     if ((res = mp_mul(&a0, &b0, &w0)) != MP_OKAY) {
        goto ERR;
     }
-    
+
     /* w4 = a2 * b2 */
     if ((res = mp_mul(&a2, &b2, &w4)) != MP_OKAY) {
        goto ERR;
     }
-    
+
     /* w1 = (a2 + 2(a1 + 2a0))(b2 + 2(b1 + 2b0)) */
     if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) {
        goto ERR;
@@ -92,7 +92,7 @@ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
     if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) {
        goto ERR;
     }
-    
+
     if ((res = mp_mul_2(&b0, &tmp2)) != MP_OKAY) {
        goto ERR;
     }
@@ -105,11 +105,11 @@ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
     if ((res = mp_add(&tmp2, &b2, &tmp2)) != MP_OKAY) {
        goto ERR;
     }
-    
+
     if ((res = mp_mul(&tmp1, &tmp2, &w1)) != MP_OKAY) {
        goto ERR;
     }
-    
+
     /* w3 = (a0 + 2(a1 + 2a2))(b0 + 2(b1 + 2b2)) */
     if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) {
        goto ERR;
@@ -123,7 +123,7 @@ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
     if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) {
        goto ERR;
     }
-    
+
     if ((res = mp_mul_2(&b2, &tmp2)) != MP_OKAY) {
        goto ERR;
     }
@@ -136,11 +136,11 @@ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
     if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) {
        goto ERR;
     }
-    
+
     if ((res = mp_mul(&tmp1, &tmp2, &w3)) != MP_OKAY) {
        goto ERR;
     }
-    
+
 
     /* w2 = (a2 + a1 + a0)(b2 + b1 + b0) */
     if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) {
@@ -158,19 +158,19 @@ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
     if ((res = mp_mul(&tmp1, &tmp2, &w2)) != MP_OKAY) {
        goto ERR;
     }
-    
-    /* now solve the matrix 
-    
+
+    /* now solve the matrix
+
        0  0  0  0  1
        1  2  4  8  16
        1  1  1  1  1
        16 8  4  2  1
        1  0  0  0  0
-       
-       using 12 subtractions, 4 shifts, 
-              2 small divisions and 1 small multiplication 
+
+       using 12 subtractions, 4 shifts,
+              2 small divisions and 1 small multiplication
      */
-     
+
      /* r1 - r4 */
      if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) {
         goto ERR;
@@ -242,7 +242,7 @@ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
      if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) {
         goto ERR;
      }
-     
+
      /* at this point shift W[n] by B*n */
      if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) {
         goto ERR;
@@ -255,8 +255,8 @@ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
      }
      if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) {
         goto ERR;
-     }     
-     
+     }
+
      if ((res = mp_add(&w0, &w1, c)) != MP_OKAY) {
         goto ERR;
      }
@@ -268,15 +268,15 @@ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
      }
      if ((res = mp_add(&tmp1, c, c)) != MP_OKAY) {
         goto ERR;
-     }     
-     
+     }
+
 ERR:
-     mp_clear_multi(&w0, &w1, &w2, &w3, &w4, 
-                    &a0, &a1, &a2, &b0, &b1, 
+     mp_clear_multi(&w0, &w1, &w2, &w3, &w4,
+                    &a0, &a1, &a2, &b0, &b1,
                     &b2, &tmp1, &tmp2, NULL);
      return res;
-}     
-     
+}
+
 #endif
 
 /* $Source: /cvs/libtom/libtommath/bn_mp_toom_mul.c,v $ */
index 796ed55c65e52694b312ebbe6663cf26852116b3..28085124ea997dd287d9d926e436bde3e640ecc4 100644 (file)
@@ -15,9 +15,9 @@
  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
  */
 
-/* stores a bignum as a ASCII string in a given radix (2..64) 
+/* stores a bignum as a ASCII string in a given radix (2..64)
  *
- * Stores upto maxlen-1 chars and always a NULL byte 
+ * Stores upto maxlen-1 chars and always a NULL byte
  */
 int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen)
 {
@@ -50,7 +50,7 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen)
     /* store the flag and mark the number as positive */
     *str++ = '-';
     t.sign = MP_ZPOS;
+
     /* subtract a char */
     --maxlen;
   }
index f034ae62aad4ea4fe248906ff068eab17a78cceb..e7f54f4cf1e444fdaaeeef538d83bfc1abf941e3 100644 (file)
@@ -74,8 +74,8 @@ s_mp_add (mp_int * a, mp_int * b, mp_int * c)
       *tmpc++ &= MP_MASK;
     }
 
-    /* now copy higher words if any, that is in A+B 
-     * if A or B has more digits add those in 
+    /* now copy higher words if any, that is in A+B
+     * if A or B has more digits add those in
      */
     if (min != max) {
       for (; i < max; i++) {
index 097d894702b0b75b09d594fb1472e20078732a1f..deb4b4ddb1611267f417785027c691602e0b63f3 100644 (file)
@@ -54,7 +54,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode)
   /* init M array */
   /* init first cell */
   if ((err = mp_init(&M[1])) != MP_OKAY) {
-     return err; 
+     return err;
   }
 
   /* now init the second half of the array */
@@ -72,7 +72,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode)
   if ((err = mp_init (&mu)) != MP_OKAY) {
     goto LBL_M;
   }
-  
+
   if (redmode == 0) {
      if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) {
         goto LBL_MU;
@@ -83,22 +83,22 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode)
         goto LBL_MU;
      }
      redux = mp_reduce_2k_l;
-  }    
+  }
 
   /* create M table
    *
-   * The M table contains powers of the base, 
+   * The M table contains powers of the base,
    * e.g. M[x] = G**x mod P
    *
-   * The first half of the table is not 
+   * The first half of the table is not
    * computed though accept for M[0] and M[1]
    */
   if ((err = mp_mod (G, P, &M[1])) != MP_OKAY) {
     goto LBL_MU;
   }
 
-  /* compute the value at M[1<<(winsize-1)] by squaring 
-   * M[1] (winsize-1) times 
+  /* compute the value at M[1<<(winsize-1)] by squaring
+   * M[1] (winsize-1) times
    */
   if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) {
     goto LBL_MU;
@@ -106,7 +106,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode)
 
   for (x = 0; x < (winsize - 1); x++) {
     /* square it */
-    if ((err = mp_sqr (&M[1 << (winsize - 1)], 
+    if ((err = mp_sqr (&M[1 << (winsize - 1)],
                        &M[1 << (winsize - 1)])) != MP_OKAY) {
       goto LBL_MU;
     }
index f5bbf39ce242afd3b17d1f2ca24013cba7b22ffd..c5892181f9f15d10ba82a011e8966e65bba3a808 100644 (file)
@@ -16,7 +16,7 @@
  */
 
 /* multiplies |a| * |b| and only computes upto digs digits of result
- * HAC pp. 595, Algorithm 14.12  Modified so you can control how 
+ * HAC pp. 595, Algorithm 14.12  Modified so you can control how
  * many digits of output are created.
  */
 int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs)
@@ -29,7 +29,7 @@ int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs)
 
   /* can we use the fast multiplier? */
   if (((digs) < MP_WARRAY) &&
-      MIN (a->used, b->used) < 
+      MIN (a->used, b->used) <
           (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) {
     return fast_s_mp_mul_digs (a, b, c, digs);
   }
@@ -51,10 +51,10 @@ int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs)
     /* setup some aliases */
     /* copy of the digit from a used within the nested loop */
     tmpx = a->dp[ix];
-    
+
     /* an alias for the destination shifted ix places */
     tmpt = t.dp + ix;
-    
+
     /* an alias for the digits of b */
     tmpy = b->dp;
 
index d2531c29255bf9849ba26771cade650af260cfd8..c1c3826db5f5e62b68e13ff686acc4b3dc5f6fc4 100644 (file)
@@ -48,7 +48,7 @@ int s_mp_sqr (mp_int * a, mp_int * b)
 
     /* alias for where to store the results */
     tmpt        = t.dp + (2*ix + 1);
-    
+
     for (iy = ix + 1; iy < pa; iy++) {
       /* first calculate the product */
       r       = ((mp_word)tmpx) * ((mp_word)a->dp[iy]);
index 8fb1824c6f542d2de5de79d9682a0ff48bd65cc0..919e3b33b02e3679d6319bac3af0f02b04408964 100644 (file)
 -------------------------------------------------------------
  Intel P4 Northwood     /GCC v3.4.1   /        88/       128/LTM 0.32 ;-)
  AMD Athlon64           /GCC v3.4.4   /        80/       120/LTM 0.35
+
 */
 
 int     KARATSUBA_MUL_CUTOFF = 80,      /* Min. number of digits before Karatsuba multiplication is used. */
         KARATSUBA_SQR_CUTOFF = 120,     /* Min. number of digits before Karatsuba squaring is used. */
-        
+
         TOOM_MUL_CUTOFF      = 350,      /* no optimal values of these are known yet so set em high */
-        TOOM_SQR_CUTOFF      = 400; 
+        TOOM_SQR_CUTOFF      = 400;
 #endif
 
 /* $Source: /cvs/libtom/libtommath/bncore.c,v $ */
index bb5eb4401fae33617ea5567242c85a5c4f8b2495..2442611f9e02563058a86e6f2118ec7f08703662 100644 (file)
@@ -69,7 +69,7 @@ int main(void)
    srand(time(NULL));
 
 #if 0
-   // test montgomery 
+   // test montgomery
    printf("Testing montgomery...\n");
    for (i = 1; i < 10; i++) {
       printf("Testing digit size: %d\n", i);
@@ -81,7 +81,7 @@ int main(void)
          mp_montgomery_calc_normalization(&b, &a);
          mp_montgomery_setup(&a, &mp);
 
-         // now test a random reduction 
+         // now test a random reduction
          for (ix = 0; ix < 100; ix++) {
              mp_rand(&c, 1 + abs(rand()) % (2*i));
              mp_copy(&c, &d);
@@ -91,7 +91,7 @@ int main(void)
              mp_montgomery_reduce(&c, &a, mp);
              mp_mulmod(&c, &b, &a, &c);
 
-             if (mp_cmp(&c, &d) != MP_EQ) { 
+             if (mp_cmp(&c, &d) != MP_EQ) {
 printf("d = e mod a, c = e MOD a\n");
 mp_todecimal(&a, buf); printf("a = %s\n", buf);
 mp_todecimal(&e, buf); printf("e = %s\n", buf);
index c09818f9c37e0e100696c20c2f868507bafef9cb..0d2bf21e7368a5bb2dcece4ea1dac727e041e5c7 100644 (file)
@@ -12,16 +12,16 @@ int main(void)
    FILE *out;
    clock_t t1;
    mp_digit z;
-   
+
    mp_init_multi(&q, &p, NULL);
-   
+
    out = fopen("2kprime.1", "w");
    for (x = 0; x < (int)(sizeof(sizes) / sizeof(sizes[0])); x++) {
    top:
        mp_2expt(&q, sizes[x]);
        mp_add_d(&q, 3, &q);
        z = -3;
-       
+
        t1 = clock();
        for(;;) {
          mp_sub_d(&q, 4, &q);
@@ -31,13 +31,13 @@ int main(void)
             printf("No primes of size %d found\n", sizes[x]);
             break;
          }
-         
-         if (clock() - t1 > CLOCKS_PER_SEC) { 
+
+         if (clock() - t1 > CLOCKS_PER_SEC) {
             printf("."); fflush(stdout);
 //            sleep((clock() - t1 + CLOCKS_PER_SEC/2)/CLOCKS_PER_SEC);
             t1 = clock();
          }
-         
+
          /* quick test on q */
          mp_prime_is_prime(&q, 1, &y);
          if (y == 0) {
@@ -60,24 +60,24 @@ int main(void)
 
          break;
        }
-       
+
        if (y == 0) {
           ++sizes[x];
           goto top;
        }
-       
+
        mp_toradix(&q, buf, 10);
        printf("\n\n%d-bits (k = %lu) = %s\n", sizes[x], z, buf);
        fprintf(out, "%d-bits (k = %lu) = %s\n", sizes[x], z, buf); fflush(out);
    }
-   
+
    return 0;
-}   
-       
-         
-            
-            
-          
+}
+
+
+
+
+
 
 /* $Source: /cvs/libtom/libtommath/etc/2kprime.c,v $ */
 /* $Revision: 1.2 $ */
index e4139850c2649738f96d3ece362b10137b7080ad..d92059327f7b83deb52e037a66b4327bfd68ccdd 100644 (file)
@@ -8,10 +8,10 @@ int main(void)
    char buf[4096];
    FILE *out;
    mp_int a, b;
-   
+
    mp_init(&a);
    mp_init(&b);
-   
+
    out = fopen("drprimes.txt", "w");
    for (x = 0; x < (int)(sizeof(sizes)/sizeof(sizes[0])); x++) {
    top:
@@ -21,14 +21,14 @@ int main(void)
        for (y = 1; y < sizes[x]; y++) {
            a.dp[y] = MP_MASK;
        }
-       
+
        /* make a DR modulus */
        a.dp[0] = -1;
        a.used = sizes[x];
-       
+
        /* now loop */
        res = 0;
-       for (;;) { 
+       for (;;) {
           a.dp[0] += 4;
           if (a.dp[0] >= MP_MASK) break;
           mp_prime_is_prime(&a, 1, &res);
@@ -36,25 +36,25 @@ int main(void)
           printf("."); fflush(stdout);
           mp_sub_d(&a, 1, &b);
           mp_div_2(&b, &b);
-          mp_prime_is_prime(&b, 3, &res);  
+          mp_prime_is_prime(&b, 3, &res);
           if (res == 0) continue;
           mp_prime_is_prime(&a, 3, &res);
           if (res == 1) break;
        }
-        
+
         if (res != 1) {
            printf("Error not DR modulus\n"); sizes[x] += 1; goto top;
         } else {
            mp_toradix(&a, buf, 10);
            printf("\n\np == %s\n\n", buf);
            fprintf(out, "%d-bit prime:\np == %s\n\n", mp_count_bits(&a), buf); fflush(out);
-        }           
+        }
    }
    fclose(out);
-   
+
    mp_clear(&a);
    mp_clear(&b);
-   
+
    return 0;
 }
 
index 6a6497acfc78d3fbf4b3fd7faaf4cb369dca5935..78eb0ea27fe1ab29f6c2d3435021561f9d5d5103 100644 (file)
@@ -1,4 +1,4 @@
-/* Finds Mersenne primes using the Lucas-Lehmer test 
+/* Finds Mersenne primes using the Lucas-Lehmer test
  *
  * Tom St Denis, tomstdenis@gmail.com
  */
@@ -10,7 +10,7 @@ is_mersenne (long s, int *pp)
 {
   mp_int  n, u;
   int     res, k;
-  
+
   *pp = 0;
 
   if ((res = mp_init (&n)) != MP_OKAY) {
index 393be4c9d7e3a26c0e43de3caa12b3ff8c1a75ba..7c5501fc078a52266f28b3ef03e2d36ae5a2bf7a 100644 (file)
@@ -13,21 +13,21 @@ int main(void)
    /* loop through various sizes */
    for (x = 4; x < 256; x++) {
        printf("DIGITS == %3ld...", x); fflush(stdout);
-       
+
        /* make up the odd modulus */
        mp_rand(&modulus, x);
        modulus.dp[0] |= 1;
-       
+
        /* now find the R value */
        mp_montgomery_calc_normalization(&R, &modulus);
        mp_montgomery_setup(&modulus, &mp);
-       
+
        /* now run through a bunch tests */
        for (y = 0; y < 1000; y++) {
            mp_rand(&p, x/2);        /* p = random */
            mp_mul(&p, &R, &pp);     /* pp = R * p */
            mp_montgomery_reduce(&pp, &modulus, mp);
-           
+
            /* should be equal to p */
            if (mp_cmp(&pp, &p) != MP_EQ) {
               printf("FAILURE!\n");
@@ -36,7 +36,7 @@ int main(void)
        }
        printf("PASSED\n");
     }
-    
+
     return 0;
 }
 
index d4a502c8f4a8bed9befd91e37f15bab5f05c6e52..e09e8ef774ab4a25ed7b1c3e91572f49f2efaba3 100644 (file)
@@ -6,7 +6,7 @@
 #include <time.h>
 
 /* how many times todo each size mult.  Depends on your computer.  For slow computers
- * this can be low like 5 or 10.  For fast [re: Athlon] should be 25 - 50 or so 
+ * this can be low like 5 or 10.  For fast [re: Athlon] should be 25 - 50 or so
  */
 #define TIMES (1UL<<14UL)
 
@@ -67,7 +67,7 @@ ulong64 time_mult(int size, int s)
   mp_rand (&a, size);
   mp_rand (&b, size);
 
-  if (s == 1) { 
+  if (s == 1) {
       KARATSUBA_MUL_CUTOFF = size;
   } else {
       KARATSUBA_MUL_CUTOFF = 100000;
@@ -95,7 +95,7 @@ ulong64 time_sqr(int size, int s)
 
   mp_rand (&a, size);
 
-  if (s == 1) { 
+  if (s == 1) {
       KARATSUBA_SQR_CUTOFF = size;
   } else {
       KARATSUBA_SQR_CUTOFF = 100000;
@@ -117,7 +117,7 @@ main (void)
   ulong64 t1, t2;
   int x, y;
 
-  for (x = 8; ; x += 2) { 
+  for (x = 8; ; x += 2) {
      t1 = time_mult(x, 0);
      t2 = time_mult(x, 1);
      printf("%d: %9llu %9llu, %9llu\n", x, t1, t2, t2 - t1);
@@ -125,7 +125,7 @@ main (void)
   }
   y = x;
 
-  for (x = 8; ; x += 2) { 
+  for (x = 8; ; x += 2) {
      t1 = time_sqr(x, 0);
      t2 = time_sqr(x, 1);
      printf("%d: %9llu %9llu, %9llu\n", x, t1, t2, t2 - t1);
index 6049c25ba73ba4a7da05d8911c5510817184ead7..f69e36d650b0c3aef6b359133daae2d3d959c846 100644 (file)
@@ -5,7 +5,7 @@
 #define MPI_CONFIG_H_
 
 /*
-  For boolean options, 
+  For boolean options,
   0 = no
   1 = yes
 
index 7c712dd62dc27566dff3ed72ce9f9d28a5448fe0..4030841e54fda04624ef44d03605ba5663de72eb 100644 (file)
@@ -22,7 +22,7 @@
 #define DIAG(T,V)
 #endif
 
-/* 
+/*
    If MP_LOGTAB is not defined, use the math library to compute the
    logarithms on the fly.  Otherwise, use the static table below.
    Pick which works best for your system.
@@ -33,7 +33,7 @@
 
 /*
   A table of the logs of 2 for various bases (the 0 and 1 entries of
-  this table are meaningless and should not be referenced).  
+  this table are meaningless and should not be referenced).
 
   This table is used to compute output lengths for the mp_toradix()
   function.  Since a number n in radix r takes up about log_r(n)
@@ -43,7 +43,7 @@
   log_r(n) = log_2(n) * log_r(2)
 
   This table, therefore, is a table of log_r(2) for 2 <= r <= 36,
-  which are the output bases supported.  
+  which are the output bases supported.
  */
 
 #include "logtab.h"
@@ -104,7 +104,7 @@ static const char *mp_err_string[] = {
 /* Value to digit maps for radix conversion   */
 
 /* s_dmap_1 - standard digits and letters */
-static const char *s_dmap_1 = 
+static const char *s_dmap_1 =
   "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/";
 
 #if 0
@@ -117,7 +117,7 @@ static const char *s_dmap_2 =
 
 /* {{{ Static function declarations */
 
-/* 
+/*
    If MP_MACRO is false, these will be defined as actual functions;
    otherwise, suitable macro definitions will be used.  This works
    around the fact that ANSI C89 doesn't support an 'inline' keyword
@@ -258,7 +258,7 @@ mp_err mp_init_array(mp_int mp[], int count)
   return MP_OKAY;
 
  CLEANUP:
-  while(--pos >= 0) 
+  while(--pos >= 0)
     mp_clear(&mp[pos]);
 
   return res;
@@ -355,7 +355,7 @@ mp_err mp_copy(mp_int *from, mp_int *to)
     if(ALLOC(to) >= USED(from)) {
       s_mp_setz(DIGITS(to) + USED(from), ALLOC(to) - USED(from));
       s_mp_copy(DIGITS(from), DIGITS(to), USED(from));
-      
+
     } else {
       if((tmp = s_mp_alloc(USED(from), sizeof(mp_digit))) == NULL)
        return MP_MEM;
@@ -445,7 +445,7 @@ void   mp_clear_array(mp_int mp[], int count)
 {
   ARGCHK(mp != NULL && count > 0, MP_BADARG);
 
-  while(--count >= 0) 
+  while(--count >= 0)
     mp_clear(&mp[count]);
 
 } /* end mp_clear_array() */
@@ -455,7 +455,7 @@ void   mp_clear_array(mp_int mp[], int count)
 /* {{{ mp_zero(mp) */
 
 /*
-  mp_zero(mp) 
+  mp_zero(mp)
 
   Set mp to zero.  Does not change the allocated size of the structure,
   and therefore cannot fail (except on a bad argument, which we ignore)
@@ -506,7 +506,7 @@ mp_err mp_set_int(mp_int *mp, long z)
     if((res = s_mp_mul_2d(mp, CHAR_BIT)) != MP_OKAY)
       return res;
 
-    res = s_mp_add_d(mp, 
+    res = s_mp_add_d(mp,
                     (mp_digit)((v >> (ix * CHAR_BIT)) & UCHAR_MAX));
     if(res != MP_OKAY)
       return res;
@@ -841,9 +841,9 @@ mp_err mp_neg(mp_int *a, mp_int *b)
   if((res = mp_copy(a, b)) != MP_OKAY)
     return res;
 
-  if(s_mp_cmp_d(b, 0) == MP_EQ) 
+  if(s_mp_cmp_d(b, 0) == MP_EQ)
     SIGN(b) = MP_ZPOS;
-  else 
+  else
     SIGN(b) = (SIGN(b) == MP_NEG) ? MP_ZPOS : MP_NEG;
 
   return MP_OKAY;
@@ -870,7 +870,7 @@ mp_err mp_add(mp_int *a, mp_int *b, mp_int *c)
   if(SIGN(a) == SIGN(b)) { /* same sign:  add values, keep sign */
 
     /* Commutativity of addition lets us do this in either order,
-       so we avoid having to use a temporary even if the result 
+       so we avoid having to use a temporary even if the result
        is supposed to replace the output
      */
     if(c == b) {
@@ -880,14 +880,14 @@ mp_err mp_add(mp_int *a, mp_int *b, mp_int *c)
       if(c != a && (res = mp_copy(a, c)) != MP_OKAY)
        return res;
 
-      if((res = s_mp_add(c, b)) != MP_OKAY) 
+      if((res = s_mp_add(c, b)) != MP_OKAY)
        return res;
     }
 
   } else if((cmp = s_mp_cmp(a, b)) > 0) {  /* different sign: a > b   */
 
     /* If the output is going to be clobbered, we will use a temporary
-       variable; otherwise, we'll do it without touching the memory 
+       variable; otherwise, we'll do it without touching the memory
        allocator at all, if possible
      */
     if(c == b) {
@@ -1019,7 +1019,7 @@ mp_err mp_sub(mp_int *a, mp_int *b, mp_int *c)
       mp_clear(&tmp);
 
     } else {
-      if(c != b && ((res = mp_copy(b, c)) != MP_OKAY)) 
+      if(c != b && ((res = mp_copy(b, c)) != MP_OKAY))
        return res;
 
       if((res = s_mp_sub(c, a)) != MP_OKAY)
@@ -1066,12 +1066,12 @@ mp_err mp_mul(mp_int *a, mp_int *b, mp_int *c)
     if((res = s_mp_mul(c, b)) != MP_OKAY)
       return res;
   }
-  
+
   if(sgn == MP_ZPOS || s_mp_cmp_d(c, 0) == MP_EQ)
     SIGN(c) = MP_ZPOS;
   else
     SIGN(c) = sgn;
-  
+
   return MP_OKAY;
 
 } /* end mp_mul() */
@@ -1160,7 +1160,7 @@ mp_err mp_div(mp_int *a, mp_int *b, mp_int *q, mp_int *r)
        return res;
     }
 
-    if(q) 
+    if(q)
       mp_zero(q);
 
     return MP_OKAY;
@@ -1206,10 +1206,10 @@ mp_err mp_div(mp_int *a, mp_int *b, mp_int *q, mp_int *r)
     SIGN(&rtmp) = MP_ZPOS;
 
   /* Copy output, if it is needed      */
-  if(q) 
+  if(q)
     s_mp_exch(&qtmp, q);
 
-  if(r) 
+  if(r)
     s_mp_exch(&rtmp, r);
 
 CLEANUP:
@@ -1286,12 +1286,12 @@ mp_err mp_expt(mp_int *a, mp_int *b, mp_int *c)
     /* Loop over bits of each non-maximal digit */
     for(bit = 0; bit < DIGIT_BIT; bit++) {
       if(d & 1) {
-       if((res = s_mp_mul(&s, &x)) != MP_OKAY) 
+       if((res = s_mp_mul(&s, &x)) != MP_OKAY)
          goto CLEANUP;
       }
 
       d >>= 1;
-      
+
       if((res = s_mp_sqr(&x)) != MP_OKAY)
        goto CLEANUP;
     }
@@ -1311,7 +1311,7 @@ mp_err mp_expt(mp_int *a, mp_int *b, mp_int *c)
     if((res = s_mp_sqr(&x)) != MP_OKAY)
       goto CLEANUP;
   }
-  
+
   if(mp_iseven(b))
     SIGN(&s) = SIGN(a);
 
@@ -1362,7 +1362,7 @@ mp_err mp_mod(mp_int *a, mp_int *m, mp_int *c)
 
   /*
      If |a| > m, we need to divide to get the remainder and take the
-     absolute value.  
+     absolute value.
 
      If |a| < m, we don't need to do any division, just copy and adjust
      the sign (if a is negative).
@@ -1376,7 +1376,7 @@ mp_err mp_mod(mp_int *a, mp_int *m, mp_int *c)
   if((mag = s_mp_cmp(a, m)) > 0) {
     if((res = mp_div(a, m, NULL, c)) != MP_OKAY)
       return res;
-    
+
     if(SIGN(c) == MP_NEG) {
       if((res = mp_add(c, m, c)) != MP_OKAY)
        return res;
@@ -1391,7 +1391,7 @@ mp_err mp_mod(mp_int *a, mp_int *m, mp_int *c)
        return res;
 
     }
-    
+
   } else {
     mp_zero(c);
 
@@ -1464,9 +1464,9 @@ mp_err mp_sqrt(mp_int *a, mp_int *b)
     return MP_RANGE;
 
   /* Special cases for zero and one, trivial     */
-  if(mp_cmp_d(a, 0) == MP_EQ || mp_cmp_d(a, 1) == MP_EQ) 
+  if(mp_cmp_d(a, 0) == MP_EQ || mp_cmp_d(a, 1) == MP_EQ)
     return mp_copy(a, b);
-    
+
   /* Initialize the temporaries we'll use below  */
   if((res = mp_init_size(&t, USED(a))) != MP_OKAY)
     return res;
@@ -1508,7 +1508,7 @@ mp_add_d(&x, 1, &x);
  CLEANUP:
   mp_clear(&x);
  X:
-  mp_clear(&t); 
+  mp_clear(&t);
 
   return res;
 
@@ -1626,7 +1626,7 @@ mp_err mp_sqrmod(mp_int *a, mp_int *m, mp_int *c)
   Compute c = (a ** b) mod m.  Uses a standard square-and-multiply
   method with modular reductions at each step. (This is basically the
   same code as mp_expt(), except for the addition of the reductions)
-  
+
   The modular reductions are done using Barrett's algorithm (see
   s_mp_reduce() below for details)
  */
@@ -1655,7 +1655,7 @@ mp_err mp_exptmod(mp_int *a, mp_int *b, mp_int *m, mp_int *c)
   mp_set(&s, 1);
 
   /* mu = b^2k / m */
-  s_mp_add_d(&mu, 1); 
+  s_mp_add_d(&mu, 1);
   s_mp_lshd(&mu, 2 * USED(m));
   if((res = mp_div(&mu, m, &mu, NULL)) != MP_OKAY)
     goto CLEANUP;
@@ -1866,7 +1866,7 @@ int    mp_cmp_int(mp_int *a, long z)
   int     out;
 
   ARGCHK(a != NULL, MP_EQ);
-  
+
   mp_init(&tmp); mp_set_int(&tmp, z);
   out = mp_cmp(a, &tmp);
   mp_clear(&tmp);
@@ -1953,13 +1953,13 @@ mp_err mp_gcd(mp_int *a, mp_int *b, mp_int *c)
   if(mp_isodd(&u)) {
     if((res = mp_copy(&v, &t)) != MP_OKAY)
       goto CLEANUP;
-    
+
     /* t = -v */
     if(SIGN(&v) == MP_ZPOS)
       SIGN(&t) = MP_NEG;
     else
       SIGN(&t) = MP_ZPOS;
-    
+
   } else {
     if((res = mp_copy(&u, &t)) != MP_OKAY)
       goto CLEANUP;
@@ -2152,7 +2152,7 @@ mp_err mp_xgcd(mp_int *a, mp_int *b, mp_int *g, mp_int *x, mp_int *y)
 
       if(y)
        if((res = mp_copy(&D, y)) != MP_OKAY) goto CLEANUP;
-      
+
       if(g)
        if((res = mp_mul(&gx, &v, g)) != MP_OKAY) goto CLEANUP;
 
@@ -2255,7 +2255,7 @@ void   mp_print(mp_int *mp, FILE *ofp)
 
 /* {{{ mp_read_signed_bin(mp, str, len) */
 
-/* 
+/*
    mp_read_signed_bin(mp, str, len)
 
    Read in a raw value (base 256) into the given mp_int
@@ -2332,16 +2332,16 @@ mp_err  mp_read_unsigned_bin(mp_int *mp, unsigned char *str, int len)
     if((res = mp_add_d(mp, str[ix], mp)) != MP_OKAY)
       return res;
   }
-  
+
   return MP_OKAY;
-  
+
 } /* end mp_read_unsigned_bin() */
 
 /* }}} */
 
 /* {{{ mp_unsigned_bin_size(mp) */
 
-int     mp_unsigned_bin_size(mp_int *mp) 
+int     mp_unsigned_bin_size(mp_int *mp)
 {
   mp_digit   topdig;
   int        count;
@@ -2440,7 +2440,7 @@ int    mp_count_bits(mp_int *mp)
   }
 
   return len;
-  
+
 } /* end mp_count_bits() */
 
 /* }}} */
@@ -2462,14 +2462,14 @@ mp_err  mp_read_radix(mp_int *mp, unsigned char *str, int radix)
   mp_err  res;
   mp_sign sig = MP_ZPOS;
 
-  ARGCHK(mp != NULL && str != NULL && radix >= 2 && radix <= MAX_RADIX, 
+  ARGCHK(mp != NULL && str != NULL && radix >= 2 && radix <= MAX_RADIX,
         MP_BADARG);
 
   mp_zero(mp);
 
   /* Skip leading non-digit characters until a digit or '-' or '+' */
-  while(str[ix] && 
-       (s_mp_tovalue(str[ix], radix) < 0) && 
+  while(str[ix] &&
+       (s_mp_tovalue(str[ix], radix) < 0) &&
        str[ix] != '-' &&
        str[ix] != '+') {
     ++ix;
@@ -2525,7 +2525,7 @@ int    mp_radix_size(mp_int *mp, int radix)
 /* num = number of digits
    qty = number of bits per digit
    radix = target base
-   
+
    Return the number of digits in the specified radix that would be
    needed to express 'num' digits of 'qty' bits each.
  */
@@ -2594,7 +2594,7 @@ mp_err mp_toradix(mp_int *mp, unsigned char *str, int radix)
       ++ix;
       --pos;
     }
-    
+
     mp_clear(&tmp);
   }
 
@@ -2806,11 +2806,11 @@ void     s_mp_exch(mp_int *a, mp_int *b)
 
 /* {{{ s_mp_lshd(mp, p) */
 
-/* 
+/*
    Shift mp leftward by p digits, growing if needed, and zero-filling
    the in-shifted digits at the right end.  This is a convenient
    alternative to multiplication by powers of the radix
- */   
+ */
 
 mp_err   s_mp_lshd(mp_int *mp, mp_size p)
 {
@@ -2829,7 +2829,7 @@ mp_err   s_mp_lshd(mp_int *mp, mp_size p)
   dp = DIGITS(mp);
 
   /* Shift all the significant figures over as needed */
-  for(ix = pos - p; ix >= 0; ix--) 
+  for(ix = pos - p; ix >= 0; ix--)
     dp[ix + p] = dp[ix];
 
   /* Fill the bottom digits with zeroes */
@@ -2844,7 +2844,7 @@ mp_err   s_mp_lshd(mp_int *mp, mp_size p)
 
 /* {{{ s_mp_rshd(mp, p) */
 
-/* 
+/*
    Shift mp rightward by p digits.  Maintains the invariant that
    digits above the precision are all zero.  Digits shifted off the
    end are lost.  Cannot fail.
@@ -3054,7 +3054,7 @@ void     s_mp_div_2d(mp_int *mp, mp_digit d)
   end of the division process).
 
   We multiply by the smallest power of 2 that gives us a leading digit
-  at least half the radix.  By choosing a power of 2, we simplify the 
+  at least half the radix.  By choosing a power of 2, we simplify the
   multiplication and division steps to simple shifts.
  */
 mp_digit s_mp_norm(mp_int *a, mp_int *b)
@@ -3066,7 +3066,7 @@ mp_digit s_mp_norm(mp_int *a, mp_int *b)
     t <<= 1;
     ++d;
   }
-    
+
   if(d != 0) {
     s_mp_mul_2d(a, d);
     s_mp_mul_2d(b, d);
@@ -3188,14 +3188,14 @@ mp_err   s_mp_mul_d(mp_int *a, mp_digit d)
      test guarantees we have enough storage to do this safely.
    */
   if(k) {
-    dp[max] = k; 
+    dp[max] = k;
     USED(a) = max + 1;
   }
 
   s_mp_clamp(a);
 
   return MP_OKAY;
-  
+
 } /* end s_mp_mul_d() */
 
 /* }}} */
@@ -3289,7 +3289,7 @@ mp_err   s_mp_add(mp_int *a, mp_int *b)        /* magnitude addition      */
   }
 
   /* If we run out of 'b' digits before we're actually done, make
-     sure the carries get propagated upward...  
+     sure the carries get propagated upward...
    */
   used = USED(a);
   while(w && ix < used) {
@@ -3351,7 +3351,7 @@ mp_err   s_mp_sub(mp_int *a, mp_int *b)        /* magnitude subtract      */
   /* Clobber any leading zeroes we created    */
   s_mp_clamp(a);
 
-  /* 
+  /*
      If there was a borrow out, then |b| > |a| in violation
      of our input invariant.  We've already done the work,
      but we'll at least complain about it...
@@ -3387,7 +3387,7 @@ mp_err   s_mp_reduce(mp_int *x, mp_int *m, mp_int *mu)
   s_mp_mod_2d(&q, (mp_digit)(DIGIT_BIT * (um + 1)));
 #else
   s_mp_mul_dig(&q, m, um + 1);
-#endif  
+#endif
 
   /* x = x - q */
   if((res = mp_sub(x, &q, x)) != MP_OKAY)
@@ -3441,7 +3441,7 @@ mp_err   s_mp_mul(mp_int *a, mp_int *b)
 
   pb = DIGITS(b);
   for(ix = 0; ix < ub; ++ix, ++pb) {
-    if(*pb == 0) 
+    if(*pb == 0)
       continue;
 
     /* Inner product:  Digits of a */
@@ -3480,7 +3480,7 @@ void   s_mp_kmul(mp_digit *a, mp_digit *b, mp_digit *out, mp_size len)
   for(ix = 0; ix < len; ++ix, ++b) {
     if(*b == 0)
       continue;
-    
+
     pa = a;
     for(jx = 0; jx < len; ++jx, ++pa) {
       pt = out + ix + jx;
@@ -3547,7 +3547,7 @@ mp_err   s_mp_sqr(mp_int *a)
      */
     for(jx = ix + 1, pa2 = DIGITS(a) + jx; jx < used; ++jx, ++pa2) {
       mp_word  u = 0, v;
-      
+
       /* Store this in a temporary to avoid indirections later */
       pt = pbt + ix + jx;
 
@@ -3568,7 +3568,7 @@ mp_err   s_mp_sqr(mp_int *a)
       v = *pt + k;
 
       /* If we do not already have an overflow carry, check to see
-        if the addition will cause one, and set the carry out if so 
+        if the addition will cause one, and set the carry out if so
        */
       u |= ((MP_WORD_MAX - v) < w);
 
@@ -3592,7 +3592,7 @@ mp_err   s_mp_sqr(mp_int *a)
     /* If we are carrying out, propagate the carry to the next digit
        in the output.  This may cascade, so we have to be somewhat
        circumspect -- but we will have enough precision in the output
-       that we won't overflow 
+       that we won't overflow
      */
     kx = 1;
     while(k) {
@@ -3664,7 +3664,7 @@ mp_err   s_mp_div(mp_int *a, mp_int *b)
   while(ix >= 0) {
     /* Find a partial substring of a which is at least b */
     while(s_mp_cmp(&rem, b) < 0 && ix >= 0) {
-      if((res = s_mp_lshd(&rem, 1)) != MP_OKAY) 
+      if((res = s_mp_lshd(&rem, 1)) != MP_OKAY)
        goto CLEANUP;
 
       if((res = s_mp_lshd(&quot, 1)) != MP_OKAY)
@@ -3676,8 +3676,8 @@ mp_err   s_mp_div(mp_int *a, mp_int *b)
     }
 
     /* If we didn't find one, we're finished dividing    */
-    if(s_mp_cmp(&rem, b) < 0) 
-      break;    
+    if(s_mp_cmp(&rem, b) < 0)
+      break;
 
     /* Compute a guess for the next quotient digit       */
     q = DIGIT(&rem, USED(&rem) - 1);
@@ -3695,7 +3695,7 @@ mp_err   s_mp_div(mp_int *a, mp_int *b)
     if((res = s_mp_mul_d(&t, q)) != MP_OKAY)
       goto CLEANUP;
 
-    /* 
+    /*
        If it's too big, back it off.  We should not have to do this
        more than once, or, in rare cases, twice.  Knuth describes a
        method by which this could be reduced to a maximum of once, but
@@ -3719,7 +3719,7 @@ mp_err   s_mp_div(mp_int *a, mp_int *b)
   }
 
   /* Denormalize remainder                */
-  if(d != 0) 
+  if(d != 0)
     s_mp_div_2d(&rem, d);
 
   s_mp_clamp(&quot);
@@ -3727,7 +3727,7 @@ mp_err   s_mp_div(mp_int *a, mp_int *b)
 
   /* Copy quotient back to output         */
   s_mp_exch(&quot, a);
-  
+
   /* Copy remainder back to output        */
   s_mp_exch(&rem, b);
 
@@ -3757,7 +3757,7 @@ mp_err   s_mp_2expt(mp_int *a, mp_digit k)
   mp_zero(a);
   if((res = s_mp_pad(a, dig + 1)) != MP_OKAY)
     return res;
-  
+
   DIGIT(a, dig) |= (1 << bit);
 
   return MP_OKAY;
@@ -3815,7 +3815,7 @@ int      s_mp_cmp_d(mp_int *a, mp_digit d)
   if(ua > 1)
     return MP_GT;
 
-  if(*ap < d) 
+  if(*ap < d)
     return MP_LT;
   else if(*ap > d)
     return MP_GT;
@@ -3857,7 +3857,7 @@ int      s_mp_ispow2(mp_int *v)
     }
 
     return ((uv - 1) * DIGIT_BIT) + extra;
-  } 
+  }
 
   return -1;
 
@@ -3901,7 +3901,7 @@ int      s_mp_ispow2d(mp_digit d)
 int      s_mp_tovalue(char ch, int r)
 {
   int    val, xch;
-  
+
   if(r > 36)
     xch = ch;
   else
@@ -3917,7 +3917,7 @@ int      s_mp_tovalue(char ch, int r)
     val = 62;
   else if(xch == '/')
     val = 63;
-  else 
+  else
     return -1;
 
   if(val < 0 || val >= r)
@@ -3939,7 +3939,7 @@ int      s_mp_tovalue(char ch, int r)
   The results may be odd if you use a radix < 2 or > 64, you are
   expected to know what you're doing.
  */
-  
+
 char     s_mp_todigit(int val, int r, int low)
 {
   char   ch;
@@ -3960,7 +3960,7 @@ char     s_mp_todigit(int val, int r, int low)
 
 /* {{{ s_mp_outlen(bits, radix) */
 
-/* 
+/*
    Return an estimate for how long a string is needed to hold a radix
    r representation of a number with 'bits' significant bits.
 
index 426207a298258aa6ccf85b55ebafb021f721e689..67d3b06af66d26f45df62d92a638c331e9e30efc 100644 (file)
@@ -46,7 +46,7 @@ extern "C" {
 
 
 /* detect 64-bit mode if possible */
-#if defined(__x86_64__) 
+#if defined(__x86_64__)
    #if !(defined(MP_64BIT) && defined(MP_16BIT) && defined(MP_8BIT))
       #define MP_64BIT
    #endif
@@ -82,7 +82,7 @@ extern "C" {
 
    /* this is to make porting into LibTomCrypt easier :-) */
 #ifndef CRYPT
-   #if defined(_MSC_VER) || defined(__BORLANDC__) 
+   #if defined(_MSC_VER) || defined(__BORLANDC__)
       typedef unsigned __int64   ulong64;
       typedef signed __int64     long64;
    #else
@@ -94,20 +94,20 @@ extern "C" {
    typedef unsigned long      mp_digit;
    typedef ulong64            mp_word;
 
-#ifdef MP_31BIT   
+#ifdef MP_31BIT
    /* this is an extension that uses 31-bit digits */
    #define DIGIT_BIT          31
 #else
    /* default case is 28-bit digits, defines MP_28BIT as a handy macro to test */
    #define DIGIT_BIT          28
    #define MP_28BIT
-#endif   
+#endif
 #endif
 
 /* define heap macros */
 #ifndef CRYPT
    /* default to libc stuff */
-   #ifndef XMALLOC 
+   #ifndef XMALLOC
        #define XMALLOC  malloc
        #define XFREE    free
        #define XREALLOC realloc
@@ -169,7 +169,7 @@ extern int KARATSUBA_MUL_CUTOFF,
       #define MP_PREC                 32     /* default digits of precision */
    #else
       #define MP_PREC                 8      /* default digits of precision */
-   #endif   
+   #endif
 #endif
 
 /* size of comba arrays, should be at least 2 * 2**(BITS_PER_WORD - BITS_PER_DIGIT*2) */
@@ -473,7 +473,7 @@ int mp_prime_fermat(mp_int *a, mp_int *b, int *result);
 int mp_prime_miller_rabin(mp_int *a, mp_int *b, int *result);
 
 /* This gives [for a given bit size] the number of trials required
- * such that Miller-Rabin gives a prob of failure lower than 2^-96 
+ * such that Miller-Rabin gives a prob of failure lower than 2^-96
  */
 int mp_prime_rabin_miller_trials(int size);
 
@@ -494,7 +494,7 @@ int mp_prime_is_prime(mp_int *a, int t, int *result);
 int mp_prime_next_prime(mp_int *a, int t, int bbs_style);
 
 /* makes a truly random prime of a given size (bytes),
- * call with bbs = 1 if you want it to be congruent to 3 mod 4 
+ * call with bbs = 1 if you want it to be congruent to 3 mod 4
  *
  * You have to supply a callback which fills in a buffer with random bytes.  "dat" is a parameter you can
  * have passed to the callback (e.g. a state or something).  This function doesn't use "dat" itself
@@ -507,7 +507,7 @@ int mp_prime_next_prime(mp_int *a, int t, int bbs_style);
 /* makes a truly random prime of a given size (bits),
  *
  * Flags are as follows:
- * 
+ *
  *   LTM_PRIME_BBS      - make prime congruent to 3 mod 4
  *   LTM_PRIME_SAFE     - make sure (p-1)/2 is prime as well (implies LTM_PRIME_BBS)
  *   LTM_PRIME_2MSB_OFF - make the 2nd highest bit zero
index 2fdebe6838f4e025e2d06fcbfbeb1f549d5ac95f..a96c36feb82b52b6eb3b8d16bf63ac522ad2ca3a 100644 (file)
@@ -60,9 +60,9 @@
    #undef  BN_FAST_MP_INVMOD_C
 
    /* To safely undefine these you have to make sure your RSA key won't exceed the Comba threshold
-    * which is roughly 255 digits [7140 bits for 32-bit machines, 15300 bits for 64-bit machines] 
+    * which is roughly 255 digits [7140 bits for 32-bit machines, 15300 bits for 64-bit machines]
     * which means roughly speaking you can handle upto 2536-bit RSA keys with these defined without
-    * trouble.  
+    * trouble.
     */
    #undef  BN_S_MP_MUL_DIGS_C
    #undef  BN_S_MP_SQR_C
index fd90ee73a2afad0bad20f1afed9ac1bc29c76272..3e06bf9c12fd1476c81e8e45b8eca75eab03a2b5 100644 (file)
@@ -279,7 +279,7 @@ hash_test (struct hash_foo *hash, struct test *tests)
 
        ectx = EVP_MD_CTX_create();
        EVP_DigestInit_ex(ectx, hash->evp(), NULL);
-       
+
        (*hash->init)(ctx);
        if(strcmp(t->str, ONE_MILLION_A) == 0) {
            int i;
@@ -313,7 +313,7 @@ hash_test (struct hash_foo *hash, struct test *tests)
            printf("\n");
            return 1;
        }
-       
+
        EVP_DigestFinal_ex(ectx, res, &esize);
        EVP_MD_CTX_destroy(ectx);
 
@@ -321,7 +321,7 @@ hash_test (struct hash_foo *hash, struct test *tests)
            printf("EVP %s returned wrong hash size\n", hash->name);
            return 1;
        }
-       
+
        if (memcmp (res, t->hash, hash->hsize) != 0) {
            printf("EVP %s failed here old function where successful!\n",
                   hash->name);
index 92a40fa69abd9e4d4c4bbd17364eef06412b5f60..a890f01a3dd8bf19ba2c0ea17d41c8fd72effdb0 100644 (file)
@@ -141,7 +141,7 @@ PKCS12_key_gen(const void *key, size_t keylen,
                BN_bn2bin(bnI, I + i + vlen - j);
            }
            BN_free(bnI);
-       }       
+       }
        BN_free(bnB);
        BN_free(bnOne);
        size_I = vlen * 2;
index 00d3286f2482716f26567c0b6c67e4ad988204a7..dd2d3e13ecd914ef5cba3377dcf0a2fd11fa0362 100644 (file)
@@ -144,7 +144,7 @@ egd_seed(const void *indata, int size)
            break;
        indata = ((unsigned char *)indata) + len;
        size -= len;
-    }  
+    }
     close(fd);
 }
 
@@ -170,7 +170,7 @@ get_bytes(const char *path, unsigned char *outdata, int size)
            break;
        outdata += len;
        size -= len;
-    }  
+    }
     close(fd);
 
     return ret;
index dcfe42d02dc5259e09bb76b9f76ad8f0311fd1e1..63bd3daa00e6a8a7f7a7fb9bf192ba8dc4c585e9 100644 (file)
@@ -106,7 +106,7 @@ RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits)
        k[j] = Sbox[k[j + 1] ^ k[j + T8]];
 
     for (j = 0; j < 64; j++)
-       key->data[j] = k[(j * 2) + 0] | (k[(j * 2) + 1] << 8);  
+       key->data[j] = k[(j * 2) + 0] | (k[(j * 2) + 1] << 8);
     memset(k, 0, sizeof(k));
 }
 
index 6ef4a83c519f6f732c7ffcf52957c7eb607e74b0..5cd3e9361eb1f417aba289cd0988d8079ade472c 100644 (file)
@@ -188,7 +188,7 @@ ltm_rsa_public_encrypt(int flen, const unsigned char* from,
     memcpy(p, from, flen);
     p += flen;
     assert((p - p0) == size - 1);
-    
+
     mp_read_unsigned_bin(&dec, p0, size - 1);
     free(p0);
 
index 32c118c45bb1f1c3dee89aa1b2494757726da4ae..5bf19429b7e3a45a154a423f3b77a2a5a681f40b 100644 (file)
@@ -142,7 +142,7 @@ tfm_rsa_public_encrypt(int flen, const unsigned char* from,
     memcpy(p, from, flen);
     p += flen;
     assert((p - p0) == size - 1);
-    
+
     fp_init_multi(&enc, &dec, NULL);
     fp_read_unsigned_bin(&dec, p0, size - 1);
     free(p0);
index a3fc0cd7ae65c9be46828cc58679e84b1533b05d..c71ded1b7a8bb0f2e6f6cdb55923b243afaeeede 100644 (file)
  *
  * Speed for RSA in seconds
  *   no key blinding
- *   1000 iteration, 
+ *   1000 iteration,
  *   same rsa keys (1024 and 2048)
  *   operation performed each eteration sign, verify, encrypt, decrypt on a random bit pattern
  *
  * name                1024    2048    4098
- * =================================   
+ * =================================
  * gmp:         0.73     6.60   44.80
  * tfm:         2.45       --      --
  * ltm:                 3.79    20.74  105.41  (default in hcrypto)
@@ -442,11 +442,11 @@ RSA_verify(int type, const unsigned char *from, unsigned int flen,
            free_DigestInfo(&di);
            return -1;
        }
-       
+
        ret = der_heim_oid_cmp(&digest_alg->algorithm,
                               &di.digestAlgorithm.algorithm);
        free_DigestInfo(&di);
-       
+
        if (ret != 0)
            return 0;
        return 1;
@@ -577,7 +577,7 @@ d2i_RSAPrivateKey(RSA *rsa, const unsigned char **pp, size_t len)
        RSA_free(k);
        return NULL;
     }
-       
+
     return k;
 }
 
@@ -701,6 +701,6 @@ d2i_RSAPublicKey(RSA *rsa, const unsigned char **pp, size_t len)
        RSA_free(k);
        return NULL;
     }
-       
+
     return k;
 }
index 5e601bb358c20139b665feeafed0f81de36b7b81..108afdccc800548b962344d4f862b83c9152216e 100644 (file)
@@ -116,7 +116,7 @@ calc (SHA256_CTX *m, uint32_t *in)
 
        T1 = HH + Sigma1(EE) + Ch(EE, FF, GG) + constant_256[i] + data[i];
        T2 = Sigma0(AA) + Maj(AA,BB,CC);
-                       
+
        HH = GG;
        GG = FF;
        FF = EE;
index fb38cadb6f0a2ef439a9f413c1d9efa22d95f084..4bea21666852940bf27010c57bf5de2722f2fb43 100644 (file)
@@ -140,7 +140,7 @@ calc (SHA512_CTX *m, uint64_t *in)
 
        T1 = HH + Sigma1(EE) + Ch(EE, FF, GG) + constant_512[i] + data[i];
        T2 = Sigma0(AA) + Maj(AA,BB,CC);
-                       
+
        HH = GG;
        GG = FF;
        FF = EE;
index b180f8e34f48296d7a794fe0e35766e501e4be87..03db8912843accfb3f22bb9704fcb380f4f4612b 100644 (file)
@@ -348,7 +348,7 @@ test_BN_CTX(void)
 
     if ((c = BN_CTX_new()) == NULL)
        return 1;
-    
+
     for (i = 0; i < testnum; i++) {
        BN_CTX_start(c);
        BN_CTX_end(c);
index 341fcadf16a693c9759ff23fae86abda651997f0..8e54435a093b3214b4a45c41faaea74022f1ea01 100644 (file)
@@ -120,7 +120,7 @@ struct tests camellia128_tests[] = {
 };
 
 struct tests rc4_tests[] = {
-    { 
+    {
        "rc4 8",
        "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
        8,
index d4aaba1b70498b3c1514bc3b61cdef6d0b9d32a8..7a6c8c09a911722a464c2f6d8e3181f0f254740b 100644 (file)
@@ -306,12 +306,12 @@ static void set_prime(BIGNUM *p, char *str)
     prime = (unsigned char *)str2val(str, 16, &len);
     if (prime == NULL)
        errx(1, "failed to parse %s", str);
-    BN_bin2bn(prime, len, p);  
+    BN_bin2bn(prime, len, p);
 }
 
 static void set_generator(BIGNUM *g)
 {
-    BN_set_word(g, 2); 
+    BN_set_word(g, 2);
 }
 
 static void print_secret(unsigned char *sec, size_t len)
@@ -462,13 +462,13 @@ main(int argc, char **argv)
 
     {
        struct prime *p = primes;
-       
+
        for (; p->name; ++p)
            if (check_prime(engine, p))
                printf("%s: shared secret OK\n", p->name);
            else
                printf("%s: shared secret FAILURE\n", p->name);
-       
+
        return 0;
     }
 
index e3d7d1bc5db017621de2687214dfa6766d5f74a6..f6a38effd0d0b84868abe8c81c2805915d342f78 100644 (file)
@@ -198,23 +198,23 @@ main(int argc, char **argv)
        int keylen;
        RSA *rsa;
        FILE *f;
-       
+
        f = fopen(rsa_flag, "rb");
        if (f == NULL)
            err(1, "could not open file %s", rsa_flag);
-       
+
        size = fread(buf, 1, sizeof(buf), f);
        if (size == 0)
            err(1, "failed to read file %s", rsa_flag);
        if (size == sizeof(buf))
            err(1, "key too long in file %s!", rsa_flag);
        fclose(f);
-       
+
        p = buf;
        rsa = d2i_RSAPrivateKey(NULL, &p, size);
        if (rsa == NULL)
            err(1, "failed to parse key in file %s", rsa_flag);
-       
+
        RSA_set_method(rsa, ENGINE_get_RSA(engine));
 
        /*
@@ -274,7 +274,7 @@ main(int argc, char **argv)
            "EE386BFB" "5A899FA5" "AE9F2411" "7C4B1FE6" "49286651" "ECE65381"
            "FFFFFFFF" "FFFFFFFF";
        const char *g = "02";
-       
+
        /*
         * Try generated keys
         */
@@ -306,19 +306,19 @@ main(int argc, char **argv)
 
            server = DH_new_method(engine);
            client = DH_new_method(engine);
-       
+
            BN_hex2bn(&server->p, p);
            BN_hex2bn(&client->p, p);
            BN_hex2bn(&server->g, g);
            BN_hex2bn(&client->g, g);
-       
+
            BN_hex2bn(&client->priv_key, dhtests[i].cpriv);
            BN_hex2bn(&client->pub_key, dhtests[i].cpub);
            BN_hex2bn(&server->priv_key, dhtests[i].spriv);
            BN_hex2bn(&server->pub_key, dhtests[i].spub);
 
            dh_test(server, client);
-       
+
            DH_free(server);
            DH_free(client);
        }
index 6d307c35aab87a9f480cd67947ba6f7ae7b9f942..d8c3e69cd2efe02786e91177ce6a5a798f2cabeb 100644 (file)
@@ -71,6 +71,6 @@ main(int argc, char **argv)
        printf("wrong answer\n");
        return 1;
     }
-       
+
     return 0;
 }
index 272d39d9943b26b87d1a37a0d7511adb658f293e..c90ed3cba0b93ce7102cd30ff052560c121d1a61 100644 (file)
@@ -134,7 +134,7 @@ main(int argc, char **argv)
        else
            errx(1, "unknown method %s", rand_method);
     }
-       
+
     if (RAND_file_name(path, sizeof(path)) == NULL)
        errx(1, "RAND_file_name failed");
 
@@ -161,7 +161,7 @@ main(int argc, char **argv)
                c = c >> 1;
            }
        }
-       
+
        for (bit = 0; bit < 8; bit++) {
 
            res = ((double)abs(len - bits[bit] * 2)) / (double)len;
index 1f7c0efabf6ffb8fc283ab4609668f39729edbf0..3449d9b2a91c2418aa2ce3276c56efbc2a951afb 100644 (file)
@@ -334,13 +334,13 @@ main(int argc, char **argv)
                0x6d, 0x33, 0xf9, 0x40, 0x75, 0x5b, 0x4e, 0xc5, 0x90, 0x35,
                0x48, 0xab, 0x75, 0x02, 0x09, 0x76, 0x9a, 0xb4, 0x7d, 0x6b
            };
-       
+
            check_rsa(sha1, sizeof(sha1), rsa, RSA_PKCS1_PADDING);
        }
-       
+
        for (i = 0; i < 128; i++) {
            unsigned char sha1[20];
-       
+
            RAND_bytes(sha1, sizeof(sha1));
            check_rsa(sha1, sizeof(sha1), rsa, RSA_PKCS1_PADDING);
        }
@@ -371,9 +371,9 @@ main(int argc, char **argv)
 
        e = BN_new();
        BN_set_word(e, 0x10001);
-       
+
        BN_GENCB_set(&cb, cb_func, NULL);
-       
+
        RAND_bytes(&n, sizeof(n));
        n &= 0x1ff;
        n += 1024;
@@ -382,7 +382,7 @@ main(int argc, char **argv)
            errx(1, "RSA_generate_key_ex");
 
        BN_free(e);
-       
+
        for (j = 0; j < 8; j++) {
            unsigned char sha1[20];
            RAND_bytes(sha1, sizeof(sha1));
index e32bb9a0bec4bf4031875556b5110021b4fddbc0..d0714fe6d5530b0271db5bdbc452d4f9d2fde468 100644 (file)
@@ -62,7 +62,7 @@ intr(int sig)
  */
 
 static int
-read_string(const char *preprompt, const char *prompt, 
+read_string(const char *preprompt, const char *prompt,
            char *buf, size_t len, int echo)
 {
     int of = 0;
@@ -86,13 +86,13 @@ read_string(const char *preprompt, const char *prompt,
     if(of)
        p--;
     *p = 0;
-    
+
     if(echo == 0){
        printf("\n");
     }
 
     signal(SIGINT, oldsigintr);
-    
+
     if(intr_flag)
        return -2;
     if(of)
index f6f8be70303e88dc141644b951c2ccb4bad33f71..48b9bfc6e352031fb2f6ae63bc77baf8bd8c1245 100644 (file)
@@ -69,7 +69,7 @@ struct tests tests[] = {
        "\xdc\x95\xc0\x78\xa2\x40\x89\x89\xad\x48\xa2\x14\x92\x84\x20\x87"
     },
 #if 0
-    { 
+    {
        EVP_aes_128_cfb8,
        "aes-cfb8-128",
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
@@ -93,7 +93,7 @@ struct tests tests[] = {
        "\x55\x95\x97\x76\xa9\x6c\x66\x40\x64\xc7\xf4\x1c\x21\xb7\x14\x1b"
     },
 #if 0
-    { 
+    {
        EVP_camellia_128_cbc,
        "camellia128",
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
@@ -105,7 +105,7 @@ struct tests tests[] = {
        NULL
     },
 #endif
-    { 
+    {
        EVP_rc4,
        "rc4 8",
        "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
index abaa5e3235be79b4455694d1702420a3dfd7bb3d..2715adf63dca218ebc7b3cf5b3b90d7824385802 100644 (file)
@@ -178,7 +178,7 @@ hdb_remove_aliases(krb5_context context, HDB *db, krb5_data *key)
        return 0;
     else if (code)
        return code;
-       
+
     code = hdb_value2entry(context, &value, &oldentry);
     krb5_data_free(&value);
     if (code)
@@ -220,7 +220,7 @@ hdb_add_aliases(krb5_context context, HDB *db,
     for (i = 0; i < aliases->aliases.len; i++) {
        hdb_entry_alias entryalias;
        entryalias.principal = entry->entry.principal;
-       
+
        hdb_principal2key(context, &aliases->aliases.val[i], &key);
        code = hdb_entry_alias2value(context, &entryalias, &value);
        if (code) {
index 5019016ed563c6103f882d2655b9d840f4cbf695..52e394106eca669387873e0c0a526888a977a077 100644 (file)
@@ -112,7 +112,7 @@ hdb_get_dbinfo(krb5_context context, struct hdb_dbinfo **dbp)
        if (ret == 0 && di) {
            databases = di;
            dt = &di->next;
-       }               
+       }
 
        for ( ; db_binding != NULL; db_binding = db_binding->next) {
 
index c1bad867960118b50aa88c74ff772c13913bb166..ab2afb5d74babc3d71433b0b0d345950060006f7 100644 (file)
@@ -206,7 +206,7 @@ hdb_keytab_create(krb5_context context, HDB ** db, const char *arg)
        krb5_set_error_message(context, ENOMEM, "malloc: out of memory");
        return ENOMEM;
     }
-       
+
 
     (*db)->hdb_db = k;
 
index b20f2c031980caf19ca9c9ef855d100761718087..1b4024aa540a8bb5ba47a8a961da1e13454a150d 100644 (file)
@@ -407,7 +407,7 @@ LDAP_entry2mods(krb5_context context, HDB * db, hdb_entry_ex * ent,
            goto out;
 
        is_new_entry = FALSE;
-       
+
        vals = ldap_get_values_len(HDB2LDAP(db), msg, "objectClass");
        if (vals) {
            int num_objectclasses = ldap_count_values_len(vals);
@@ -449,7 +449,7 @@ LDAP_entry2mods(krb5_context context, HDB * db, hdb_entry_ex * ent,
        ret = LDAP_addmod(&mods, LDAP_MOD_ADD, "objectClass", "top");
        if (ret)
            goto out;
-       
+
        /* account is the structural object class */
        if (is_account == FALSE) {
            ret = LDAP_addmod(&mods, LDAP_MOD_ADD, "objectClass",
@@ -628,13 +628,13 @@ LDAP_entry2mods(krb5_context context, HDB * db, hdb_entry_ex * ent,
            char *ntHexPassword;
            char *nt;
            time_t now = time(NULL);
-               
+
            /* the key might have been 'sealed', but samba passwords
               are clear in the directory */
            ret = hdb_unseal_key(context, db, &ent->entry.keys.val[i]);
            if (ret)
                goto out;
-               
+
            nt = ent->entry.keys.val[i].key.keyvalue.data;
            /* store in ntPassword, not krb5key */
            ret = hex_encode(nt, 16, &ntHexPassword);
@@ -663,7 +663,7 @@ LDAP_entry2mods(krb5_context context, HDB * db, hdb_entry_ex * ent,
                if (ret)
                    goto out;
            }
-               
+
        } else if (is_heimdal_entry) {
            unsigned char *buf;
            size_t len, buf_size;
@@ -790,9 +790,9 @@ need_quote(unsigned char c)
 {
     return (c & 0x80) ||
        (c < 32) ||
-       (c == '(') || 
-       (c == ')') || 
-       (c == '*') || 
+       (c == '(') ||
+       (c == ')') ||
+       (c == '*') ||
        (c == '\\') ||
        (c == 0x7f);
 }
@@ -843,7 +843,7 @@ LDAP__lookup_princ(krb5_context context,
     if (ret)
        return ret;
 
-    /* 
+    /*
      * Quote searches that contain filter language, this quote
      * searches for *@REALM, which takes very long time.
      */
@@ -885,7 +885,7 @@ LDAP__lookup_princ(krb5_context context,
        filter = NULL;
        ldap_msgfree(*msg);
        *msg = NULL;
-       
+
        ret = escape_value(context, userid, &quote);
        if (ret)
            goto out;
@@ -899,7 +899,7 @@ LDAP__lookup_princ(krb5_context context,
            krb5_set_error_message(context, ret, "asprintf: out of memory");
            goto out;
        }
-       
+
        ret = LDAP_no_size_limit(context, HDB2LDAP(db));
        if (ret)
            goto out;
@@ -1136,7 +1136,7 @@ LDAP_message2entry(krb5_context context, HDB * db, LDAPMessage * msg,
            if (etypes == NULL) {
                ret = ENOMEM;
                krb5_set_error_message(context, ret, "malloc: out of memory");
-               goto out;                       
+               goto out;
            }
            ent->entry.etypes->val = etypes;
            ent->entry.etypes->val[ent->entry.etypes->len] =
@@ -1248,7 +1248,7 @@ LDAP_message2entry(krb5_context context, HDB * db, LDAPMessage * msg,
             }
         }
 
-       delta = krb5_config_get_time_default(context, NULL, 
+       delta = krb5_config_get_time_default(context, NULL,
                                             365 * 24 * 60 * 60,
                                             "kadmin",
                                             "password_lifetime",
@@ -1318,21 +1318,21 @@ LDAP_message2entry(krb5_context context, HDB * db, LDAPMessage * msg,
     ret = LDAP_get_string_value(db, msg, "sambaAcctFlags", &samba_acct_flags);
     if (ret == 0) {
        /* parse the [UXW...] string:
-       
-          'N'    No password   
-          'D'    Disabled      
-          'H'    Homedir required      
-          'T'    Temp account. 
-          'U'    User account (normal)         
-          'M'    MNS logon user account - what is this ?       
-          'W'    Workstation account   
-          'S'    Server account        
-          'L'    Locked account        
-          'X'    No Xpiry on password  
-          'I'    Interdomain trust account     
-       
-       */      
-       
+
+          'N'    No password
+          'D'    Disabled
+          'H'    Homedir required
+          'T'    Temp account.
+          'U'    User account (normal)
+          'M'    MNS logon user account - what is this ?
+          'W'    Workstation account
+          'S'    Server account
+          'L'    Locked account
+          'X'    No Xpiry on password
+          'I'    Interdomain trust account
+
+       */
+
        int i;
        int flags_len = strlen(samba_acct_flags);
 
index 5ee9f6918c0e4f40c2e892b83e08852ca6014bea..cd619b3b8eb48de0496962996c627a59d68a845f 100644 (file)
@@ -146,7 +146,7 @@ fix_salt(krb5_context context, hdb_entry *ent, int key_num)
        size_t len;
        size_t i;
        char *p;
-       
+
        len = 0;
        for (i = 0; i < ent->principal->name.name_string.len; ++i)
            len += strlen(ent->principal->name.name_string.val[i]);
@@ -212,7 +212,7 @@ mdb_value2entry(krb5_context context, krb5_data *data, krb5_kvno kvno, hdb_entry
        krb5_set_error_message(context, ENOMEM, "out of memory");
        return ENOMEM;
     }
-    
+
     krb5_storage_set_byteorder(sp, KRB5_STORAGE_BYTEORDER_LE);
 
     /*
@@ -422,7 +422,7 @@ mdb_value2entry(krb5_context context, krb5_data *data, krb5_kvno kvno, hdb_entry
                        }
                        k->salt->salt.length = u16;
                        krb5_storage_read(sp, k->salt->salt.data, k->salt->salt.length);
-                   }                   
+                   }
                    fix_salt(context, entry, entry->keys.len - 1);
                } else {
                    /*
index d774168931317026249072a2f8817a5476eddc19..e063588874ae31b6e434ba451b9358e0dcf73757 100644 (file)
@@ -360,13 +360,13 @@ hdb_sqlite_make_database(krb5_context context, HDB *db, const char *filename)
     if(ret) goto out;
 
     return 0;
-    
+
  out:
     if (hsdb->db)
         sqlite3_close(hsdb->db);
     if (created_file)
         unlink(hsdb->db_file);
-    
+
     return ret;
 }
 
@@ -430,7 +430,7 @@ hdb_sqlite_fetch_kvno(krb5_context context, HDB *db, krb5_const_principal princi
            goto out;
         }
     }
-    
+
     ret = 0;
 
 out:
@@ -496,12 +496,12 @@ hdb_sqlite_store(krb5_context context, HDB *db, unsigned flags,
                                "BEGIN IMMEDIATE TRANSACTION", EINVAL);
     if(ret != SQLITE_OK) {
        ret = EINVAL;
-        krb5_set_error_message(context, ret, 
+        krb5_set_error_message(context, ret,
                               "SQLite BEGIN TRANSACTION failed: %s",
                               sqlite3_errmsg(hsdb->db));
         goto rollback;
     }
-    
+
     ret = krb5_unparse_name(context,
                             entry->entry.principal, &principal_string);
     if (ret) {
@@ -540,7 +540,7 @@ hdb_sqlite_store(krb5_context context, HDB *db, unsigned flags,
             goto rollback;
 
         entry_id = sqlite3_column_int64(get_ids, 1);
-        
+
     } else if(ret == SQLITE_ROW) { /* Found a principal */
 
         if(! (flags & HDB_F_REPLACE)) /* Not allowed to replace it */
@@ -584,7 +584,7 @@ hdb_sqlite_store(krb5_context context, HDB *db, unsigned flags,
         ret = hdb_sqlite_step_once(context, db, hsdb->add_alias);
 
         free(alias_string);
-        
+
         if(ret != SQLITE_DONE)
             goto rollback;
     }
@@ -594,12 +594,12 @@ hdb_sqlite_store(krb5_context context, HDB *db, unsigned flags,
 commit:
 
     free(principal_string);
-    
+
     krb5_data_free(&value);
 
     sqlite3_clear_bindings(get_ids);
     sqlite3_reset(get_ids);
-    
+
     ret = hdb_sqlite_exec_stmt(context, hsdb->db, "COMMIT", EINVAL);
     if(ret != SQLITE_OK)
        krb5_warnx(context, "hdb-sqlite: COMMIT problem: %d: %s",
@@ -644,8 +644,8 @@ hdb_sqlite_close(krb5_context context, HDB *db)
  *
  * @param context The current krb5 context
  * @param db      Heimdal database handle
- * @param flags   
- * @param mode_t  
+ * @param flags
+ * @param mode_t
  *
  * @return        Always returns 0
  */
@@ -678,7 +678,7 @@ hdb_sqlite_destroy(krb5_context context, HDB *db)
     free(hsdb->db_file);
     free(db->hdb_db);
     free(db);
-    
+
     return ret;
 }
 
@@ -793,7 +793,7 @@ hdb_sqlite_remove(krb5_context context, HDB *db,
     char *principal_string;
     hdb_sqlite_db *hsdb = (hdb_sqlite_db*)(db->hdb_db);
     sqlite3_stmt *remove = hsdb->remove;
-    
+
     ret = krb5_unparse_name(context, principal, &principal_string);
     if (ret) {
         free(principal_string);
@@ -810,7 +810,7 @@ hdb_sqlite_remove(krb5_context context, HDB *db,
                               ret);
     } else
         ret = 0;
-    
+
     sqlite3_clear_bindings(remove);
     sqlite3_reset(remove);
 
index 4ce401aae968914caa98e76f654caa3caa5461d8..ca05cc4a1785c2a2896a788afbb89ab6a8588228 100644 (file)
@@ -319,7 +319,7 @@ find_dynamic_method (krb5_context context,
 
     if (asprintf(&symbol, "hdb_%s_interface", prefix) == -1)
        krb5_errx(context, 1, "out of memory");
-       
+
     mso = (struct hdb_so_method *) dlsym(dl, symbol);
     if (mso == NULL) {
        krb5_warnx(context, "error finding symbol %s in %s: %s\n",
@@ -434,7 +434,7 @@ _hdb_keytab2hdb_entry(krb5_context context,
 
     entry->entry.keys.val[0].mkvno = NULL;
     entry->entry.keys.val[0].salt = NULL;
-    
+
     return krb5_copy_keyblock_contents(context,
                                       &ktentry->keyblock,
                                       &entry->entry.keys.val[0].key);
index fffda7aef00b4124e13f93fecce18c9530479536..469ec82ec0bd27ad726a5ba895e3d1710ea73bc2 100644 (file)
@@ -153,7 +153,7 @@ typedef struct HDB{
     /**
      * As part of iteration, fetch next entry
      */
-    krb5_error_code (*hdb_nextkey)(krb5_context, struct HDB*, 
+    krb5_error_code (*hdb_nextkey)(krb5_context, struct HDB*,
                                   unsigned, hdb_entry_ex*);
     /**
      * Lock database
@@ -221,7 +221,7 @@ typedef struct HDB{
      * ->hdb_store() into the database. The backend will still perform
      * all other operations, increasing the kvno, and update
      * modification timestamp.
-     * 
+     *
      * The backend needs to call _kadm5_set_keys() and perform password
      * quality checks.
      */
index 4f724e74133e2b7538e35e52aa098da6ef3e52ac..3d0b9d7c1b3168cd53e5a2c43e1aa7901f5ba255 100644 (file)
@@ -221,10 +221,10 @@ add_enctype_to_key_set(Key **key_set, size_t *nkeyset,
            free_Key(&key);
            return ENOMEM;
        }
-       
+
        key.salt->type = salt->salttype;
        krb5_data_zero (&key.salt->salt);
-       
+
        ret = krb5_data_copy(&key.salt->salt,
                             salt->saltvalue.data,
                             salt->saltvalue.length);
@@ -290,7 +290,7 @@ hdb_generate_key_set(krb5_context context, krb5_principal principal,
            p = "des:afs3-salt";
        else if (strcmp(p, "arcfour-hmac-md5") == 0)
            p = "arcfour-hmac-md5:pw-salt";
-       
+
        memset(&salt, 0, sizeof(salt));
 
        ret = parse_key_set(context, p,
index c3445986f84b05b2273826b8b3222d5a92733cf0..c72b797dab4d7fea631186d930b32986f7ae98ee 100644 (file)
@@ -37,7 +37,7 @@
 
 struct hdb_data {
     char *dbname;
-    char *mkey;   
+    char *mkey;
 };
 
 struct hdb_cursor {
@@ -204,13 +204,13 @@ hdb_get_entry(krb5_context context,
        (*db->hdb_destroy)(context, db);
        goto out2;
     }
-       
+
     ret = (*db->hdb_open)(context, db, O_RDONLY, 0);
     if (ret) {
        (*db->hdb_destroy)(context, db);
        goto out2;
     }
-    
+
     ret = (*db->hdb_fetch_kvno)(context, db, principal,
                                HDB_F_DECRYPT|HDB_F_KVNO_SPECIFIED|
                                HDB_F_GET_CLIENT|HDB_F_GET_SERVER|HDB_F_GET_KRBTGT,
@@ -268,10 +268,10 @@ hdb_start_seq_get(krb5_context context,
     const char *dbname = d->dbname;
     const char *mkey   = d->mkey;
     HDB *db;
-   
+
     if (dbname == NULL) {
        /*
-        * We don't support enumerating without being told what 
+        * We don't support enumerating without being told what
         * backend to enumerate on
         */
        ret = KRB5_KT_NOTFOUND;
@@ -286,7 +286,7 @@ hdb_start_seq_get(krb5_context context,
        (*db->hdb_destroy)(context, db);
        return ret;
     }
-       
+
     ret = (*db->hdb_open)(context, db, O_RDONLY, 0);
     if (ret) {
        (*db->hdb_destroy)(context, db);
@@ -314,16 +314,16 @@ static int KRB5_CALLCONV
 hdb_next_entry(krb5_context context,
               krb5_keytab id,
               krb5_keytab_entry *entry,
-              krb5_kt_cursor *cursor) 
+              krb5_kt_cursor *cursor)
 {
     struct hdb_cursor *c = cursor->data;
     krb5_error_code ret;
-    
+
     memset(entry, 0, sizeof(*entry));
 
     if (c->first) {
        c->first = FALSE;
-       ret = (c->db->hdb_firstkey)(context, c->db, 
+       ret = (c->db->hdb_firstkey)(context, c->db,
                                    HDB_F_DECRYPT|
                                    HDB_F_GET_CLIENT|HDB_F_GET_SERVER|HDB_F_GET_KRBTGT,
                                    &c->hdb_entry);
@@ -331,15 +331,15 @@ hdb_next_entry(krb5_context context,
            return KRB5_KT_END;
        else if (ret)
            return ret;
-       
+
        if (c->hdb_entry.entry.keys.len == 0)
            hdb_free_entry(context, &c->hdb_entry);
        else
            c->next = FALSE;
-    } 
-    
+    }
+
     while (c->next) {
-       ret = (c->db->hdb_nextkey)(context, c->db, 
+       ret = (c->db->hdb_nextkey)(context, c->db,
                                   HDB_F_DECRYPT|
                                   HDB_F_GET_CLIENT|HDB_F_GET_SERVER|HDB_F_GET_KRBTGT,
                                   &c->hdb_entry);
@@ -347,21 +347,21 @@ hdb_next_entry(krb5_context context,
            return KRB5_KT_END;
        else if (ret)
            return ret;
-       
+
        /* If no keys on this entry, try again */
        if (c->hdb_entry.entry.keys.len == 0)
            hdb_free_entry(context, &c->hdb_entry);
        else
            c->next = FALSE;
     }
-    
+
     /*
      * Return next enc type (keytabs are one slot per key, while
      * hdb is one record per principal.
      */
-    
-    ret = krb5_copy_principal(context, 
-                             c->hdb_entry.entry.principal, 
+
+    ret = krb5_copy_principal(context,
+                             c->hdb_entry.entry.principal,
                              &entry->principal);
     if (ret)
        return ret;
@@ -376,12 +376,12 @@ hdb_next_entry(krb5_context context,
        return ret;
     }
     c->key_idx++;
-    
-    /* 
+
+    /*
      * Once we get to the end of the list, signal that we want the
      * next entry
      */
-    
+
     if ((size_t)c->key_idx == c->hdb_entry.entry.keys.len) {
        hdb_free_entry(context, &c->hdb_entry);
        c->next = TRUE;
index 87d939f42eaaedd9d2603b7ea9c24fe819dfdc1a..9a13d55a517b1c6384827f9e647d2a7415b6b107 100644 (file)
@@ -153,7 +153,7 @@ read_master_mit(krb5_context context, const char *filename,
     krb5_storage *sp;
     int16_t enctype;
     krb5_keyblock key;
-       
+
     fd = open(filename, O_RDONLY | O_BINARY);
     if(fd < 0) {
        int save_errno = errno;
@@ -200,7 +200,7 @@ read_master_encryptionkey(krb5_context context, const char *filename,
     unsigned char buf[256];
     ssize_t len;
     size_t ret_len;
-       
+
     fd = open(filename, O_RDONLY | O_BINARY);
     if(fd < 0) {
        int save_errno = errno;
@@ -246,7 +246,7 @@ read_master_krb4(krb5_context context, const char *filename,
     krb5_error_code ret;
     unsigned char buf[256];
     ssize_t len;
-       
+
     fd = open(filename, O_RDONLY | O_BINARY);
     if(fd < 0) {
        int save_errno = errno;
@@ -406,7 +406,7 @@ _hdb_mkey_encrypt(krb5_context context, hdb_master_key key,
 krb5_error_code
 hdb_unseal_key_mkey(krb5_context context, Key *k, hdb_master_key mkey)
 {
-       
+
     krb5_error_code ret;
     krb5_data res;
     size_t keysize;
@@ -415,7 +415,7 @@ hdb_unseal_key_mkey(krb5_context context, Key *k, hdb_master_key mkey)
 
     if(k->mkvno == NULL)
        return 0;
-       
+
     key = _hdb_find_master_key(k->mkvno, mkey);
 
     if (key == NULL)
@@ -519,7 +519,7 @@ hdb_seal_key_mkey(krb5_context context, Key *k, hdb_master_key mkey)
            return ENOMEM;
     }
     *k->mkvno = key->keytab.vno;
-       
+
     return 0;
 }
 
index ee7b7f05b7f88cb718f0d3c0747a1d879fbb97ad..11032d078beef3a28b5dd40c5b32a9fdf5e9ba6e 100644 (file)
@@ -44,7 +44,7 @@ main(int argc, char **argv)
        ret = hdb_read_master_key(context, mkey_file, &mkey);
        if (ret)
            krb5_err(context, 1, ret, "failed to read master key %s", mkey_file);
-      
+
        hdb_free_master_key(context, mkey);
     } else
       krb5_errx(context, 1, "no command option given");
index 4b34e7ef5e4f997f0d039bea1257a115bf1bcb5c..3f4d9b3ef0ba968abf190fdb5b17aaf5854c4d8c 100644 (file)
@@ -1,19 +1,19 @@
 /***********************************************************************
  * Copyright (c) 2009, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -26,7 +26,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 #include<windows.h>
index 3faf546218475a6165b5eeb0b4d59e77f657cb45..cb5a7be62cc30626a062a4c62dcc89492d3db791 100644 (file)
@@ -610,7 +610,7 @@ hx509_ca_tbs_add_san_pkinit(hx509_context context,
        const char *str;
        char *q;
        int n;
-       
+
        /* count number of component */
        n = 1;
        for(str = principal; *str != '\0' && *str != '@'; str++){
@@ -633,7 +633,7 @@ hx509_ca_tbs_add_san_pkinit(hx509_context context,
            goto out;
        }
        p.principalName.name_string.len = n;
-       
+
        p.principalName.name_type = KRB5_NT_PRINCIPAL;
        q = s = strdup(principal);
        if (q == NULL) {
@@ -866,7 +866,7 @@ hx509_ca_tbs_set_unique(hx509_context context,
 
     der_free_bit_string(&tbs->subjectUniqueID);
     der_free_bit_string(&tbs->issuerUniqueID);
-    
+
     if (subjectUniqueID) {
        ret = der_copy_bit_string(subjectUniqueID, &tbs->subjectUniqueID);
        if (ret)
index 710ed889a8a095ff458d034ad8048004cfafa80d..70e575603779ed53ed0da3198a5eea1a02c40594 100644 (file)
@@ -574,7 +574,7 @@ hx509_verify_ctx_f_allow_default_trustanchors(hx509_verify_ctx ctx, int boolean)
 }
 
 void
-hx509_verify_ctx_f_allow_best_before_signature_algs(hx509_context ctx, 
+hx509_verify_ctx_f_allow_best_before_signature_algs(hx509_context ctx,
                                                    int boolean)
 {
     if (boolean)
@@ -969,7 +969,7 @@ _hx509_cert_is_parent_cmp(const Certificate *subject,
            return -1;
        if (ai.authorityCertIssuer->val[0].element != choice_GeneralName_directoryName)
            return -1;
-       
+
        name.element =
            ai.authorityCertIssuer->val[0].u.directoryName.element;
        name.u.rdnSequence =
@@ -1126,7 +1126,7 @@ find_parent(hx509_context context,
            hx509_clear_error_string(context);
            return HX509_ISSUER_NOT_FOUND;
        }
-       
+
        hx509_set_error_string(context, 0, HX509_ISSUER_NOT_FOUND,
                               "Failed to find issuer for "
                               "certificate with subject: '%s'", str);
@@ -1515,7 +1515,7 @@ hx509_cert_get_SPKI_AlgorithmIdentifier(hx509_context context,
 }
 
 static int
-get_x_unique_id(hx509_context context, const char *name, 
+get_x_unique_id(hx509_context context, const char *name,
                const heim_bit_string *cert, heim_bit_string *subject)
 {
     int ret;
@@ -1875,7 +1875,7 @@ match_tree(const GeneralSubtrees *t, const Certificate *c, int *match)
            && !subject_null_p(c))
        {
            GeneralName certname;
-       
+
            memset(&certname, 0, sizeof(certname));
            certname.element = choice_GeneralName_directoryName;
            certname.u.directoryName.element =
@@ -1986,7 +1986,7 @@ hx509_verify_path(hx509_context context,
     memset(&proxy_issuer, 0, sizeof(proxy_issuer));
 
     ret = init_name_constraints(&nc);
-    if (ret)   
+    if (ret)
        return ret;
 
     path.val = NULL;
@@ -2038,7 +2038,7 @@ hx509_verify_path(hx509_context context,
        time_t t;
 
        c = _hx509_get_cert(path.val[i]);
-       
+
        /*
         * Lets do some basic check on issuer like
         * keyUsage.keyCertSign and basicConstraints.cA bit depending
@@ -2070,7 +2070,7 @@ hx509_verify_path(hx509_context context,
 
            break;
        case PROXY_CERT: {
-           ProxyCertInfo info; 
+           ProxyCertInfo info;
 
            if (is_proxy_cert(context, c, &info) == 0) {
                size_t j;
@@ -2087,7 +2087,7 @@ hx509_verify_path(hx509_context context,
                }
                /* XXX MUST check info.proxyPolicy */
                free_ProxyCertInfo(&info);
-               
+
                j = 0;
                if (find_extension(c, &asn1_oid_id_x509_ce_subjectAltName, &j)) {
                    ret = HX509_PROXY_CERT_INVALID;
@@ -2105,7 +2105,7 @@ hx509_verify_path(hx509_context context,
                                           "forbidden issuerAltName");
                    goto out;
                }
-                       
+
                /*
                 * The subject name of the proxy certificate should be
                 * CN=XXX,<proxy issuer>, prune of CN and check if its
@@ -2196,7 +2196,7 @@ hx509_verify_path(hx509_context context,
                }
                if (cert->basename)
                    hx509_name_free(&cert->basename);
-               
+
                ret = _hx509_name_from_Name(&proxy_issuer, &cert->basename);
                if (ret) {
                    hx509_clear_error_string(context);
@@ -2211,7 +2211,7 @@ hx509_verify_path(hx509_context context,
                                      i - proxy_cert_depth - selfsigned_depth);
        if (ret)
            goto out;
-       
+
        /*
         * Don't check the trust anchors expiration time since they
         * are transported out of band, from RFC3820.
@@ -2352,7 +2352,7 @@ hx509_verify_path(hx509_context context,
                                   "Failed to verify signature of certificate");
            goto out;
        }
-       /* 
+       /*
         * Verify that the sigature algorithm "best-before" date is
         * before the creation date of the certificate, do this for
         * trust anchors too, since any trust anchor that is created
@@ -2362,7 +2362,7 @@ hx509_verify_path(hx509_context context,
         */
 
        if (i != 0 && (ctx->flags & HX509_VERIFY_CTX_F_NO_BEST_BEFORE_CHECK) == 0) {
-           time_t notBefore = 
+           time_t notBefore =
                _hx509_Time2time_t(&c->tbsCertificate.validity.notBefore);
            ret = _hx509_signature_best_before(context,
                                               &c->signatureAlgorithm,
@@ -2481,7 +2481,7 @@ hx509_verify_hostname(hx509_context context,
                heim_printable_string hn;
                hn.data = rk_UNCONST(hostname);
                hn.length = strlen(hostname);
-               
+
                if (der_printable_string_cmp(&san.val[j].u.dNSName, &hn) == 0) {
                    free_GeneralNames(&san);
                    return 0;
@@ -2659,7 +2659,7 @@ hx509_cert_get_friendly_name(hx509_cert cert)
     ret = decode_PKCS9_friendlyName(a->data.data, a->data.length, &n, &sz);
     if (ret)
        return NULL;
-       
+
     if (n.len != 1) {
        free_PKCS9_friendlyName(&n);
        return NULL;
@@ -3524,10 +3524,10 @@ _hx509_cert_to_env(hx509_context context, hx509_cert cert, hx509_env *env)
                                   "Out of memory");
            goto out;
        }
-       
+
        ret = hx509_env_add(context, &envhash, "sha1", buf);
        free(buf);
-       if (ret) 
+       if (ret)
            goto out;
 
        ret = hx509_env_add_binding(context, &envcert, "hash", envhash);
index d2b39d041fcfaf3ae2b0382673c18b5bed37f023..8a3026c7e635179e0814f3a1ecb8501ed1cc2efa 100644 (file)
 
 
 unsigned char char_map[] = {
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x06 ,  0x00 ,  0x00 ,  0x10 ,  0x00 ,  0x00 ,  0x00 ,  0x00 ,  
-       0x00 ,  0x00 ,  0x00 ,  0x12 ,  0x12 ,  0x02 ,  0x02 ,  0x02 ,  
-       0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  
-       0x02 ,  0x02 ,  0x02 ,  0x10 ,  0x10 ,  0x12 ,  0x10 ,  0x02 ,  
-       0x00 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  
-       0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  
-       0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  
-       0x02 ,  0x02 ,  0x02 ,  0x00 ,  0x00 ,  0x00 ,  0x00 ,  0x00 ,  
-       0x00 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  
-       0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  
-       0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  
-       0x02 ,  0x02 ,  0x02 ,  0x00 ,  0x00 ,  0x00 ,  0x00 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  
-       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x06 ,  0x00 ,  0x00 ,  0x10 ,  0x00 ,  0x00 ,  0x00 ,  0x00 ,
+       0x00 ,  0x00 ,  0x00 ,  0x12 ,  0x12 ,  0x02 ,  0x02 ,  0x02 ,
+       0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,
+       0x02 ,  0x02 ,  0x02 ,  0x10 ,  0x10 ,  0x12 ,  0x10 ,  0x02 ,
+       0x00 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,
+       0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,
+       0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,
+       0x02 ,  0x02 ,  0x02 ,  0x00 ,  0x00 ,  0x00 ,  0x00 ,  0x00 ,
+       0x00 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,
+       0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,
+       0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,  0x02 ,
+       0x02 ,  0x02 ,  0x02 ,  0x00 ,  0x00 ,  0x00 ,  0x00 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,
+       0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21 ,  0x21
 };
index 179fa46ae81eb3018a4bd2e0cb23ca0ffc4aa61e..4e0a2e03fcb61a4ac2fe557cacb29bb3ecf95ba3 100644 (file)
@@ -473,7 +473,7 @@ hx509_cms_unenvelope(hx509_context context,
        ret = hx509_crypto_init(context, NULL, &ai->algorithm, &crypto);
        if (ret)
            goto out;
-       
+
        if (flags & HX509_CMS_UE_ALLOW_WEAK)
            hx509_crypto_allow_weak(crypto);
 
@@ -493,7 +493,7 @@ hx509_cms_unenvelope(hx509_context context,
                                   "of EnvelopedData");
            goto out;
        }
-       
+
        ret = hx509_crypto_decrypt(crypto,
                                   enccontent->data,
                                   enccontent->length,
@@ -620,7 +620,7 @@ hx509_cms_envelope_1(hx509_context context,
                                   "Failed to set crypto oid "
                                   "for EnvelopedData");
            goto out;
-       }       
+       }
        ALLOC(enc_alg->parameters, 1);
        if (enc_alg->parameters == NULL) {
            ret = ENOMEM;
@@ -657,7 +657,7 @@ hx509_cms_envelope_1(hx509_context context,
        ri->version = 2;
        cmsidflag = CMS_ID_SKI;
     }
-       
+
     ret = fill_CMSIdentifier(cert, cmsidflag, &ri->rid);
     if (ret) {
        hx509_set_error_string(context, 0, ret,
@@ -892,7 +892,7 @@ hx509_cms_verify_signed(hx509_context context,
 
        if (signer_info->signedAttrs) {
            const Attribute *attr;
-       
+
            CMSAttributes sa;
            heim_octet_string os;
 
@@ -916,7 +916,7 @@ hx509_cms_verify_signed(hx509_context context,
                                       "messageDigest (signature)");
                goto next_sigature;
            }
-       
+
            ret = decode_MessageDigest(attr->value.val[0].data,
                                       attr->value.val[0].length,
                                       &os,
@@ -1021,7 +1021,7 @@ hx509_cms_verify_signed(hx509_context context,
        if (ret)
            goto next_sigature;
 
-       /** 
+       /**
         * If HX509_CMS_VS_NO_VALIDATE flags is set, do not verify the
         * signing certificates and leave that up to the caller.
         */
@@ -1116,7 +1116,7 @@ add_one_attribute(Attribute **attr,
 
     return 0;
 }
-       
+
 /**
  * Decode SignedData and verify that the signature is correct.
  *
@@ -1215,7 +1215,7 @@ sig_process(hx509_context context, void *ctx, hx509_cert cert)
            hx509_clear_error_string(context);
     } else {
        ret = hx509_crypto_select(context, HX509_SELECT_DIGEST,
-                                 _hx509_cert_private_key(cert), 
+                                 _hx509_cert_private_key(cert),
                                  sigctx->peer, &digest);
     }
     if (ret)
@@ -1243,7 +1243,7 @@ sig_process(hx509_context context, void *ctx, hx509_cert cert)
     if (ret) {
        hx509_clear_error_string(context);
        goto out;
-    }                  
+    }
 
     signer_info->signedAttrs = NULL;
     signer_info->unsignedAttrs = NULL;
@@ -1259,7 +1259,7 @@ sig_process(hx509_context context, void *ctx, hx509_cert cert)
      */
 
     if (der_heim_oid_cmp(sigctx->eContentType, &asn1_oid_id_pkcs7_data) != 0) {
-       CMSAttributes sa;       
+       CMSAttributes sa;
        heim_octet_string sig;
 
        ALLOC(signer_info->signedAttrs, 1);
@@ -1325,7 +1325,7 @@ sig_process(hx509_context context, void *ctx, hx509_cert cert)
 
        sa.val = signer_info->signedAttrs->val;
        sa.len = signer_info->signedAttrs->len;
-       
+
        ASN1_MALLOC_ENCODE(CMSAttributes,
                           sigdata.data,
                           sigdata.length,
@@ -1412,7 +1412,7 @@ cert_process(hx509_context context, void *ctx, hx509_cert cert)
     const unsigned int i = sigctx->sd.certificates->len;
     void *ptr;
     int ret;
-    
+
     ptr = realloc(sigctx->sd.certificates->val,
                  (i + 1) * sizeof(sigctx->sd.certificates->val[0]));
     if (ptr == NULL)
@@ -1506,7 +1506,7 @@ hx509_cms_create_signed(hx509_context context,
            ret = ENOMEM;
            goto out;
        }
-       
+
        sigctx.sd.encapContentInfo.eContent->data = malloc(length);
        if (sigctx.sd.encapContentInfo.eContent->data == NULL) {
            hx509_clear_error_string(context);
index 91d1d0f1b707a7a366d0edd55c36de49c1e83abf..15f8163f809300a72f9980f51e83e84d1d6f41ea 100644 (file)
@@ -133,7 +133,7 @@ _hx509_collector_private_key_add(hx509_context context,
        return ENOMEM;
     }
     c->val.data = d;
-       
+
     ret = copy_AlgorithmIdentifier(alg, &key->alg);
     if (ret) {
        hx509_set_error_string(context, 0, ret, "Failed to copy "
@@ -192,7 +192,7 @@ match_localkeyid(hx509_context context,
 
     ret = hx509_certs_find(context, certs, &q, &cert);
     if (ret == 0) {
-       
+
        if (value->private_key)
            _hx509_cert_assign_key(cert, value->private_key);
        hx509_cert_free(cert);
index ef8651a234b49fd48e8d8e5968e148574b95a2b4..4559a9c49391c2cd142444a196a21b33b022421e 100644 (file)
@@ -286,7 +286,7 @@ heim_oid2ecnid(heim_oid *oid)
 }
 
 static int
-parse_ECParameters(hx509_context context, 
+parse_ECParameters(hx509_context context,
                   heim_octet_string *parameters, int *nid)
 {
     ECParameters ecparam;
@@ -404,7 +404,7 @@ ecdsa_verify_signature(hx509_context context,
        ret = HX509_CRYPTO_SIG_INVALID_FORMAT;
        return ret;
     }
-    
+
     return 0;
 }
 
@@ -552,7 +552,7 @@ rsa_verify_signature(hx509_context context,
 
     p = spi->subjectPublicKey.data;
     size = spi->subjectPublicKey.length / 8;
-    
+
     rsa = d2i_RSAPublicKey(NULL, &p, size);
     if (rsa == NULL) {
        ret = ENOMEM;
@@ -587,14 +587,14 @@ rsa_verify_signature(hx509_context context,
        if (ret) {
            goto out;
        }
-       
+
        /* Check for extra data inside the sigature */
        if (size != (size_t)retsize) {
            ret = HX509_CRYPTO_SIG_INVALID_FORMAT;
            hx509_set_error_string(context, 0, ret, "size from decryption mismatch");
            goto out;
        }
-       
+
        if (sig_alg->digest_alg &&
            der_heim_oid_cmp(&di.digestAlgorithm.algorithm,
                             &sig_alg->digest_alg->algorithm) != 0)
@@ -603,7 +603,7 @@ rsa_verify_signature(hx509_context context,
            hx509_set_error_string(context, 0, ret, "object identifier in RSA sig mismatch");
            goto out;
        }
-       
+
        /* verify that the parameters are NULL or the NULL-type */
        if (di.digestAlgorithm.parameters != NULL &&
            (di.digestAlgorithm.parameters->length != 2 ||
@@ -960,11 +960,11 @@ ecdsa_private_key_import(hx509_context context,
        ret = parse_ECParameters(context, keyai->parameters, &groupnid);
        if (ret)
            return ret;
-       
+
        key = EC_KEY_new();
        if (key == NULL)
            return ENOMEM;
-       
+
        group = EC_GROUP_new_by_curve_name(groupnid);
        if (group == NULL) {
            EC_KEY_free(key);
@@ -1008,8 +1008,8 @@ ecdsa_generate_private_key(hx509_context context,
 }
 
 static BIGNUM *
-ecdsa_get_internal(hx509_context context, 
-                  hx509_private_key key, 
+ecdsa_get_internal(hx509_context context,
+                  hx509_private_key key,
                   const char *type)
 {
     return NULL;
@@ -1162,7 +1162,7 @@ evp_md_create_signature(hx509_context context,
        if (ret)
            return ret;
     }
-       
+
 
     sig->data = malloc(sigsize);
     if (sig->data == NULL) {
@@ -1495,7 +1495,7 @@ alg_for_privatekey(const hx509_private_key pk, int type)
            continue;
        if (der_heim_oid_cmp(sig_algs[i]->key_oid, keytype) != 0)
            continue;
-       if (pk->ops->available && 
+       if (pk->ops->available &&
            pk->ops->available(pk, sig_algs[i]->sig_alg) == 0)
            continue;
        if (type == HX509_SELECT_PUBLIC_SIG)
@@ -1687,7 +1687,7 @@ _hx509_public_encrypt(hx509_context context,
 
     p = spi->subjectPublicKey.data;
     size = spi->subjectPublicKey.length / 8;
-    
+
     rsa = d2i_RSAPublicKey(NULL, &p, size);
     if (rsa == NULL) {
        hx509_set_error_string(context, 0, ENOMEM, "out of memory");
@@ -2609,7 +2609,7 @@ hx509_crypto_encrypt(hx509_crypto crypto,
        ret = ENOMEM;
        goto out;
     }
-       
+
     memcpy((*ciphertext)->data, data, length);
     if (padsize) {
        size_t i;
@@ -2927,7 +2927,7 @@ _hx509_pbe_decrypt(hx509_context context,
        hx509_crypto_destroy(crypto);
        if (ret == 0)
            goto out;
-                               
+
     }
 out:
     if (key.data)
@@ -3176,7 +3176,7 @@ hx509_crypto_available(hx509_context context,
            if (ptr == NULL)
                goto out;
            *val = ptr;
-       
+
            ret = copy_AlgorithmIdentifier((ciphers[i].ai_func)(), &(*val)[len]);
            if (ret)
                goto out;
index 56e25766ef953232968508bf7c407e6503220df7..4f7e87f070ae9aa44c29262da09e3c1c681b7fb9 100644 (file)
@@ -93,11 +93,11 @@ hx509_pem_write(hx509_context context, const char *type,
 
     while (size > 0) {
        ssize_t l;
-       
+
        length = size;
        if (length > ENCODE_LINE_LENGTH)
            length = ENCODE_LINE_LENGTH;
-       
+
        l = base64_encode(p, length, &line);
        if (l < 0) {
            hx509_set_error_string(context, 0, ENOMEM,
@@ -211,7 +211,7 @@ hx509_pem_read(hx509_context context,
            if (i > 0)
                i--;
        }
-       
+
        switch (where) {
        case BEFORE:
            if (strncmp("-----BEGIN ", buf, 11) == 0) {
@@ -260,7 +260,7 @@ hx509_pem_read(hx509_context context,
                free(p);
                goto out;
            }
-       
+
            data = erealloc(data, len + i);
            memcpy(((char *)data) + len, p, i);
            free(p);
index 15cddb58314031a10cc5421571b5499c368eb730..4bd467f4284a4f15173ab85bd6bfbb0a4afc7a21 100644 (file)
@@ -131,7 +131,7 @@ peer_strings(hx509_context contextp,
 
     for (i = 0; i < s->num_strings; i++)
        parse_oid(s->strings[i], NULL, &val[i].algorithm);
-       
+
     ret = hx509_peer_info_set_cms_algs(contextp, *peer, val, s->num_strings);
     if (ret)
        hx509_err(contextp, 1, ret, "hx509_peer_info_set_cms_algs");
@@ -216,7 +216,7 @@ cms_verify_sd(struct cms_verify_sd_options *opt, int argc, char **argv)
 
        pd.os = &co;
        pd.detached_data = 0;
-       
+
        f = fopen(argv[0], "r");
        if (f == NULL)
            err(1, "Failed to open file %s", argv[0]);
@@ -337,11 +337,11 @@ print_signer(hx509_context contextp, void *ctx, hx509_cert cert)
     char *signer_name = NULL;
     hx509_name name;
     int ret;
-    
+
     ret = hx509_cert_get_subject(cert, &name);
     if (ret)
        errx(1, "hx509_cert_get_subject");
-    
+
     ret = hx509_name_to_string(name, &signer_name);
     hx509_name_free(&name);
     if (ret)
@@ -411,13 +411,13 @@ cms_create_sd(struct cms_create_sd_options *opt, int argc, char **argv)
        ret = hx509_query_alloc(context, &q);
        if (ret)
            errx(1, "hx509_query_alloc: %d", ret);
-       
+
        hx509_query_match_option(q, HX509_QUERY_OPTION_PRIVATE_KEY);
        hx509_query_match_option(q, HX509_QUERY_OPTION_KU_DIGITALSIGNATURE);
-       
+
        if (opt->signer_string)
            hx509_query_match_friendly_name(q, opt->signer_string);
-       
+
        ret = hx509_certs_filter(context, store, q, &signer);
        hx509_query_free(context, q);
        if (ret)
@@ -486,7 +486,7 @@ cms_create_sd(struct cms_create_sd_options *opt, int argc, char **argv)
        f = fopen(outfile, "w");
        if (f == NULL)
            err(1, "open %s", outfile);
-       
+
        ret = hx509_pem_write(context, "CMS SIGNEDDATA", header, f,
                              o.data, o.length);
        fclose(f);
@@ -680,7 +680,7 @@ print_certificate(hx509_context hxcontext, hx509_cert cert, int verbose)
        hx509_validate_ctx_set_print(vctx, hx509_print_stdout, stdout);
        hx509_validate_ctx_add_flags(vctx, HX509_VALIDATE_F_VALIDATE);
        hx509_validate_ctx_add_flags(vctx, HX509_VALIDATE_F_VERBOSE);
-       
+
        hx509_validate_cert(hxcontext, vctx, cert);
 
        hx509_validate_ctx_free(vctx);
@@ -897,7 +897,7 @@ pcert_verify(struct verify_options *opt, int argc, char **argv)
        if (p == NULL)
            errx(1, "Failed to parse time %s, need to be on format %%Y-%%m-%%d",
                 opt->time_string);
-       
+
        t = tm2time (tm, 0);
 
        hx509_verify_set_time(ctx, t);
@@ -1100,7 +1100,7 @@ ocsp_fetch(struct ocsp_fetch_options *opt, int argc, char **argv)
     ret = hx509_ocsp_request(context, reqcerts, pool, NULL, NULL, &req, nonce);
     if (ret)
        errx(1, "hx509_ocsp_request: req: %d", ret);
-       
+
     {
        FILE *f;
 
@@ -1235,10 +1235,10 @@ get_key(const char *fn, const char *type, int optbits,
 
        if (fn == NULL)
            errx(1, "no key argument, don't know here to store key");
-       
+
        if (strcasecmp(type, "rsa") != 0)
            errx(1, "can only handle rsa keys for now");
-       
+
        e = BN_new();
        BN_set_word(e, 0x10001);
 
@@ -1260,13 +1260,13 @@ get_key(const char *fn, const char *type, int optbits,
        p0 = p = malloc(len);
        if (p == NULL)
            errx(1, "out of memory");
-       
+
        i2d_RSAPrivateKey(rsa, &p);
 
        rk_dumpdata(fn, p0, len);
        memset(p0, 0, len);
        free(p0);
-       
+
        RSA_free(rsa);
 
     } else if (fn == NULL)
@@ -1674,7 +1674,7 @@ eval_types(hx509_context contextp,
 
     for (i = 0; i < opt->type_strings.num_strings; i++) {
        const char *type = opt->type_strings.strings[i];
-       
+
        for (j = 0; j < sizeof(certtypes)/sizeof(certtypes[0]); j++) {
            if (strcasecmp(type, certtypes[j].type) == 0) {
                ret = (*certtypes[j].eval)(contextp, tbs, &ctopt);
@@ -1726,7 +1726,7 @@ eval_types(hx509_context contextp,
        ret = hx509_ca_tbs_add_san_rfc822name(contextp, tbs, email);
        if (ret)
            hx509_err(contextp, 1, ret, "hx509_ca_tbs_add_san_hostname");
-       
+
        ret = hx509_ca_tbs_add_eku(contextp, tbs,
                                   &asn1_oid_id_pkix_kp_emailProtection);
        if (ret)
@@ -1857,7 +1857,7 @@ hxtool_ca(struct certificate_sign_options *opt, int argc, char **argv)
        _hx509_generate_private_key_free(&keyctx);
        if (ret)
            hx509_err(context, 1, ret, "generate private key");
-       
+
        ret = hx509_private_key2SPKI(context, cert_key, &spki);
        if (ret)
            errx(1, "hx509_private_key2SPKI: %d\n", ret);
@@ -1887,7 +1887,7 @@ hxtool_ca(struct certificate_sign_options *opt, int argc, char **argv)
     ret = hx509_ca_tbs_init(context, &tbs);
     if (ret)
        hx509_err(context, 1, ret, "hx509_ca_tbs_init");
-       
+
     if (opt->template_certificate_string) {
        hx509_cert template;
        hx509_certs tcerts;
@@ -1969,7 +1969,7 @@ hxtool_ca(struct certificate_sign_options *opt, int argc, char **argv)
        ret = hx509_ca_tbs_set_notAfter_lifetime(context, tbs, delta);
        if (ret)
            hx509_err(context, 1, ret, "hx509_ca_tbs_set_notAfter_lifetime");
-    }  
+    }
 
     if (opt->self_signed_flag) {
        ret = hx509_ca_sign_self(context, tbs, private_key, &cert);
@@ -1985,7 +1985,7 @@ hxtool_ca(struct certificate_sign_options *opt, int argc, char **argv)
        ret = _hx509_cert_assign_key(cert, cert_key);
        if (ret)
            hx509_err(context, 1, ret, "_hx509_cert_assign_key");
-    }  
+    }
 
     {
        hx509_certs certs;
index 8c8c6e50c8df3f721578cbd6c0cba46423a2e097..264b1bf552d89d121e1a445e8cdb2f476b34a7af 100644 (file)
@@ -158,10 +158,10 @@ dir_iter(hx509_context context,
        }
        if (strcmp(dir->d_name, ".") == 0 || strcmp(dir->d_name, "..") == 0)
            continue;
-       
+
        if (asprintf(&fn, "FILE:%s/%s", (char *)data, dir->d_name) == -1)
            return ENOMEM;
-       
+
        ret = hx509_certs_init(context, fn, 0, NULL, &d->certs);
        if (ret == 0) {
 
index d8927eb1ee53c879e7f300412b7cd0c50b579044..d21d889287080868a7701eb63d6ed6f93c510eb3 100644 (file)
@@ -112,7 +112,7 @@ try_decrypt(hx509_context context,
        EVP_CipherInit_ex(&ctx, c, NULL, key, ivdata, 0);
        EVP_Cipher(&ctx, clear.data, cipher, len);
        EVP_CIPHER_CTX_cleanup(&ctx);
-    }  
+    }
 
     ret = _hx509_collector_private_key_add(context,
                                           collector,
@@ -138,7 +138,7 @@ parse_pkcs8_private_key(hx509_context context, const char *fn,
 {
     PKCS8PrivateKeyInfo ki;
     heim_octet_string keydata;
-   
+
     int ret;
 
     ret = decode_PKCS8PrivateKeyInfo(data, length, &ki, NULL);
@@ -253,7 +253,7 @@ parse_pem_private_key(hx509_context context, const char *fn,
                                   "private key file");
            return HX509_PARSING_KEY_FAILED;
        }
-       
+
        pw = _hx509_lock_get_passwords(lock);
        if (pw != NULL) {
            const void *password;
@@ -262,8 +262,8 @@ parse_pem_private_key(hx509_context context, const char *fn,
            for (i = 0; i < pw->len; i++) {
                password = pw->val[i];
                passwordlen = strlen(password);
-               
-               ret = try_decrypt(context, c, ai, cipher, ivdata, 
+
+               ret = try_decrypt(context, c, ai, cipher, ivdata,
                                  password, passwordlen, data, len);
                if (ret == 0) {
                    decrypted = 1;
@@ -284,7 +284,7 @@ parse_pem_private_key(hx509_context context, const char *fn,
 
            ret = hx509_lock_prompt(lock, &prompt);
            if (ret == 0)
-               ret = try_decrypt(context, c, ai, cipher, ivdata, password, 
+               ret = try_decrypt(context, c, ai, cipher, ivdata, password,
                                  strlen(password), data, len);
            /* XXX add password to lock password collection ? */
            memset(password, 0, sizeof(password));
@@ -340,7 +340,7 @@ pem_func(hx509_context context, const char *type,
            if (formats[j].ai != NULL)
                ai = (*formats[j].ai)();
 
-           ret = (*formats[j].func)(context, NULL, pem_ctx->c, 
+           ret = (*formats[j].func)(context, NULL, pem_ctx->c,
                                     header, data, len, ai);
            if (ret && (pem_ctx->flags & HX509_CERTS_UNPROTECT_ALL)) {
                hx509_set_error_string(context, HX509_ERROR_APPEND, ret,
@@ -420,7 +420,7 @@ file_init_common(hx509_context context,
        pnext = strchr(p, ',');
        if (pnext)
            *pnext++ = '\0';
-       
+
 
        if ((f = fopen(p, "r")) == NULL) {
            ret = ENOENT;
@@ -432,7 +432,7 @@ file_init_common(hx509_context context,
        rk_cloexec_file(f);
 
        ret = hx509_pem_read(context, f, pem_func, &pem_ctx);
-       fclose(f);              
+       fclose(f);
        if (ret != 0 && ret != HX509_PARSING_KEY_FAILED)
            goto out;
        else if (ret == HX509_PARSING_KEY_FAILED) {
index e64d83c84dc56cdc3d179fc0d9bb2e7ebe6e77e1..0552d8f7e97a615e70fd04223b9737a243a5312c 100644 (file)
@@ -50,7 +50,7 @@ OSStatus SecKeyGetCredentials(SecKeyRef, CSSM_ACL_AUTHORIZATION_TAG,
 static int
 getAttribute(SecKeychainItemRef itemRef, SecItemAttr item,
             SecKeychainAttributeList **attrs)
-{      
+{
     SecKeychainAttributeInfo attrInfo;
     UInt32 attrFormat = 0;
     OSStatus ret;
@@ -138,10 +138,10 @@ kc_rsa_private_encrypt(int flen,
 
     in.Data = (uint8 *)from;
     in.Length = flen;
-       
+
     sig.Data = (uint8 *)to;
     sig.Length = kc->keysize;
-       
+
     cret = CSSM_SignData(sigHandle, &in, 1, CSSM_ALGID_NONE, &sig);
     if(cret) {
        /* cssmErrorString(cret); */
@@ -197,10 +197,10 @@ kc_rsa_private_decrypt(int flen, const unsigned char *from, unsigned char *to,
 
     in.Data = (uint8 *)from;
     in.Length = flen;
-       
+
     out.Data = (uint8 *)to;
     out.Length = kc->keysize;
-       
+
     rem.Data = (uint8 *)remdata;
     rem.Length = sizeof(remdata);
 
@@ -485,7 +485,7 @@ keychain_iter(hx509_context context,
        return 0;
     else if (ret != 0)
        return EINVAL;
-       
+
     /*
      * Pick out certificate and matching "keyid"
      */
@@ -517,7 +517,7 @@ keychain_iter(hx509_context context,
        attrKeyid.tag = kSecKeyLabel;
        attrKeyid.length = attrs->attr[0].length;
        attrKeyid.data = attrs->attr[0].data;
-       
+
        attrList.count = 1;
        attrList.attr = &attrKeyid;
 
index 9d3c66b29413cf7111b1433a683bb19f74c97b82..684acb0adf35187286623864b63754e1dcf03e49 100644 (file)
@@ -171,7 +171,7 @@ mem_getkeys(hx509_context context,
            hx509_set_error_string(context, 0, ENOMEM, "out of memory");
            return ENOMEM;
        }
-    }  
+    }
     (*keys)[i] = NULL;
     return 0;
 }
index 5a21ca8cc588b96bc053d3dd7288b397cc7d7f27..120bf43ef4378c73b43695efd842cae9748e7f6b 100644 (file)
@@ -427,7 +427,7 @@ p11_get_session(hx509_context context,
            prompt.type = HX509_PROMPT_TYPE_PASSWORD;
            prompt.reply.data = pin;
            prompt.reply.length = sizeof(pin);
-       
+
            ret = hx509_lock_prompt(lock, &prompt);
            if (ret) {
                free(str);
@@ -513,7 +513,7 @@ iterate_entries(hx509_context context,
        }
        if (object_count == 0)
            break;
-       
+
        for (i = 0; i < num_query; i++)
            query[i].pValue = NULL;
 
@@ -535,7 +535,7 @@ iterate_entries(hx509_context context,
            ret = -1;
            goto out;
        }
-       
+
        ret = (*func)(context, p, slot, session, object, ptr, query, num_query);
        if (ret)
            goto out;
@@ -561,7 +561,7 @@ iterate_entries(hx509_context context,
 
     return ret;
 }
-               
+
 static BIGNUM *
 getattr_bn(struct p11_module *p,
           struct p11_slot *slot,
@@ -704,10 +704,10 @@ collect_cert(hx509_context context,
 
     {
        heim_octet_string data;
-       
+
        data.data = query[0].pValue;
        data.length = query[0].ulValueLen;
-       
+
        _hx509_set_cert_attribute(context,
                                  cert,
                                  &asn1_oid_id_pkcs_9_at_localKeyId,
@@ -906,7 +906,7 @@ p11_init(hx509_context context,
            ret = ENOMEM;
            goto out;
        }
-                       
+
        for (i = 0; i < p->num_slots; i++) {
            ret = p11_init_slot(context, p, lock, slot_ids[i], i, &p->slot[i]);
            if (ret)
index 31ed88345b53fe47e8f2030ffa4cad781c5d6212..0ca13de1eb3480db4405e3c2560f653443eeee3a 100644 (file)
@@ -176,7 +176,7 @@ certBag_parser(hx509_context context,
            if (attr)
                _hx509_set_cert_attribute(context, cert, oid,
                                          &attr->attrValues);
-       }       
+       }
     }
 
     hx509_cert_free(cert);
@@ -237,7 +237,7 @@ encryptedData_parser(hx509_context context,
     heim_octet_string content;
     heim_oid contentType;
     int ret;
-               
+
     memset(&contentType, 0, sizeof(contentType));
 
     ret = hx509_cms_decrypt_encrypted(context,
@@ -266,7 +266,7 @@ envelopedData_parser(hx509_context context,
     heim_oid contentType;
     hx509_lock lock;
     int ret;
-               
+
     memset(&contentType, 0, sizeof(contentType));
 
     lock = _hx509_collector_get_lock(c);
@@ -583,7 +583,7 @@ p12_store(hx509_context context,
     free_PKCS12_AuthenticatedSafe(&as);
     if (ret)
        return ret;
-               
+
     ret = der_parse_hex_heim_integer("03", &pfx.version);
     if (ret) {
        free(asdata.data);
index 492f5f3672775cc7637c16d4eb2c4467c494dc22..efd7b703422f517cfe0fbb9d4735cf29946f091a 100644 (file)
@@ -216,7 +216,7 @@ _hx509_Name_to_string(const Name *n, char **str)
            DirectoryString *ds = &n->u.rdnSequence.val[i].val[j].value;
            char *oidname;
            char *ss;
-       
+
            oidname = oidtostring(&n->u.rdnSequence.val[i].val[j].type);
 
            switch(ds->element) {
@@ -240,7 +240,7 @@ _hx509_Name_to_string(const Name *n, char **str)
                ret = wind_ucs2utf8_length(bmp, bmplen, &k);
                if (ret)
                    return ret;
-               
+
                ss = malloc(k + 1);
                if (ss == NULL)
                    _hx509_abort("allocation failure"); /* XXX */
@@ -458,7 +458,7 @@ _hx509_name_cmp(const Name *n1, const Name *n2, int *c)
                                  &n1->u.rdnSequence.val[i].val[j].type);
            if (*c)
                return 0;
-                       
+
            ret = _hx509_name_ds_cmp(&n1->u.rdnSequence.val[i].val[j].value,
                                     &n2->u.rdnSequence.val[i].val[j].value,
                                     c);
@@ -537,7 +537,7 @@ _hx509_name_modify(hx509_context context,
                &name->u.rdnSequence.val[0],
                name->u.rdnSequence.len *
                sizeof(name->u.rdnSequence.val[0]));
-       
+
        rdn = &name->u.rdnSequence.val[0];
     }
     rdn->val = malloc(sizeof(rdn->val[0]));
@@ -613,7 +613,7 @@ hx509_parse_name(hx509_context context, const char *str, hx509_name *name)
                                   "missing name before = in %s", p);
            goto out;
        }
-       
+
        if ((size_t)(q - p) > len) {
            ret = HX509_PARSING_NAME_FAILED;
            hx509_set_error_string(context, 0, ret, " = after , in %s", p);
@@ -627,12 +627,12 @@ hx509_parse_name(hx509_context context, const char *str, hx509_name *name)
                                   "unknown type: %.*s", (int)(q - p), p);
            goto out;
        }
-       
+
        {
            size_t pstr_len = len - (q - p) - 1;
            const char *pstr = p + (q - p) + 1;
            char *r;
-       
+
            r = malloc(pstr_len + 1);
            if (r == NULL) {
                der_free_oid(&oid);
index 998816d803f2d2a6833e5693a0630772f00b3f21..1e8bcabfa7e9985fcc93db3643ab011514e88fa7 100644 (file)
@@ -501,7 +501,7 @@ check_CRLDistributionPoints(hx509_validate_ctx ctx,
            DistributionPointName dpname;
            heim_any *data = dp.val[i].distributionPoint;
            size_t j;
-       
+
            ret = decode_DistributionPointName(data->data, data->length,
                                               &dpname, NULL);
            if (ret) {
@@ -513,7 +513,7 @@ check_CRLDistributionPoints(hx509_validate_ctx ctx,
            switch (dpname.element) {
            case choice_DistributionPointName_fullName:
                validate_print(ctx, HX509_VALIDATE_F_VERBOSE, "Fullname:\n");
-               
+
                for (j = 0 ; j < dpname.u.fullName.len; j++) {
                    char *s;
                    GeneralName *name = &dpname.u.fullName.val[j];
@@ -602,7 +602,7 @@ check_altName(hx509_validate_ctx ctx,
                if (der_heim_oid_cmp(altname_types[j].oid,
                                     &gn.val[i].u.otherName.type_id) != 0)
                    continue;
-               
+
                validate_print(ctx, HX509_VALIDATE_F_VERBOSE, "%s: ",
                               altname_types[j].name);
                (*altname_types[j].func)(ctx, &gn.val[i].u.otherName.value);
@@ -903,7 +903,7 @@ hx509_validate_cert(hx509_context context,
     if ((t->version == NULL || *t->version < 2) && t->extensions)
        validate_print(ctx, HX509_VALIDATE_F_VALIDATE,
                       "Not version 3 certificate with extensions\n");
-       
+
     if (_hx509_cert_get_version(c) >= 3 && t->extensions == NULL)
        validate_print(ctx, HX509_VALIDATE_F_VALIDATE,
                       "Version 3 certificate without extensions\n");
@@ -978,7 +978,7 @@ hx509_validate_cert(hx509_context context,
        }
     } else
        validate_print(ctx, HX509_VALIDATE_F_VERBOSE, "no extentions\n");
-       
+
     if (status.isca) {
        if (!status.haveSKI)
            validate_print(ctx, HX509_VALIDATE_F_VALIDATE,
@@ -990,7 +990,7 @@ hx509_validate_cert(hx509_context context,
                           "Is not CA and doesn't have "
                           "AuthorityKeyIdentifier\n");
     }
-       
+
 
     if (!status.haveSKI)
        validate_print(ctx, HX509_VALIDATE_F_VALIDATE,
index e414c762b6828694d335a9e068d1f006489fd32d..29322807487c309b0f77bc2fc2cdaec608ce51b3 100644 (file)
@@ -176,9 +176,9 @@ verify_ocsp(hx509_context context,
     hx509_cert signer = NULL;
     hx509_query q;
     int ret;
-       
+
     _hx509_query_clear(&q);
-       
+
     /*
      * Need to match on issuer too in case there are two CA that have
      * issued the same name to a certificate. One example of this is
@@ -198,7 +198,7 @@ verify_ocsp(hx509_context context,
        q.keyhash_sha1 = &ocsp->ocsp.tbsResponseData.responderID.u.byKey;
        break;
     }
-       
+
     ret = hx509_certs_find(context, certs, &q, &signer);
     if (ret && ocsp->certs)
        ret = hx509_certs_find(context, ocsp->certs, &q, &signer);
@@ -360,11 +360,11 @@ load_ocsp(hx509_context context, struct revoke_ocsp *ocsp)
 
        for (i = 0; i < basic.certs->len; i++) {
            hx509_cert c;
-       
+
            ret = hx509_cert_init(context, &basic.certs->val[i], &c);
            if (ret)
                continue;
-       
+
            ret = hx509_certs_add(context, certs, c);
            hx509_cert_free(c);
            if (ret)
@@ -463,7 +463,7 @@ verify_crl(hx509_context context,
     hx509_query q;
     time_t t;
     int ret;
-       
+
     t = _hx509_Time2time_t(&crl->tbsCertList.thisUpdate);
     if (t > time_now) {
        hx509_set_error_string(context, 0, HX509_CRL_USED_BEFORE_TIME,
@@ -485,7 +485,7 @@ verify_crl(hx509_context context,
     }
 
     _hx509_query_clear(&q);
-       
+
     /*
      * If it's the signer have CRLSIGN bit set, use that as the signer
      * cert for the certificate, otherwise, search for a certificate.
@@ -496,7 +496,7 @@ verify_crl(hx509_context context,
        q.match = HX509_QUERY_MATCH_SUBJECT_NAME;
        q.match |= HX509_QUERY_KU_CRLSIGN;
        q.subject_name = &crl->tbsCertList.issuer;
-       
+
        ret = hx509_certs_find(context, certs, &q, &signer);
        if (ret) {
            hx509_set_error_string(context, HX509_ERROR_APPEND, ret,
@@ -526,11 +526,11 @@ verify_crl(hx509_context context,
        hx509_cert crl_parent;
 
        _hx509_query_clear(&q);
-       
+
        q.match = HX509_QUERY_MATCH_SUBJECT_NAME;
        q.match |= HX509_QUERY_KU_CRLSIGN;
        q.subject_name = &_hx509_get_cert(signer)->tbsCertificate.issuer;
-       
+
        ret = hx509_certs_find(context, certs, &q, &crl_parent);
        if (ret) {
            hx509_set_error_string(context, HX509_ERROR_APPEND, ret,
@@ -718,7 +718,7 @@ hx509_revoke_verify(hx509_context context,
                                   &c->tbsCertificate.serialNumber);
            if (ret != 0)
                continue;
-       
+
            /* verify issuer hashes hash */
            ret = _hx509_verify_signature(context,
                                          NULL,
@@ -828,12 +828,12 @@ hx509_revoke_verify(hx509_context context,
            t = _hx509_Time2time_t(&crl->crl.tbsCertList.revokedCertificates->val[j].revocationDate);
            if (t > now)
                continue;
-       
+
            if (crl->crl.tbsCertList.revokedCertificates->val[j].crlEntryExtensions)
                for (k = 0; k < crl->crl.tbsCertList.revokedCertificates->val[j].crlEntryExtensions->len; k++)
                    if (crl->crl.tbsCertList.revokedCertificates->val[j].crlEntryExtensions->val[k].critical)
                        return HX509_CRL_UNKNOWN_EXTENSION;
-       
+
            hx509_set_error_string(context, 0,
                                   HX509_CERT_REVOKED,
                                   "Certificate revoked by issuer in CRL");
@@ -1002,7 +1002,7 @@ hx509_ocsp_request(hx509_context context,
        }
 
        es = req.tbsRequest.requestExtensions;
-       
+
        es->val = calloc(es->len, sizeof(es->val[0]));
        if (es->val == NULL) {
            ret = ENOMEM;
@@ -1021,7 +1021,7 @@ hx509_ocsp_request(hx509_context context,
            goto out;
        }
        es->val[0].extnValue.length = 10;
-       
+
        ret = RAND_bytes(es->val[0].extnValue.data,
                         es->val[0].extnValue.length);
        if (ret != 1) {
@@ -1214,7 +1214,7 @@ hx509_ocsp_verify(hx509_context context,
                               &c->tbsCertificate.serialNumber);
        if (ret != 0)
            continue;
-       
+
        /* verify issuer hashes hash */
        ret = _hx509_verify_signature(context,
                                      NULL,
@@ -1254,7 +1254,7 @@ hx509_ocsp_verify(hx509_context context,
     {
        hx509_name name;
        char *subject;
-       
+
        ret = hx509_cert_get_subject(cert, &name);
        if (ret) {
            hx509_clear_error_string(context);
index 00adc457eeabd0c520e535336677360fe7354201..6930b50f7cda778fc8d6ef79170e033487303ad8 100644 (file)
@@ -101,7 +101,7 @@ eval_comp(hx509_context context, hx509_env env, struct hx_expr *expr)
        if (expr->op == comp_TAILEQ) {
            size_t len1 = strlen(s1);
            size_t len2 = strlen(s2);
-       
+
            if (len1 < len2)
                return 0;
            ret = strcmp(s1 + (len1 - len2), s2) == 0;
@@ -133,7 +133,7 @@ eval_comp(hx509_context context, hx509_env env, struct hx_expr *expr)
            subenv = find_variable(context, env, subexpr);
            if (subenv == NULL)
                return FALSE;
-       
+
            while (subenv) {
                if (subenv->type != env_string)
                    continue;
index 496423205ff55b578580f68d02ab05b1fb77e7e4..38f587e0fea23badc4436f2dfd44629c32e2a182 100644 (file)
@@ -325,7 +325,7 @@ add_st_object(void)
        }
        soft_token.object.objs = objs;
        soft_token.object.objs[soft_token.object.num_objs++] = o;
-    }  
+    }
     soft_token.object.objs[i]->object_handle =
        (random() & (~OBJECT_ID_MASK)) | i;
 
@@ -392,7 +392,7 @@ add_pubkey_info(hx509_context hxctx, struct st_object *o,
                         &modulus_bits, sizeof(modulus_bits));
 
     free(modulus);
-       
+
     num = _hx509_private_key_get_internal(context,
                                          _hx509_cert_private_key(cert),
                                          "rsa-exponent");
@@ -727,10 +727,10 @@ read_conf_file(const char *fn, CK_USER_TYPE userType, const char *pin)
        type = strtok_r(p, "\t", &s);
        if (type == NULL)
            continue;
-       
+
        if (strcasecmp("certificate", type) == 0) {
            char *cert, *id, *label;
-       
+
            id = strtok_r(NULL, "\t", &s);
            if (id == NULL) {
                st_logf("no id\n");
@@ -747,9 +747,9 @@ read_conf_file(const char *fn, CK_USER_TYPE userType, const char *pin)
                st_logf("no certfiicate store\n");
                continue;
            }
-       
+
            st_logf("adding: %s: %s in file %s\n", id, label, cert);
-       
+
            ret = add_certificate(cert, pin, id, label);
            if (ret)
                failed = ret;
@@ -774,7 +774,7 @@ read_conf_file(const char *fn, CK_USER_TYPE userType, const char *pin)
            }
            if (soft_token.logfile == NULL)
                st_logf("failed to open file: %s\n", name);
-               
+
        } else if (strcasecmp("app-fatal", type) == 0) {
            char *name;
 
@@ -1616,7 +1616,7 @@ C_VerifyInit(CK_SESSION_HANDLE hSession,
     ret = dup_mechanism(&state->verify_mechanism, pMechanism);
     if (ret == CKR_OK)
        state->verify_object = OBJECT_ID(o);
-                       
+
     return ret;
 }
 
index 8cf03b03743c77da69eb3198646770c353ac99fd..8c2c0a55517dc275597ac9e0e10626db53882f7e 100644 (file)
@@ -80,7 +80,7 @@ main(int argc, char **argv)
 
        _hx509_expr_free(expr);
     }
-       
+
     hx509_env_free(&env);
 
     return 0;
index 2cdcdf85f63f3d761a390f913a41b602d6d12568..d932221ddf0491084b80fb933fb9cca4a82e7eb1 100644 (file)
@@ -336,7 +336,7 @@ test_compare(hx509_context context)
     if (ret) return 1;
     ret = compare_subject(c2, c3, &l3);
     if (ret) return 1;
-    
+
     if (l0 != 0) return 1;
     if (l2 < l1) return 1;
     if (l3 < l2) return 1;
index fcf45f0b9efd43c491bb58fdc8b6e6e2f0fec95a..c8fc2448ee76b13d44293a1a35fe9ea835f0eea7 100644 (file)
@@ -159,7 +159,7 @@ main(int argc, char **argv)
        ret = (*func->C_SignInit)(session, &mechanism, private);
        if (ret != CKR_OK)
            return 1;
-       
+
        ck_sigsize = sizeof(signature);
        ret = (*func->C_Sign)(session, (CK_BYTE *)sighash, strlen(sighash),
                              (CK_BYTE *)signature, &ck_sigsize);
@@ -192,7 +192,7 @@ main(int argc, char **argv)
        ret = (*func->C_EncryptInit)(session, &mechanism, public);
        if (ret != CKR_OK)
            return 1;
-       
+
        ck_sigsize = sizeof(signature);
        ret = (*func->C_Encrypt)(session, (CK_BYTE *)sighash, strlen(sighash),
                                 (CK_BYTE *)signature, &ck_sigsize);
index a9d4798e22bca37531055c2d89bd31948eb09708..bb7d9750bffa4c343ec9bf400fc1918a86eb7fb0 100644 (file)
@@ -90,7 +90,7 @@ mach_init(const char *service, void **ctx)
 }
 
 static int
-mach_ipc(void *ctx, 
+mach_ipc(void *ctx,
         const heim_idata *request, heim_idata *response,
         heim_icred *cred)
 {
@@ -146,21 +146,21 @@ mach_ipc(void *ctx,
     if (errorcode) {
        if (replyout_length)
            vm_deallocate (mach_task_self (), (vm_address_t) replyout,
-                          replyout_length); 
+                          replyout_length);
        return errorcode;
     }
-    
+
     if (replyout_length) {
        response->data = malloc(replyout_length);
        if (response->data == NULL) {
            vm_deallocate (mach_task_self (), (vm_address_t) replyout,
-                          replyout_length); 
+                          replyout_length);
            return ENOMEM;
        }
        memcpy(response->data, replyout, replyout_length);
        response->length = replyout_length;
        vm_deallocate (mach_task_self (), (vm_address_t) replyout,
-                      replyout_length); 
+                      replyout_length);
     } else {
        response->data = malloc(replyin_length);
        if (response->data == NULL)
@@ -206,7 +206,7 @@ mheim_ado_acall_reply(mach_port_t server_port,
     (*c->func)(c->userctx, returnvalue, &response, NULL);
 
     if (replyoutCnt)
-       vm_deallocate (mach_task_self (), (vm_address_t) replyout, replyoutCnt); 
+       vm_deallocate (mach_task_self (), (vm_address_t) replyout, replyoutCnt);
 
     dispatch_source_cancel(c->source);
 
@@ -217,7 +217,7 @@ mheim_ado_acall_reply(mach_port_t server_port,
 
 
 static int
-mach_async(void *ctx, const heim_idata *request, void *userctx, 
+mach_async(void *ctx, const heim_idata *request, void *userctx,
           void (*func)(void *, int, heim_idata *, heim_icred))
 {
     struct mach_ctx *ipc = ctx;
@@ -246,12 +246,12 @@ mach_async(void *ctx, const heim_idata *request, void *userctx,
 
     dispatch_source_set_event_handler(c->source, ^{
            dispatch_mig_server(c->source,
-                               sizeof(union __RequestUnion__mheim_ado_mheim_aipc_subsystem), 
+                               sizeof(union __RequestUnion__mheim_ado_mheim_aipc_subsystem),
                                mheim_aipc_server);
        });
 
     dispatch_source_set_cancel_handler(c->source, ^{
-           mach_port_mod_refs(mach_task_self(), c->mp, 
+           mach_port_mod_refs(mach_task_self(), c->mp,
                               MACH_PORT_RIGHT_RECEIVE, -1);
            dispatch_release(c->queue);
            dispatch_release(c->source);
@@ -353,7 +353,7 @@ common_path_init(const char *service,
     s->fd = -1;
 
     asprintf(&s->path, "/var/run/.heim_%s-%s", service, file);
-       
+
     *ctx = s;
 
     return 0;
@@ -442,7 +442,7 @@ door_init(const char *service,
 }
 
 static int
-door_ipc(void *ctx, 
+door_ipc(void *ctx,
         const heim_idata *request, heim_idata *response,
         heim_icred *cred)
 {
@@ -460,7 +460,7 @@ door_ipc(void *ctx,
     close(fd);
     if (ret != 0)
        return errno;
-       
+
     response->data = malloc(arg.rsize);
     if (response->data == NULL) {
        munmap(arg.rbuf, arg.rsize);
@@ -480,7 +480,7 @@ struct hipc_ops {
     int (*init)(const char *, void **);
     int (*release)(void *);
     int (*ipc)(void *,const heim_idata *, heim_idata *, heim_icred *);
-    int (*async)(void *, const heim_idata *, void *, 
+    int (*async)(void *, const heim_idata *, void *,
                 void (*)(void *, int, heim_idata *, heim_icred));
 };
 
@@ -509,20 +509,20 @@ heim_ipc_init_context(const char *name, heim_ipc *ctx)
     for(i = 0; i < sizeof(ipcs)/sizeof(ipcs[0]); i++) {
        size_t prefix_len = strlen(ipcs[i].prefix);
        heim_ipc c;
-       if(strncmp(ipcs[i].prefix, name, prefix_len) == 0 
+       if(strncmp(ipcs[i].prefix, name, prefix_len) == 0
           && name[prefix_len] == ':')  {
        } else if (strncmp("ANY:", name, 4) == 0) {
            prefix_len = 3;
            any = 1;
        } else
            continue;
-           
+
        c = calloc(1, sizeof(*c));
        if (c == NULL)
            return ENOMEM;
-       
+
        c->ops = &ipcs[i];
-       
+
        ret = (c->ops->init)(name + prefix_len + 1, &c->ctx);
        if (ret) {
            free(c);
@@ -530,7 +530,7 @@ heim_ipc_init_context(const char *name, heim_ipc *ctx)
                continue;
            return ret;
        }
-       
+
        *ctx = c;
        return 0;
     }
index bfa3c937a2547d73075dff49d7934e83caa60d1c..245f2e3c5d820a0e19115f6d12b27094aa125975 100644 (file)
@@ -73,14 +73,14 @@ set_timer(void)
     dispatch_source_set_timer(timer,
                              dispatch_time(DISPATCH_TIME_NOW,
                                            timeoutvalue * NSEC_PER_SEC),
-                             timeoutvalue * NSEC_PER_SEC, 1000000); 
+                             timeoutvalue * NSEC_PER_SEC, 1000000);
 }
 
 static void
 init_globals(void)
 {
     static dispatch_once_t once;
-    dispatch_once(&once, ^{ 
+    dispatch_once(&once, ^{
        timerq = dispatch_queue_create("hiem-sipc-timer-q", NULL);
         timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, timerq);
        dispatch_source_set_event_handler(timer, ^{ timer_ev(); } );
@@ -138,7 +138,7 @@ mach_complete_sync(heim_sipc_call ctx, int returnvalue, heim_idata *reply)
        kr = KERN_SUCCESS;
     } else {
        replyinCnt = 0;
-       kr = vm_read(mach_task_self(), 
+       kr = vm_read(mach_task_self(),
                     (vm_address_t)reply->data, reply->length,
                     (vm_address_t *)&replyout, &replyoutCnt);
     }
@@ -175,7 +175,7 @@ mach_complete_async(heim_sipc_call ctx, int returnvalue, heim_idata *reply)
        kr = KERN_SUCCESS;
     } else {
        replyinCnt = 0;
-       kr = vm_read(mach_task_self(), 
+       kr = vm_read(mach_task_self(),
                     (vm_address_t)reply->data, reply->length,
                     (vm_address_t *)&replyout, &replyoutCnt);
     }
@@ -219,19 +219,19 @@ mheim_do_call(mach_port_t server_port,
     s = malloc(sizeof(*s));
     if (s == NULL)
        return KERN_MEMORY_FAILURE; /* XXX */
-    
+
     s->reply_port = reply_port;
-    
+
     audit_token_to_au32(client_creds, NULL, &uid, &gid, NULL, NULL, &pid, &session, NULL);
-    
+
     kr = _heim_ipc_create_cred(uid, gid, pid, session, &s->cred);
     if (kr) {
        free(s);
        return kr;
     }
-    
+
     suspend_timer();
-    
+
     if (requestinCnt) {
        s->req.data = malloc(requestinCnt);
        memcpy(s->req.data, requestin, requestinCnt);
@@ -241,7 +241,7 @@ mheim_do_call(mach_port_t server_port,
        memcpy(s->req.data, requestout, requestoutCnt);
        s->req.length = requestoutCnt;
     }
-    
+
     dispatch_async(workq, ^{
        (ctx->callback)(ctx->userctx, &s->req, s->cred,
                        mach_complete_sync, (heim_sipc_call)s);
@@ -266,23 +266,23 @@ mheim_do_call_request(mach_port_t server_port,
     gid_t gid;
     pid_t pid;
     au_asid_t session;
-    
+
     s = malloc(sizeof(*s));
     if (s == NULL)
        return KERN_MEMORY_FAILURE; /* XXX */
-    
+
     s->reply_port = reply_port;
-    
+
     audit_token_to_au32(client_creds, NULL, &uid, &gid, NULL, NULL, &pid, &session, NULL);
-    
+
     kr = _heim_ipc_create_cred(uid, gid, pid, session, &s->cred);
     if (kr) {
        free(s);
        return kr;
     }
-    
+
     suspend_timer();
-    
+
     if (requestinCnt) {
        s->req.data = malloc(requestinCnt);
        memcpy(s->req.data, requestin, requestinCnt);
@@ -292,12 +292,12 @@ mheim_do_call_request(mach_port_t server_port,
        memcpy(s->req.data, requestout, requestoutCnt);
        s->req.length = requestoutCnt;
     }
-    
+
     dispatch_async(workq, ^{
        (ctx->callback)(ctx->userctx, &s->req, s->cred,
                        mach_complete_async, (heim_sipc_call)s);
     });
-    
+
     return KERN_SUCCESS;
 }
 
@@ -319,7 +319,7 @@ mach_init(const char *service, mach_port_t sport, heim_sipc ctx)
     free(name);
     s->sport = sport;
 
-    s->source = dispatch_source_create(DISPATCH_SOURCE_TYPE_MACH_RECV, 
+    s->source = dispatch_source_create(DISPATCH_SOURCE_TYPE_MACH_RECV,
                                       s->sport, 0, s->queue);
     if (s->source == NULL) {
        dispatch_release(s->queue);
@@ -338,7 +338,7 @@ mach_init(const char *service, mach_port_t sport, heim_sipc ctx)
     dispatch_source_set_cancel_handler(s->source, ^{
            heim_sipc ctx = dispatch_get_context(dispatch_get_current_queue());
            struct mach_service *st = ctx->mech;
-           mach_port_mod_refs(mach_task_self(), st->sport, 
+           mach_port_mod_refs(mach_task_self(), st->sport,
                               MACH_PORT_RIGHT_RECEIVE, -1);
            dispatch_release(st->queue);
            dispatch_release(st->source);
@@ -376,7 +376,7 @@ mach_checkin_or_register(const char *service)
     if (kr != KERN_SUCCESS)
        return MACH_PORT_NULL;
 
-    kr = mach_port_insert_right(mach_task_self(), mp, mp, 
+    kr = mach_port_insert_right(mach_task_self(), mp, mp,
                                MACH_MSG_TYPE_MAKE_SEND);
     if (kr != KERN_SUCCESS) {
        mach_port_destroy(mach_task_self(), mp);
@@ -425,7 +425,7 @@ heim_sipc_launchd_mach_init(const char *service,
     c->release = mach_release;
     c->userctx = user;
     c->callback = callback;
-                
+
     ret = mach_init(service, sport, c);
     if (ret)
        goto error;
@@ -436,7 +436,7 @@ heim_sipc_launchd_mach_init(const char *service,
     if (c)
        free(c);
     if (sport != MACH_PORT_NULL)
-       mach_port_mod_refs(mach_task_self(), sport, 
+       mach_port_mod_refs(mach_task_self(), sport,
                           MACH_PORT_RIGHT_RECEIVE, -1);
     return ret;
 #else /* !(__APPLE__ && HAVE_GCD) */
@@ -501,7 +501,7 @@ update_client_creds(struct client *c)
     /* Solaris 10 */
     {
        ucred_t *peercred;
-       
+
        if (getpeerucred(c->fd, &peercred) != 0) {
            c->unixrights.uid = ucred_geteuid(peercred);
            c->unixrights.gid = ucred_getegid(peercred);
@@ -563,7 +563,7 @@ update_client_creds(struct client *c)
        void *crmsg;
        struct cmsghdr *cmp;
        struct sockcred *sc;
-       
+
        memset(&msg, 0, sizeof(msg));
        crmsgsize = CMSG_SPACE(SOCKCREDSIZE(NGROUPS));
        if (crmsgsize == 0)
@@ -574,32 +574,32 @@ update_client_creds(struct client *c)
            goto failed_scm_creds;
 
        memset(crmsg, 0, crmsgsize);
-       
+
        msg.msg_control = crmsg;
        msg.msg_controllen = crmsgsize;
-       
+
        if (recvmsg(c->fd, &msg, 0) < 0) {
            free(crmsg);
            goto failed_scm_creds;
-       }       
-       
+       }
+
        if (msg.msg_controllen == 0 || (msg.msg_flags & MSG_CTRUNC) != 0) {
            free(crmsg);
            goto failed_scm_creds;
-       }       
-       
+       }
+
        cmp = CMSG_FIRSTHDR(&msg);
        if (cmp->cmsg_level != SOL_SOCKET || cmp->cmsg_type != SCM_CREDS) {
            free(crmsg);
            goto failed_scm_creds;
-       }       
-       
+       }
+
        sc = (struct sockcred *)(void *)CMSG_DATA(cmp);
-       
+
        c->unixrights.uid = sc->sc_euid;
        c->unixrights.gid = sc->sc_egid;
        c->unixrights.pid = 0;
-       
+
        free(crmsg);
        return 1;
     } else {
@@ -624,7 +624,7 @@ add_new_socket(int fd,
     c = calloc(1, sizeof(*c));
     if (c == NULL)
        return NULL;
-       
+
     if (flags & LISTEN_SOCKET) {
        c->fd = fd;
     } else {
@@ -644,13 +644,13 @@ add_new_socket(int fd,
 
 #ifdef HAVE_GCD
     init_globals();
-       
-    c->in = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, 
+
+    c->in = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ,
                                   c->fd, 0, eventq);
     c->out = dispatch_source_create(DISPATCH_SOURCE_TYPE_WRITE,
                                    c->fd, 0, eventq);
-    
-    dispatch_source_set_event_handler(c->in, ^{ 
+
+    dispatch_source_set_event_handler(c->in, ^{
            int rw = (c->flags & WAITING_WRITE);
            handle_read(c);
            if (rw == 0 && (c->flags & WAITING_WRITE))
@@ -666,7 +666,7 @@ add_new_socket(int fd,
            }
            maybe_close(c);
        });
-    
+
     dispatch_resume(c->in);
 #else
     clients = erealloc(clients, sizeof(clients[0]) * (num_clients + 1));
@@ -882,7 +882,7 @@ handle_read(struct client *c)
                            c->len + 1024);
        c->len += 1024;
     }
-    
+
     len = read(c->fd, c->inmsg + c->ptr, c->len - c->ptr);
     if (len <= 0) {
        c->flags |= WAITING_CLOSE;
@@ -892,10 +892,10 @@ handle_read(struct client *c)
     c->ptr += len;
     if (c->ptr > c->len)
        abort();
-    
+
     while (c->ptr >= sizeof(dlen)) {
        struct socket_call *cs;
-       
+
        if((c->flags & ALLOW_HTTP) && c->ptr >= 4 &&
           strncmp((char *)c->inmsg, "GET ", 4) == 0 &&
           strncmp((char *)c->inmsg + c->ptr - 4, "\r\n\r\n", 4) == 0) {
@@ -923,24 +923,24 @@ handle_read(struct client *c)
            if (dlen > c->ptr - sizeof(dlen)) {
                break;
            }
-       
+
            cs = emalloc(sizeof(*cs));
            cs->c = c;
            cs->in.data = emalloc(dlen);
            memcpy(cs->in.data, c->inmsg + sizeof(dlen), dlen);
            cs->in.length = dlen;
-       
+
            c->ptr -= sizeof(dlen) + dlen;
            memmove(c->inmsg,
                    c->inmsg + sizeof(dlen) + dlen,
                    c->ptr);
        }
-       
+
        c->calls++;
 
        if ((c->flags & UNIX_SOCKET) != 0) {
            if (update_client_creds(c))
-               _heim_ipc_create_cred(c->unixrights.uid, c->unixrights.gid, 
+               _heim_ipc_create_cred(c->unixrights.uid, c->unixrights.gid,
                                      c->unixrights.pid, -1, &cs->cred);
        }
 
@@ -995,7 +995,7 @@ process_loop(void)
                fds[n].events |= POLLIN;
            if (clients[n]->flags & WAITING_WRITE)
                fds[n].events |= POLLOUT;
-           
+
            fds[n].revents = 0;
        }
 
index f4724f7d1723ac2835540c546ffa89e9d3f2d248..8b56d21aa4725bf84702f15cec6f27e6f8c06f97 100644 (file)
@@ -80,11 +80,11 @@ test_ipc(const char *service)
 
     req.length = 0;
     req.data = NULL;
-    
+
     ret = heim_ipc_call(ipc, &req, &rep, NULL);
     if (ret)
        errx(1, "heim_ipc_call: %d", ret);
-    
+
     s = heim_ipc_semaphore_create(0);
     if (s == NULL)
        errx(1, "heim_ipc_semaphore_create");
@@ -108,10 +108,10 @@ main(int argc, char **argv)
 
     if (getarg(args, num_args, argc, argv, &optidx))
        usage(1);
-       
+
     if (help_flag)
        usage(0);
-    
+
     if (version_flag) {
        print_version(NULL);
        exit(0);
index 1db8cf338dde99fe07de2c23191d417a3ba4a298..b493079d94a38842684be5798a69ceece6939ace 100644 (file)
@@ -119,10 +119,10 @@ main(int argc, char **argv)
 
     if (getarg(args, num_args, argc, argv, &optidx))
        usage(1);
-       
+
     if (help_flag)
        usage(0);
-    
+
     if (version_flag) {
        print_version(NULL);
        exit(0);
index 4867eca89465fb5e141b95e0c34b25d7802fbea7..680d77bc913efda29ac700cb155e59e42b70b686 100644 (file)
@@ -81,10 +81,10 @@ main(int argc, char **argv)
 
     if (getarg(args, num_args, argc, argv, &optidx))
        usage(1);
-       
+
     if (help_flag)
        usage(0);
-    
+
     if (version_flag) {
        print_version(NULL);
        exit(0);
index ff7dde9397d622496578d5f035a0a6349dbc8376..4ea5cdb08e8598fc63c7f39a395a57f1b742ca10 100644 (file)
@@ -287,7 +287,7 @@ _kadm5_ad_connect(void *server_handle)
        if (r == NULL) {
            krb5_set_error_message(context->context, KADM5_NO_SRV, "Didn't find ldap dns");
            return KADM5_NO_SRV;
-       }       
+       }
 
        for (rr = r->head ; rr != NULL; rr = rr->next) {
            if (rr->type != rk_ns_t_srv)
@@ -318,20 +318,20 @@ _kadm5_ad_connect(void *server_handle)
        lp = ldap_init(servers[i].server, servers[i].port);
        if (lp == NULL)
            continue;
-       
+
        if (ldap_set_option(lp, LDAP_OPT_PROTOCOL_VERSION, &version)) {
            ldap_unbind(lp);
            continue;
        }
-       
+
        if (ldap_set_option(lp, LDAP_OPT_REFERRALS, LDAP_OPT_OFF)) {
            ldap_unbind(lp);
            continue;
        }
-       
+
 #ifdef HAVE_TSASL
        lret = ldap_tsasl_bind_s(lp, NULL, NULL, NULL, servers[i].server);
-                               
+
 #else
        lret = ldap_sasl_interactive_bind_s(lp, NULL, NULL, NULL, NULL,
                                            LDAP_SASL_QUIET,
@@ -358,7 +358,7 @@ _kadm5_ad_connect(void *server_handle)
        int attrlen = 0;
        char **vals;
        int ret;
-       
+
        laddattr(&attr, &attrlen, "defaultNamingContext");
 
        ret = ldap_search_s(CTX2LP(context), "", LDAP_SCOPE_BASE,
@@ -640,7 +640,7 @@ kadm5_ad_create_principal(void *server_handle,
            s[0] = '$';
            s[1] = '\0';
        }
-       
+
        short_spn = strdup(p);
        if (short_spn == NULL) {
            errno = ENOMEM;
@@ -733,7 +733,7 @@ kadm5_ad_create_principal(void *server_handle,
 
     } else {
        /* create user account */
-       
+
        a = &rattrs[0];
        a->mod_op = LDAP_MOD_ADD;
        a->mod_type = "userAccountControl";
index 69610d0a3176fa5a657548fe99a9f4d69d88aaaa..d5407d1549f4f62aef5faaa0e1a1db496f77f8e0 100644 (file)
@@ -67,22 +67,22 @@ change(void *server_handle,
 
        num_keys = ent.entry.keys.len;
        keys     = ent.entry.keys.val;
-       
+
        ent.entry.keys.len = 0;
        ent.entry.keys.val = NULL;
-       
+
        ret = _kadm5_set_keys(context, &ent.entry, password);
        if(ret) {
            _kadm5_free_keys (context->context, num_keys, keys);
            goto out2;
        }
-       
+
        if (cond)
            existsp = _kadm5_exists_keys (ent.entry.keys.val,
                                          ent.entry.keys.len,
                                          keys, num_keys);
        _kadm5_free_keys (context->context, num_keys, keys);
-       
+
        if (existsp) {
            ret = KADM5_PASS_REUSE;
            krb5_set_error_message(context->context, ret,
index 811921d96cf2f9e6f8241d84d04e373e1c42f4fe..e121a48994b86a844308847156ac15eda6a2d79c 100644 (file)
@@ -87,27 +87,27 @@ find_db_spec(kadm5_server_context *ctx)
        ret = hdb_get_dbinfo(context, &info);
        if (ret)
            return ret;
-       
+
        d = NULL;
        while ((d = hdb_dbinfo_get_next(info, d)) != NULL) {
            const char *p = hdb_dbinfo_get_realm(context, d);
-       
+
            /* match default (realm-less) */
            if(p != NULL && strcmp(ctx->config.realm, p) != 0)
                continue;
-       
+
            p = hdb_dbinfo_get_dbname(context, d);
            if (p)
                ctx->config.dbname = strdup(p);
-       
+
            p = hdb_dbinfo_get_acl_file(context, d);
            if (p)
                ctx->config.acl_file = strdup(p);
-       
+
            p = hdb_dbinfo_get_mkey_file(context, d);
            if (p)
                ctx->config.stash_file = strdup(p);
-       
+
            p = hdb_dbinfo_get_log_file(context, d);
            if (p)
                ctx->log_context.log_file = strdup(p);
index d6f8f6a4de4492fcab42238e4471998fee87e4e3..04312c024ed3ef2bbf779aa121dc513f2f8b1774 100644 (file)
@@ -141,7 +141,7 @@ out:
     hdb_free_entry(context->context, &ent);
     return _kadm5_error_code(ret);
 }
-                               
+
 
 kadm5_ret_t
 kadm5_s_create_principal(void *server_handle,
index 85907b590010e57a1db576a7ab0dad938cecfe0a..6719e38461dbeb0bfa03a622c0a4165b6a0daa3d 100644 (file)
@@ -72,7 +72,7 @@ print_keys(krb5_context context, Key *keys, size_t nkeys)
            if (keys[i].salt->salt.length)
                printf("%.*s", (int)keys[i].salt->salt.length,
                       (char *)keys[i].salt->salt.data);
-       }       
+       }
        printf("\n");
     }
     printf("end keys:\n");
index 6ec83920f136da5981006e93cd5608ae1d6114ec..f2d1f2f285bde5c037d0b205c6c4d30363f50cb9 100644 (file)
@@ -103,7 +103,7 @@ perform_tl_data(krb5_context context,
                                   NULL);
        if (ret)
            return KADM5_BAD_TL_TYPE;
-       
+
        ret = hdb_replace_extension(context, &ent->entry, &ext);
        free_HDB_extension(&ext);
     } else {
index 0372e6f8427a51d64ad96a23658982f392596d71..e03585e222a867749a01a164f925d76d82f35814 100644 (file)
@@ -152,7 +152,7 @@ kadm5_s_get_principal(void *server_handle,
     }
 #if 0 /* XXX implement */
     if(mask & KADM5_AUX_ATTRIBUTES)
-       ;       
+       ;
     if(mask & KADM5_LAST_SUCCESS)
        ;
     if(mask & KADM5_LAST_FAILED)
index ad4f7816614771d797b9b913b7a71ee0a09cd201..1623ed1a995d91c947ff38214ee954f740c7e0b8 100644 (file)
@@ -500,7 +500,7 @@ kadm_connect(kadm5_client_context *ctx)
            p.realm = ctx->realm;
        }
        ret = _kadm5_marshal_params(context, &p, &params);
-       
+
        ret = krb5_write_priv_message(context, ctx->ac, &s, &params);
        krb5_data_free(&params);
        if(ret) {
index b37b20dad48def765feb54d69f241cbfc166489b..7f84b0909d3aa1642818a01fa7d441215eda3cfa 100644 (file)
@@ -1,35 +1,35 @@
 .\" $Id$
-.\" 
+.\"
 .\" Copyright (c) 2005 - 2007 Kungliga Tekniska Högskolan
 .\" (Royal Institute of Technology, Stockholm, Sweden).
-.\" All rights reserved. 
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
 .\"    $Id$
 .\"
index dcdff4a4531ec2277f5c0d6d418e94fbac74eaf1..6be1f110c45cb244afcfcc08dcc00a5f9fcda06f 100644 (file)
@@ -1,35 +1,35 @@
 .\" $Id$
-.\" 
+.\"
 .\" Copyright (c) 2005 Kungliga Tekniska Högskolan
 .\" (Royal Institute of Technology, Stockholm, Sweden).
-.\" All rights reserved. 
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
 .Dd May 24, 2005
 .Dt IPROP 8
@@ -176,7 +176,7 @@ like 5 min, 300 s, or simply a number of seconds.
 .Pa slave-stats
 in the database directory.
 .Sh SEE ALSO
-.Xr krb5.conf 5 , 
+.Xr krb5.conf 5 ,
 .Xr hprop 8 ,
 .Xr hpropd 8 ,
 .Xr iprop-log 8 ,
index 7243af3c5bd9b51aa3decedfec2160d71b01f847..492bbadbd2c230df0291267e60f5ad810acb31b0 100644 (file)
@@ -577,7 +577,7 @@ process_msg (krb5_context context, slave *s, int log_fd,
        if (s->version == 0 && tmp != 0) {
            if (current_version < (uint32_t)tmp) {
                krb5_warnx (context, "Slave %s (version %lu) have later version "
-                           "the master (version %lu) OUT OF SYNC", 
+                           "the master (version %lu) OUT OF SYNC",
                            s->name, (unsigned long)tmp,
                            (unsigned long)current_version);
            }
@@ -698,7 +698,7 @@ write_stats(krb5_context context, slave *slaves, uint32_t current_version)
            rtbl_add_column_entry(tbl, SLAVE_ADDRESS, str);
        } else
            rtbl_add_column_entry(tbl, SLAVE_ADDRESS, "<unknown>");
-       
+
        snprintf(str, sizeof(str), "%u", (unsigned)slaves->version);
        rtbl_add_column_entry(tbl, SLAVE_VERSION, str);
 
index 69c8bae8884b27121c718084d541e03d5e54ff6c..38e9a7b7108cbb96e0555e8449d74b69ccda7ab5 100644 (file)
@@ -63,14 +63,14 @@ connect_to_master (krb5_context context, const char *master,
 
     error = getaddrinfo (master, port_str, &hints, &ai);
     if (error) {
-       krb5_warnx(context, "Failed to get address of to %s: %s", 
+       krb5_warnx(context, "Failed to get address of to %s: %s",
                   master, gai_strerror(error));
        return -1;
     }
 
     for (a = ai; a != NULL; a = a->ai_next) {
        char node[NI_MAXHOST];
-       error = getnameinfo(a->ai_addr, a->ai_addrlen, 
+       error = getnameinfo(a->ai_addr, a->ai_addrlen,
                            node, sizeof(node), NULL, 0, NI_NUMERICHOST);
        if (error)
            strlcpy(node, "[unknown-addr]", sizeof(node));
@@ -743,6 +743,6 @@ main(int argc, char **argv)
     else
        krb5_warnx(context, "%s unexpected exit reason: %ld",
                       getprogname(), (long)exit_flag);
-    
+
     return 0;
 }
index 948ecc03ac491b8dcbfc9c75465f97c1a796d930..65804afbf92b31eaa6d7b544d3e3b13447f13db4 100644 (file)
@@ -308,7 +308,7 @@ _kadm5_marshal_params(krb5_context context,
     krb5_storage *sp = krb5_storage_emem();
 
     krb5_store_int32(sp, params->mask & (KADM5_CONFIG_REALM));
-       
+
     if(params->mask & KADM5_CONFIG_REALM)
        krb5_store_string(sp, params->realm);
     krb5_storage_to_data(sp, out);
@@ -334,7 +334,7 @@ _kadm5_unmarshal_params(krb5_context context,
     if (ret)
        goto out;
     params->mask = mask;
-       
+
     if(params->mask & KADM5_CONFIG_REALM)
        ret = krb5_ret_string(sp, &params->realm);
  out:
index e632e25e9ac63a331cbe11f75c67adf26e2d9f96..a6f0b3ef67ee39c3704e5771d03a4eee7ff873cd 100644 (file)
@@ -507,7 +507,7 @@ kadm5_check_password_quality (krb5_context context,
        if (msg)
            krb5_set_error_message(context, 0, "(old) password policy "
                                   "failed with %s", msg);
-       
+
     }
     return msg;
 }
index 169114dc78feb5f8feb77f56f3b234d3516996c2..740df0450584fa31ab6f30df8db42efb64372545 100644 (file)
@@ -103,7 +103,7 @@ try_aix(void)
        strlcpy(path, p, sizeof(path));
     else
        snprintf(path, sizeof(path), "%s/afslib.so", LIBDIR);
-       
+
     ptr = dlopen(path, RTLD_NOW);
     if(ptr == NULL) {
        if(_kafs_debug) {
@@ -253,16 +253,16 @@ k_pioctl(char *a_path,
     case MACOS_DEV_POINT: {
        struct devdata data = { AFSCALL_PIOCTL, 0, 0, 0, 0, 0, 0, 0 };
        int ret;
-       
+
        data.param1 = (unsigned long)a_path;
        data.param2 = (unsigned long)o_opcode;
        data.param3 = (unsigned long)a_paramsP;
        data.param4 = (unsigned long)a_followSymlinks;
-       
+
        ret = do_ioctl(&data);
        if (ret)
            return ret;
-       
+
        return data.retval;
     }
 #ifdef _AIX
index c96b3b4985c551b88db812dc0b6e93c0db5212ef..d44e35e8c98048ed35c49a690774a9a59020359d 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1998 - 2006 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\"    $Id$
 .\"
 .Dd May  1, 2006
@@ -161,7 +161,7 @@ and
 .Pp
 .Fn krb5_afslog ,
 .Fn kafs_settoken5
-can be configured to behave differently via a 
+can be configured to behave differently via a
 .Nm krb5_appdefault
 option
 .Li afs-use-524
index b7a5a0654908dd7bf3dcd0e8b9e7aadaa21b199e..19eeecda429bb0b74320b854a83466d9d3a3c3e0 100644 (file)
@@ -259,7 +259,7 @@ make_cred_from_ccred(krb5_context context,
        if (cred->addresses.val == NULL)
            goto nomem;
        cred->addresses.len = i;
-       
+
        for (i = 0; i < cred->addresses.len; i++) {
            cred->addresses.val[i].addr_type = incred->addresses[i]->type;
            ret = krb5_data_copy(&cred->addresses.val[i].address,
@@ -546,7 +546,7 @@ acc_resolve(krb5_context context, krb5_ccache *id, const char *res)
        error = (*a->ccache->func->get_kdc_time_offset)(a->ccache,
                                                        cc_credentials_v5,
                                                        &offset);
-       if (error == 0) 
+       if (error == 0)
            context->kdc_sec_offset = offset;
 
     } else if (error == ccErrCCacheNotFound) {
@@ -887,7 +887,7 @@ acc_get_version(krb5_context context,
 {
     return 0;
 }
-               
+
 struct cache_iter {
     cc_context_t context;
     cc_ccache_iterator_t iter;
@@ -961,7 +961,7 @@ acc_get_cache_next(krb5_context context, krb5_cc_cursor cursor, krb5_ccache *id)
        acc_close(context, *id);
        *id = NULL;
        return translate_cc_error(context, error);
-    }  
+    }
     return 0;
 }
 
@@ -1031,7 +1031,7 @@ acc_get_default_name(krb5_context context, char **str)
        (*cc->func->release)(cc);
        return translate_cc_error(context, error);
     }
-       
+
     error = asprintf(str, "API:%s", name->data);
     (*name->func->release)(name);
     (*cc->func->release)(cc);
index 0e152405a6b6becd1176fe2c3e4ef8cb61016da3..c94aae361b8e6d3d2c37792eea5bb11d186b2dd7 100644 (file)
@@ -224,7 +224,7 @@ krb5_acl_match_string(krb5_context context,
        return EACCES;
     }
 }
-       
+
 /**
  * krb5_acl_match_file matches ACL format against each line in a file
  * using krb5_acl_match_string(). Lines starting with # are treated
index da3661702244a2d338e2b966da75f8f738cdf4a2..5d321a7e917d2975f32a968296e05637a67b7c88 100644 (file)
@@ -421,7 +421,7 @@ ipv6_mask_boundary(krb5_context context, const krb5_address *inaddr,
        sub_len = min(8, len);
 
        m = 0xff << (8 - sub_len);
-       
+
        laddr.s6_addr[i] = addr.s6_addr[i] & m;
        haddr.s6_addr[i] = (addr.s6_addr[i] & m) | ~m;
 
@@ -491,7 +491,7 @@ arange_parse_addr (krb5_context context,
            krb5_free_addresses(context, &addrmask);
            return -1;
        }
-       
+
        address += p - address + 1;
 
        num = strtol(address, &q, 10);
@@ -508,7 +508,7 @@ arange_parse_addr (krb5_context context,
 
     } else {
        krb5_addresses low, high;
-       
+
        strsep_copy(&address, "-", buf, sizeof(buf));
        ret = krb5_parse_address(context, buf, &low);
        if(ret)
@@ -517,14 +517,14 @@ arange_parse_addr (krb5_context context,
            krb5_free_addresses(context, &low);
            return -1;
        }
-       
+
        strsep_copy(&address, "-", buf, sizeof(buf));
        ret = krb5_parse_address(context, buf, &high);
        if(ret) {
            krb5_free_addresses(context, &low);
            return ret;
        }
-       
+
        if(high.len != 1 && high.val[0].addr_type != low.val[0].addr_type) {
            krb5_free_addresses(context, &low);
            krb5_free_addresses(context, &high);
@@ -610,7 +610,7 @@ arange_print_addr (const krb5_address *addr, char *str, size_t len)
     if (l > len)
        l = len;
     size = l;
-       
+
     ret = krb5_print_address (&a->low, str + size, len - size, &l);
     if (ret)
        return ret;
@@ -656,7 +656,7 @@ arange_order_addr(krb5_context context,
        abort();
         UNREACHABLE(return 0);
     }
-       
+
     if(a2->addr_type == KRB5_ADDRESS_ARANGE) {
        struct arange *b = a2->address.data;
        tmp1 = krb5_address_order(context, &a->low, &b->low);
index e28232fdaaa986649e478b670a8f3b532a1f709f..19b0ddd07502fcec4125452dfacc042316e314a9 100644 (file)
@@ -218,7 +218,7 @@ string_to_key_test(krb5_context context)
        opaque.data = iter;
        opaque.length = sizeof(iter);
        _krb5_put_int(iter, keys[i].iterations, 4);
-       
+
        if (keys[i].pbkdf2) {
            unsigned char keyout[32];
 
@@ -229,13 +229,13 @@ string_to_key_test(krb5_context context)
                                   salt.saltvalue.data, salt.saltvalue.length,
                                   keys[i].iterations,
                                   keys[i].keylen, keyout);
-       
+
            if (memcmp(keyout, keys[i].pbkdf2, keys[i].keylen) != 0) {
                krb5_warnx(context, "%d: pbkdf2", i);
                val = 1;
                continue;
            }
-       
+
            if (verbose) {
                printf("PBKDF2:\n");
                hex_dump_data(keyout, keys[i].keylen);
@@ -257,7 +257,7 @@ string_to_key_test(krb5_context context)
                val = 1;
                continue;
            }
-       
+
            if (key.keyvalue.length != keys[i].keylen) {
                krb5_warnx(context, "%d: key wrong length (%lu/%lu)",
                           i, (unsigned long)key.keyvalue.length,
@@ -265,13 +265,13 @@ string_to_key_test(krb5_context context)
                val = 1;
                continue;
            }
-       
+
            if (memcmp(key.keyvalue.data, keys[i].key, keys[i].keylen) != 0) {
                krb5_warnx(context, "%d: key wrong", i);
                val = 1;
                continue;
            }
-       
+
            if (verbose) {
                printf("key:\n");
                hex_dump_data(key.keyvalue.data, key.keyvalue.length);
@@ -380,7 +380,7 @@ krb_enc_iov2(krb5_context context,
 
     free(p);
 
-    /* 
+    /*
      * Now decrypt use iov
      */
 
@@ -393,7 +393,7 @@ krb_enc_iov2(krb5_context context,
 
     free(iov[1].data.data);
     free(iov[2].data.data);
-    
+
     iov[1].data.data = p;
     iov[1].data.length += iov[2].data.length;
 
@@ -607,9 +607,9 @@ krb_enc_test(krb5_context context)
        cipher.data = krbencs[i].edata;
        plain.length = krbencs[i].plen;
        plain.data = krbencs[i].pdata;
-       
+
        ret = krb_enc(context, crypto, krbencs[i].usage, &cipher, &plain);
-               
+
        if (ret)
            errx(1, "krb_enc failed with %d for test %d", ret, i);
 
@@ -661,7 +661,7 @@ iov_test(krb5_context context)
     ret = krb5_crypto_length(context, crypto, KRB5_CRYPTO_TYPE_HEADER, &len);
     if (ret)
        krb5_err(context, 1, ret, "krb5_crypto_length");
-    
+
     signonly.data = "This should be signed";
     signonly.length = strlen(signonly.data);
     in.data = "inputdata";
@@ -682,7 +682,7 @@ iov_test(krb5_context context)
     iov[4].flags = KRB5_CRYPTO_TYPE_PADDING;
     iov[5].flags = KRB5_CRYPTO_TYPE_TRAILER;
 
-    ret = krb5_crypto_length_iov(context, crypto, iov, 
+    ret = krb5_crypto_length_iov(context, crypto, iov,
                                 sizeof(iov)/sizeof(iov[0]));
     if (ret)
        krb5_err(context, 1, ret, "krb5_crypto_length_iov");
@@ -712,11 +712,11 @@ iov_test(krb5_context context)
      * Encrypt
      */
 
-    ret = krb5_encrypt_iov_ivec(context, crypto, 7, iov, 
+    ret = krb5_encrypt_iov_ivec(context, crypto, 7, iov,
                                sizeof(iov)/sizeof(iov[0]), NULL);
     if (ret)
        krb5_err(context, 1, ret, "krb5_encrypt_iov_ivec");
-    
+
     /*
      * Decrypt
      */
@@ -779,11 +779,11 @@ iov_test(krb5_context context)
      * Encrypt
      */
 
-    ret = krb5_encrypt_iov_ivec(context, crypto, 7, 
+    ret = krb5_encrypt_iov_ivec(context, crypto, 7,
                                iov, sizeof(iov)/sizeof(iov[0]), NULL);
     if (ret)
        krb5_err(context, 1, ret, "krb5_encrypt_iov_ivec");
-    
+
     /*
      * Decrypt
      */
index 78cf4c6f606728e983cfc3c706706edfff92d347..7bfd861da94ed85ff055a039cf845961ed600101 100644 (file)
@@ -72,7 +72,7 @@ krb5_aname_to_localname (krb5_context context,
        ret = krb5_copy_principal(context, aname, &rootprinc);
        if (ret)
            return ret;
-       
+
        userok = krb5_kuserok(context, rootprinc, res);
        krb5_free_principal(context, rootprinc);
        if (!userok)
index d4dc758faa776fe2ab6df5d89cb69f7dbad74027..d4e963d74ab177ea540e7100d198c548947cf444 100644 (file)
@@ -47,7 +47,7 @@ krb5_appdefault_boolean(krb5_context context, const char *appname,
     if(realm != NULL)
        def_val = krb5_config_get_bool_default(context, NULL, def_val,
                                               "realms", realm, option, NULL);
-       
+
     def_val = krb5_config_get_bool_default(context, NULL, def_val,
                                           "appdefaults",
                                           option,
index 4f74adb9e59fa004c3aaad24b07d4cca2ee1a79c..518e19359c1577537e94c5a8df022fb824dd3b2c 100644 (file)
@@ -290,7 +290,7 @@ krb5_auth_con_getlocalsubkey(krb5_context context,
     return copy_key(context, auth_context->local_subkey, keyblock);
 }
 
-/* coverity[+alloc : arg-*2] */ 
+/* coverity[+alloc : arg-*2] */
 KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
 krb5_auth_con_getremotesubkey(krb5_context context,
                              krb5_auth_context auth_context,
index 211642e5682c4302b655d68d9c631c84066519cc..616044e67baad8f0af23a40c2aa1c733520ccefa 100644 (file)
@@ -38,7 +38,7 @@
 /**
  * @page krb5_ccache_intro The credential cache functions
  * @section section_krb5_ccache Kerberos credential caches
- * 
+ *
  * krb5_ccache structure holds a Kerberos credential cache.
  *
  * Heimdal support the follow types of credential caches:
@@ -837,7 +837,7 @@ krb5_cc_set_flags(krb5_context context,
 {
     return (*id->ops->set_flags)(context, id, flags);
 }
-               
+
 /**
  * Get the flags of `id', store them in `flags'.
  *
@@ -1144,7 +1144,7 @@ krb5_cc_cache_match (krb5_context context,
        ret = krb5_cc_get_principal(context, cache, &principal);
        if (ret == 0) {
            krb5_boolean match;
-       
+
            match = krb5_principal_compare(context, principal, client);
            krb5_free_principal(context, principal);
            if (match)
@@ -1245,7 +1245,7 @@ build_conf_principals(krb5_context context, krb5_ccache id,
     krb5_free_principal(context, client);
     return ret;
 }
-               
+
 /**
  * Return TRUE (non zero) if the principal is a configuration
  * principal (generated part of krb5_cc_set_config()). Returns FALSE
@@ -1267,7 +1267,7 @@ krb5_is_config_principal(krb5_context context,
     if (principal->name.name_string.len == 0 ||
        strcmp(principal->name.name_string.val[0], KRB5_CONF_NAME) != 0)
        return FALSE;
-       
+
     return TRUE;
 }
 
@@ -1306,11 +1306,11 @@ krb5_cc_set_config(krb5_context context, krb5_ccache id,
        /* not that anyone care when this expire */
        cred.times.authtime = time(NULL);
        cred.times.endtime = cred.times.authtime + 3600 * 24 * 30;
-       
+
        ret = krb5_data_copy(&cred.ticket, data->data, data->length);
        if (ret)
            goto out;
-       
+
        ret = krb5_cc_store_cred(context, id, &cred);
     }
 
@@ -1396,7 +1396,7 @@ krb5_cccol_cursor_new(krb5_context context, krb5_cccol_cursor *cursor)
 }
 
 /**
- * Get next credential cache from the iteration. 
+ * Get next credential cache from the iteration.
  *
  * @param context A Kerberos 5 context
  * @param cursor the iteration cursor
@@ -1418,13 +1418,13 @@ krb5_cccol_cursor_next(krb5_context context, krb5_cccol_cursor cursor,
                       krb5_ccache *cache)
 {
     krb5_error_code ret;
-    
+
     *cache = NULL;
 
     while (cursor->idx < context->num_cc_ops) {
 
        if (cursor->cursor == NULL) {
-           ret = krb5_cc_cache_get_first (context, 
+           ret = krb5_cc_cache_get_first (context,
                                           context->cc_ops[cursor->idx]->prefix,
                                           &cursor->cursor);
            if (ret) {
@@ -1493,7 +1493,7 @@ krb5_cccol_cursor_free(krb5_context context, krb5_cccol_cursor *cursor)
 
 KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
 krb5_cc_last_change_time(krb5_context context,
-                        krb5_ccache id, 
+                        krb5_ccache id,
                         krb5_timestamp *mtime)
 {
     *mtime = 0;
@@ -1630,7 +1630,7 @@ krb5_cc_get_lifetime(krb5_context context, krb5_ccache id, time_t *t)
 
     *t = 0;
     now = time(NULL);
-    
+
     ret = krb5_cc_start_seq_get(context, id, &cursor);
     if (ret)
        return ret;
@@ -1644,7 +1644,7 @@ krb5_cc_get_lifetime(krb5_context context, krb5_ccache id, time_t *t)
        }
        krb5_free_cred_contents(context, &cred);
     }
-    
+
     krb5_cc_end_seq_get(context, id, &cursor);
 
     return ret;
index 97660ee6c73e77fca77ebfe3fd7621fe5192d68c..1e7cd0d464f0891fdbd96dc0f98ccb16da2a8f7a 100644 (file)
@@ -197,7 +197,7 @@ setpw_send_request (krb5_context context,
        chpw.targname = NULL;
        chpw.targrealm = NULL;
     }
-       
+
     ASN1_MALLOC_ENCODE(ChangePasswdDataMS, pwd_data.data, pwd_data.length,
                       &chpw, &len, ret);
     if (ret) {
@@ -302,7 +302,7 @@ process_reply (krb5_context context,
            _krb5_get_int(reply, &size, 4);
            if (size + 4 < len)
                continue;
-           memmove(reply, reply + 4, size);            
+           memmove(reply, reply + 4, size);
            len = size;
            break;
        }
@@ -586,7 +586,7 @@ change_password_loop (krb5_context  context,
 
                if (!replied) {
                    replied = 0;
-               
+
                    ret = (*proc->send_req) (context,
                                             &auth_context,
                                             creds,
index 71df1f44aa3c77f5ed4c250173c13cc8da033069..4ac25ae28703bb47696fd26f473ffd96550ca64c 100644 (file)
@@ -248,7 +248,7 @@ cfstring2cstring(CFStringRef string)
 {
     CFIndex len;
     char *str;
-    
+
     str = (char *) CFStringGetCStringPtr(string, kCFStringEncodingUTF8);
     if (str)
        return strdup(str);
@@ -258,7 +258,7 @@ cfstring2cstring(CFStringRef string)
     str = malloc(len);
     if (str == NULL)
        return NULL;
-       
+
     if (!CFStringGetCString (string, str, len, kCFStringEncodingUTF8)) {
        free (str);
        return NULL;
@@ -297,7 +297,7 @@ parse_plist_config(krb5_context context, const char *path, krb5_config_section *
     CFReadStreamRef s;
     CFDictionaryRef d;
     CFURLRef url;
-    
+
     url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (UInt8 *)path, strlen(path), FALSE);
     if (url == NULL) {
        krb5_clear_error_message(context);
@@ -319,7 +319,7 @@ parse_plist_config(krb5_context context, const char *path, krb5_config_section *
 
 #ifdef HAVE_CFPROPERTYLISTCREATEWITHSTREAM
     d = (CFDictionaryRef)CFPropertyListCreateWithStream(NULL, s, 0, kCFPropertyListImmutable, NULL, NULL);
-#else 
+#else
     d = (CFDictionaryRef)CFPropertyListCreateFromStream(NULL, s, 0, kCFPropertyListImmutable, NULL, NULL);
 #endif
     CFRelease(s);
@@ -439,7 +439,7 @@ krb5_config_parse_file_multi (krb5_context context,
            home = getenv("HOME");
 
        if (home == NULL) {
-           struct passwd *pw = getpwuid(getuid());     
+           struct passwd *pw = getpwuid(getuid());
            if(pw != NULL)
                home = pw->pw_dir;
        }
@@ -453,7 +453,7 @@ krb5_config_parse_file_multi (krb5_context context,
            fname = newfname;
        }
 #else  /* KRB5_USE_PATH_TOKENS */
-       if (asprintf(&newfname, "%%{USERCONFIG}%s", &fname[1]) < 0 || 
+       if (asprintf(&newfname, "%%{USERCONFIG}%s", &fname[1]) < 0 ||
            newfname == NULL)
        {
            krb5_set_error_message(context, ENOMEM,
@@ -475,7 +475,7 @@ krb5_config_parse_file_multi (krb5_context context,
            return ret;
        }
 #else
-       krb5_set_error_message(context, ENOENT, 
+       krb5_set_error_message(context, ENOENT,
                               "no support for plist configuration files");
        return ENOENT;
 #endif
@@ -489,7 +489,7 @@ krb5_config_parse_file_multi (krb5_context context,
                free(newfname);
            return ret;
        }
-       
+
        if (newfname)
            free(newfname);
        fname = newfname = exp_fname;
@@ -505,7 +505,7 @@ krb5_config_parse_file_multi (krb5_context context,
                free(newfname);
            return ret;
        }
-       
+
        ret = krb5_config_parse_debug (&f, res, &lineno, &str);
        fclose(f.f);
        if (ret) {
@@ -768,7 +768,7 @@ krb5_config_vget_list (krb5_context context,
  *
  * @ingroup krb5_support
  */
+
 KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
 krb5_config_get_string (krb5_context context,
                        const krb5_config_section *c,
index b6c6870938465990535241d0ee5643c1c3ffabeb..9739e73767aee10f68202178846a084eb7046270 100644 (file)
@@ -317,7 +317,7 @@ kt_ops_copy(krb5_context context, const krb5_context src_context)
     return 0;
 }
 
-static const char *sysplugin_dirs[] =  { 
+static const char *sysplugin_dirs[] =  {
     LIBDIR "/plugin/krb5",
 #ifdef __APPLE__
     "/Library/KerberosPlugins/KerberosFrameworkPlugins",
@@ -332,7 +332,7 @@ init_context_once(void *ctx)
     krb5_context context = ctx;
 
     _krb5_load_plugins(context, "krb5", sysplugin_dirs);
-    
+
     bindtextdomain(HEIMDAL_TEXTDOMAIN, HEIMDAL_LOCALEDIR);
 }
 
@@ -392,7 +392,7 @@ krb5_init_context(krb5_context *context)
     ret = hx509_context_init(&p->hx509ctx);
     if (ret)
        goto out;
-#endif 
+#endif
     if (rk_SOCK_INIT())
        p->flags |= KRB5_CTX_F_SOCKETS_INITIALIZED;
 
@@ -433,7 +433,7 @@ copy_etypes (krb5_context context,
 
     *ret_enctypes = malloc(sizeof(ret_enctypes[0]) * i);
     if (*ret_enctypes == NULL) {
-       krb5_set_error_message(context, ENOMEM, 
+       krb5_set_error_message(context, ENOMEM,
                               N_("malloc: out of memory", ""));
        return ENOMEM;
     }
@@ -481,7 +481,7 @@ krb5_copy_context(krb5_context context, krb5_context *out)
        p->default_cc_name = strdup(context->default_cc_name);
     if (context->default_cc_name_env)
        p->default_cc_name_env = strdup(context->default_cc_name_env);
-    
+
     if (context->etypes) {
        ret = copy_etypes(context, context->etypes, &p->etypes);
        if (ret)
@@ -494,7 +494,7 @@ krb5_copy_context(krb5_context context, krb5_context *out)
     }
 
     if (context->default_realms) {
-       ret = krb5_copy_host_realm(context, 
+       ret = krb5_copy_host_realm(context,
                                   context->default_realms, &p->default_realms);
        if (ret)
            goto out;
@@ -736,7 +736,7 @@ krb5_prepend_config_files_default(const char *filelist, char ***pfilenames)
     krb5_free_config_files(defpp);
     if (ret) {
        return ret;
-    }  
+    }
     *pfilenames = pp;
     return 0;
 }
index 69aacdc032f364c833a65e16c996baa7904473cf..7ef8eb96095fe7c4a3fcb003d9d2df3ba0b8db21 100644 (file)
@@ -228,7 +228,7 @@ krb5_compare_creds(krb5_context context, krb5_flags whichfields,
            match = krb5_principal_compare (context, mcreds->client,
                                            creds->client);
     }
-       
+
     if (match && (whichfields & KRB5_TC_MATCH_KEYTYPE))
         match = mcreds->session.keytype == creds->session.keytype;
 
index 67f51adc4e413ff9aa89627235d557e372546f96..63aedc45684e243d0e24def7a7a9f7cfaea6c659 100644 (file)
@@ -477,7 +477,7 @@ verify_checksum(krb5_context context,
     if(ct->verify) {
        ret = (*ct->verify)(context, dkey, data, len, usage, cksum);
        if (ret)
-           krb5_set_error_message(context, ret, 
+           krb5_set_error_message(context, ret,
                                   N_("Decrypt integrity check failed for checksum "
                                      "type %s, key type %s", ""),
                                   ct->name, (crypto != NULL)? crypto->et->name : "(none)");
@@ -1672,7 +1672,7 @@ krb5_crypto_length(krb5_context context,
        krb5_set_error_message(context, EINVAL, "not a derived crypto");
        return EINVAL;
     }
-       
+
     switch(type) {
     case KRB5_CRYPTO_TYPE_EMPTY:
        *len = 0;
@@ -2103,7 +2103,7 @@ krb5_crypto_destroy(krb5_context context,
 
 /**
  * Return the blocksize used algorithm referenced by the crypto context
- * 
+ *
  * @param context Kerberos context
  * @param crypto crypto context to query
  * @param blocksize the resulting blocksize
@@ -2124,7 +2124,7 @@ krb5_crypto_getblocksize(krb5_context context,
 
 /**
  * Return the encryption type used by the crypto context
- * 
+ *
  * @param context Kerberos context
  * @param crypto crypto context to query
  * @param enctype the resulting encryption type
@@ -2145,7 +2145,7 @@ krb5_crypto_getenctype(krb5_context context,
 
 /**
  * Return the padding size used by the crypto context
- * 
+ *
  * @param context Kerberos context
  * @param crypto crypto context to query
  * @param padsize the return padding size
@@ -2166,7 +2166,7 @@ krb5_crypto_getpadsize(krb5_context context,
 
 /**
  * Return the confounder size used by the crypto context
- * 
+ *
  * @param context Kerberos context
  * @param crypto crypto context to query
  * @param confoundersize the returned confounder size
index d6ee48eb915a13e2af748e8d7de90822a0791f65..d03df3d29b87c2aedd74e7fafdbe64ddda8df8e4 100644 (file)
@@ -1,19 +1,19 @@
 /***********************************************************************
  * Copyright (c) 2009, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -26,7 +26,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 #include<windows.h>
index 010496be58e1d2db8415b3671139137cbc535678..fec9a671930aa852e1a575d02536d92289fa6111 100644 (file)
  * @endcode
  *
  * - time
- *     
+ *
  * Format of the time is: YYYYmmddHHMMSS, corresponding to strftime
  * format "%Y%m%d%k%M%S".
  *
index 70096e1c7aa9a6078132328ad740a10a568fb8fb..4c4898a79ea11bad40d8d8da21cae01acbb08cbd 100644 (file)
@@ -2,19 +2,19 @@
 /***********************************************************************
  * Copyright (c) 2009, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -27,7 +27,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 #include "krb5_locl.h"
@@ -168,7 +168,7 @@ _expand_userid(krb5_context context, PTYPE param, const char *postfix, char **re
 
        if (le != 0) {
            if (context)
-               krb5_set_error_message(context, rv, 
+               krb5_set_error_message(context, rv,
                                       "Can't open thread token (GLE=%d)", le);
            goto _exit;
        }
@@ -247,7 +247,7 @@ _expand_csidl(krb5_context context, PTYPE folder, const char *postfix, char **re
        if (context)
            krb5_set_error_message(context, EINVAL, "Unable to determine folder path");
        return EINVAL;
-    } 
+    }
 
     len = strlen(path);
 
@@ -464,7 +464,7 @@ _krb5_expand_path_tokens(krb5_context context,
            return ENOMEM;
 
        }
-       
+
        {
            size_t append_len = strlen(append);
            char * new_str = realloc(*ppath_out, len + append_len + 1);
index fb2ad5ee08a687c05c93f4a8b30064c075d32d4c..731f2934146b215af029824939e93517d151b2e2 100644 (file)
@@ -454,7 +454,7 @@ fcc_initialize(krb5_context context,
            }
        }
        ret |= krb5_store_principal(sp, primary_principal);
-       
+
        ret |= write_storage(context, sp, fd);
 
        krb5_storage_free(sp);
@@ -879,7 +879,7 @@ fcc_get_version(krb5_context context,
 
     return FCACHE(id)->version;
 }
-               
+
 struct fcache_iter {
     int first;
 };
index 63984bc9366d85ed8a01e806c41609eddbcbce54..7875c00057db9eb236e5f4aecda9dd33a716e2be 100644 (file)
@@ -249,16 +249,16 @@ init_tgs_req (krb5_context context,
     ret = krb5_auth_con_init(context, &ac);
     if(ret)
        goto fail;
-    
+
     ret = krb5_auth_con_generatelocalsubkey(context, ac, &krbtgt->session);
     if (ret)
        goto fail;
-    
+
     ret = set_auth_data (context, &t->req_body, &in_creds->authdata,
                         ac->local_subkey);
     if (ret)
        goto fail;
-    
+
     ret = make_pa_tgs_req(context,
                          ac,
                          &t->req_body,
@@ -385,7 +385,7 @@ decrypt_tkt_with_subkey (krb5_context context,
                                   &dec_rep->enc_part,
                                   &size);
     if (ret)
-      krb5_set_error_message(context, ret, 
+      krb5_set_error_message(context, ret,
                             N_("Failed to decode encpart in ticket", ""));
     krb5_data_free (&data);
     return ret;
@@ -442,7 +442,7 @@ get_cred_kdc(krb5_context context,
        self.name = impersonate_principal->name;
        self.realm = impersonate_principal->realm;
        self.auth = estrdup("Kerberos");
-       
+
        ret = _krb5_s4u2self_to_checksumdata(context, &self, &data);
        if (ret) {
            free(self.auth);
@@ -477,7 +477,7 @@ get_cred_kdc(krb5_context context,
            goto out;
        if (len != size)
            krb5_abortx(context, "internal asn1 error");
-       
+
        ret = krb5_padata_add(context, &padata, KRB5_PADATA_FOR_USER, buf, len);
        if (ret)
            goto out;
@@ -611,7 +611,7 @@ get_cred_kdc_address(krb5_context context,
 
        krb5_appdefault_boolean(context, NULL, krbtgt->server->realm,
                                "no-addresses", FALSE, &noaddr);
-       
+
        if (!noaddr) {
            krb5_get_all_client_addrs(context, &addresses);
            /* XXX this sucks. */
@@ -736,7 +736,7 @@ get_cred_kdc_capath_worker(krb5_context context,
                            krb5_creds *in_creds,
                            krb5_const_realm try_realm,
                            krb5_principal impersonate_principal,
-                           Ticket *second_ticket,                      
+                           Ticket *second_ticket,
                            krb5_creds **out_creds,
                            krb5_creds ***ret_tgts)
 {
@@ -811,7 +811,7 @@ get_cred_kdc_capath_worker(krb5_context context,
            krb5_free_principal(context, tmp_creds.client);
            return ret;
        }
-       /* 
+       /*
         * if either of the chain or the ok_as_delegate was stripped
         * by the kdc, make sure we strip it too.
         */
@@ -844,7 +844,7 @@ get_cred_kdc_capath_worker(krb5_context context,
            return ret;
        }
     }
-       
+
     krb5_free_principal(context, tmp_creds.server);
     krb5_free_principal(context, tmp_creds.client);
     *out_creds = calloc(1, sizeof(**out_creds));
@@ -862,7 +862,7 @@ get_cred_kdc_capath_worker(krb5_context context,
     }
     krb5_free_creds(context, tgt);
     return ret;
-}                           
+}
 
 /*
 get_cred(server)
@@ -885,7 +885,7 @@ get_cred_kdc_capath(krb5_context context,
                    krb5_ccache ccache,
                    krb5_creds *in_creds,
                    krb5_principal impersonate_principal,
-                   Ticket *second_ticket,                      
+                   Ticket *second_ticket,
                    krb5_creds **out_creds,
                    krb5_creds ***ret_tgts)
 {
@@ -920,7 +920,7 @@ get_cred_kdc_referral(krb5_context context,
                      krb5_ccache ccache,
                      krb5_creds *in_creds,
                      krb5_principal impersonate_principal,
-                     Ticket *second_ticket,                    
+                     Ticket *second_ticket,
                      krb5_creds **out_creds,
                      krb5_creds ***ret_tgts)
 {
@@ -948,7 +948,7 @@ get_cred_kdc_referral(krb5_context context,
     /* find tgt for the clients base realm */
     {
        krb5_principal tgtname;
-       
+
        ret = krb5_make_principal(context, &tgtname,
                                  client_realm,
                                  KRB5_TGS_NAME,
@@ -956,7 +956,7 @@ get_cred_kdc_referral(krb5_context context,
                                  NULL);
        if(ret)
            return ret;
-       
+
        ret = find_cred(context, ccache, tgtname, *ret_tgts, &tgt);
        krb5_free_principal(context, tgtname);
        if (ret)
@@ -1034,9 +1034,9 @@ get_cred_kdc_referral(krb5_context context,
                 goto out;
            }
            tickets++;
-       }       
+       }
 
-       /* 
+       /*
         * if either of the chain or the ok_as_delegate was stripped
         * by the kdc, make sure we strip it too.
         */
@@ -1082,7 +1082,7 @@ _krb5_get_cred_kdc_any(krb5_context context,
                       krb5_ccache ccache,
                       krb5_creds *in_creds,
                       krb5_principal impersonate_principal,
-                      Ticket *second_ticket,                   
+                      Ticket *second_ticket,
                       krb5_creds **out_creds,
                       krb5_creds ***ret_tgts)
 {
@@ -1167,7 +1167,7 @@ krb5_get_credentials_with_flags(krb5_context context,
             *out_creds = res_creds;
             return 0;
         }
-       
+
        krb5_timeofday(context, &timeret);
        if(res_creds->times.endtime > timeret) {
            *out_creds = res_creds;
@@ -1384,7 +1384,7 @@ krb5_get_creds(krb5_context context,
            krb5_free_principal(context, in_creds.client);
             goto out;
         }
-       
+
        krb5_timeofday(context, &timeret);
        if(res_creds->times.endtime > timeret) {
            *out_creds = res_creds;
@@ -1469,7 +1469,7 @@ krb5_get_renewed_creds(krb5_context context,
        }
     } else {
        const char *realm = krb5_principal_get_realm(context, client);
-       
+
        ret = krb5_make_principal(context, &in.server, realm, KRB5_TGS_NAME,
                                  realm, NULL);
        if (ret) {
index ba4301ce297a0304bbbd5f96b5207eb3ef4b8fb1..44baa6d1c2cdfb51ca855a2f9392b692cae54489 100644 (file)
@@ -76,7 +76,7 @@ _krb5_get_default_principal_local (krb5_context context,
        else
            ret = krb5_make_principal(context, princ, NULL, "root", NULL);
     } else {
-       struct passwd *pw = getpwuid(uid);      
+       struct passwd *pw = getpwuid(uid);
        if(pw != NULL)
            user = pw->pw_name;
        else {
index a109c713268732b63d0e33ed87275d060d8c2387..979fc9b0ae99368f54e9a92e5d840ca092b64f0e 100644 (file)
@@ -225,7 +225,7 @@ krb5_get_forwarded_creds (krb5_context          context,
        if (!noaddr)
            paddrs = &addrs;
     }
-       
+
     /*
      * If tickets have addresses, get the address of the remote host.
      */
@@ -241,7 +241,7 @@ krb5_get_forwarded_creds (krb5_context          context,
                                  hostname, gai_strerror(ret));
            return ret2;
        }
-       
+
        ret = add_addrs (context, &addrs, ai);
        freeaddrinfo (ai);
        if (ret)
@@ -287,9 +287,9 @@ krb5_get_forwarded_creds (krb5_context          context,
     if (auth_context->flags & KRB5_AUTH_CONTEXT_DO_TIME) {
        krb5_timestamp sec;
        int32_t usec;
-       
+
        krb5_us_timeofday (context, &sec, &usec);
-       
+
        ALLOC(enc_krb_cred_part.timestamp, 1);
        if (enc_krb_cred_part.timestamp == NULL) {
            ret = ENOMEM;
@@ -418,7 +418,7 @@ krb5_get_forwarded_creds (krb5_context          context,
         * used. Heimdal 0.7.2 and newer have code to try both in the
         * receiving end.
         */
-       
+
        ret = krb5_crypto_init(context, auth_context->keyblock, 0, &crypto);
        if (ret) {
            free(buf);
index f20dcfe6b2465056f07df0471bd231057c88ad59..57321c2005485220f3fb3372a65fd0a9434b6901 100644 (file)
@@ -74,7 +74,7 @@ make_pa_enc_timestamp(krb5_context context, PA_DATA *pa,
     krb5_crypto_destroy(context, crypto);
     if (ret)
        return ret;
-               
+
     ASN1_MALLOC_ENCODE(EncryptedData, buf, buf_size, &encdata, &len, ret);
     free_EncryptedData(&encdata);
     if (ret)
@@ -298,7 +298,7 @@ init_as_req (krb5_context context,
        add_padata(context, a->padata, creds->client,
                   key_proc, keyseed, a->req_body.etype.val,
                   a->req_body.etype.len, NULL);
-       
+
        /* make a v4 salted pa-data */
        salt.salttype = KRB5_PW_SALT;
        krb5_data_zero(&salt.saltvalue);
@@ -481,12 +481,12 @@ krb5_get_in_cred(krb5_context context,
     if(pa) {
        salt.salttype = pa->padata_type;
        salt.saltvalue = pa->padata_value;
-       
+
        ret = (*key_proc)(context, etype, salt, keyseed, &key);
     } else {
        /* make a v5 salted pa-data */
        ret = krb5_get_pw_salt (context, creds->client, &salt);
-       
+
        if (ret)
            goto out;
        ret = (*key_proc)(context, etype, salt, keyseed, &key);
@@ -494,7 +494,7 @@ krb5_get_in_cred(krb5_context context,
     }
     if (ret)
        goto out;
-       
+
     {
        unsigned flags = EXTRACT_TICKET_TIMESYNC;
        if (opts.request_anonymous)
index 0bf8740ffcb4307c068721ddd34c6871a0fce31f..25bef0f34045d96c9878d0d2385e462d1b221a09 100644 (file)
@@ -61,14 +61,14 @@ krb5_get_init_creds_opt_alloc(krb5_context context,
     *opt = NULL;
     o = calloc(1, sizeof(*o));
     if (o == NULL) {
-       krb5_set_error_message(context, ENOMEM, 
+       krb5_set_error_message(context, ENOMEM,
                               N_("malloc: out of memory", ""));
        return ENOMEM;
     }
 
     o->opt_private = calloc(1, sizeof(*o->opt_private));
     if (o->opt_private == NULL) {
-       krb5_set_error_message(context, ENOMEM, 
+       krb5_set_error_message(context, ENOMEM,
                               N_("malloc: out of memory", ""));
        free(o);
        return ENOMEM;
index bbcb8de53cb0602fb489e22273204e062599de58..152a039738aadb20a9dc30851a59222ec0dba450 100644 (file)
@@ -71,7 +71,7 @@ typedef struct krb5_get_init_creds_ctx {
     KRB_ERROR error;
     AS_REP as_rep;
     EncKDCRepPart enc_part;
-    
+
     krb5_prompter_fct prompter;
     void *prompter_data;
 
@@ -313,14 +313,14 @@ process_last_request(krb5_context context,
        if (lr->val[i].lr_value <= t) {
            switch (abs(lr->val[i].lr_type)) {
            case LR_PW_EXPTIME :
-               report_expiration(context, ctx->prompter, 
+               report_expiration(context, ctx->prompter,
                                  ctx->prompter_data,
                                  "Your password will expire at ",
                                  lr->val[i].lr_value);
                reported = TRUE;
                break;
            case LR_ACCT_EXPTIME :
-               report_expiration(context, ctx->prompter, 
+               report_expiration(context, ctx->prompter,
                                  ctx->prompter_data,
                                  "Your account will expire at ",
                                  lr->val[i].lr_value);
@@ -333,7 +333,7 @@ process_last_request(krb5_context context,
     if (!reported
        && ctx->enc_part.key_expiration
        && *ctx->enc_part.key_expiration <= t) {
-        report_expiration(context, ctx->prompter, 
+        report_expiration(context, ctx->prompter,
                          ctx->prompter_data,
                          "Your password/account will expire at ",
                          *ctx->enc_part.key_expiration);
@@ -367,7 +367,7 @@ get_init_creds_common(krb5_context context,
 
     if (options->opt_private) {
        if (options->opt_private->password) {
-           ret = krb5_init_creds_set_password(context, ctx, 
+           ret = krb5_init_creds_set_password(context, ctx,
                                               options->opt_private->password);
            if (ret)
                goto out;
@@ -384,7 +384,7 @@ get_init_creds_common(krb5_context context,
        ctx->keyproc = default_s2k_func;
 
     /* Enterprise name implicitly turns on canonicalize */
-    if ((ctx->ic_flags & KRB5_INIT_CREDS_CANONICALIZE) || 
+    if ((ctx->ic_flags & KRB5_INIT_CREDS_CANONICALIZE) ||
        krb5_principal_get_type(context, client) == KRB5_NT_ENTERPRISE_PRINCIPAL)
        ctx->flags.canonicalize = 1;
 
@@ -1179,14 +1179,14 @@ process_pa_data_to_md(krb5_context context,
        _krb5_debug(context, 5, "krb5_get_init_creds: "
                    "prepareing PKINIT padata (%s)",
                    (ctx->used_pa_types & USED_PKINIT_W2K) ? "win2k" : "ietf");
-       
+
        if (ctx->used_pa_types & USED_PKINIT_W2K) {
            krb5_set_error_message(context, KRB5_GET_IN_TKT_LOOP,
                                   "Already tried pkinit, looping");
            return KRB5_GET_IN_TKT_LOOP;
        }
 
-       ret = pa_data_to_md_pkinit(context, a, creds->client, 
+       ret = pa_data_to_md_pkinit(context, a, creds->client,
                                   (ctx->used_pa_types & USED_PKINIT),
                                   ctx, *out_md);
        if (ret)
@@ -1526,14 +1526,14 @@ krb5_init_creds_set_keytab(krb5_context context,
     krb5_error_code ret;
     size_t netypes = 0;
     int kvno = 0;
-    
+
     a = malloc(sizeof(*a));
     if (a == NULL) {
        krb5_set_error_message(context, ENOMEM,
                               N_("malloc: out of memory", ""));
        return ENOMEM;
     }
-       
+
     a->principal = ctx->cred.client;
     a->keytab    = keytab;
 
@@ -1568,7 +1568,7 @@ krb5_init_creds_set_keytab(krb5_context context,
            kvno = entry.vno;
        } else if (entry.vno != kvno)
            goto next;
-               
+
        /* check if enctype is supported */
        if (krb5_enctype_valid(context, entry.keyblock.keytype) != 0)
            goto next;
@@ -1619,7 +1619,7 @@ krb5_init_creds_set_keyblock(krb5_context context,
 
 /**
  * The core loop if krb5_get_init_creds() function family. Create the
- * packets and have the caller send them off to the KDC. 
+ * packets and have the caller send them off to the KDC.
  *
  * If the caller want all work been done for them, use
  * krb5_init_creds_get() instead.
@@ -1768,13 +1768,13 @@ krb5_init_creds_step(krb5_context context,
                                              "options send by KDC", ""));
                }
            } else if (ret == KRB5KRB_AP_ERR_SKEW && context->kdc_sec_offset == 0) {
-               /* 
+               /*
                 * Try adapt to timeskrew when we are using pre-auth, and
                 * if there was a time skew, try again.
                 */
                krb5_set_real_time(context, ctx->error.stime, -1);
                if (context->kdc_sec_offset)
-                   ret = 0; 
+                   ret = 0;
 
                _krb5_debug(context, 10, "init_creds: err skew updateing kdc offset to %d",
                            context->kdc_sec_offset);
@@ -1793,7 +1793,7 @@ krb5_init_creds_step(krb5_context context,
                            "krb5_get_init_creds: got referal to realm %s",
                            *ctx->error.crealm);
 
-               ret = krb5_principal_set_realm(context, 
+               ret = krb5_principal_set_realm(context,
                                               ctx->cred.client,
                                               *ctx->error.crealm);
 
@@ -1934,7 +1934,7 @@ krb5_init_creds_get(krb5_context context, krb5_init_creds_context ctx)
        if ((flags & 1) == 0)
            break;
 
-       ret = krb5_sendto_context (context, stctx, &out, 
+       ret = krb5_sendto_context (context, stctx, &out,
                                   ctx->cred.client->realm, &in);
        if (ret)
            goto out;
@@ -2013,7 +2013,7 @@ krb5_get_init_creds_password(krb5_context context,
     }
 
     ret = krb5_init_creds_get(context, ctx);
-    
+
     if (ret == 0)
        process_last_request(context, options, ctx);
 
index 7c944dbb118275ccac2f84a02e2c14b8c18ebcfc..5a28b5138b5ff1174644645dd7d8674289280daf 100644 (file)
@@ -157,7 +157,7 @@ kcm_alloc(krb5_context context, const char *name, krb5_ccache *id)
        }
     } else
        k->name = NULL;
-    
+
     (*id)->data.data = k;
     (*id)->data.length = sizeof(*k);
 
@@ -554,7 +554,7 @@ kcm_get_first (krb5_context context,
     c = calloc(1, sizeof(*c));
     if (c == NULL) {
        ret = ENOMEM;
-       krb5_set_error_message(context, ret, 
+       krb5_set_error_message(context, ret,
                               N_("malloc: out of memory", ""));
        return ret;
     }
@@ -577,7 +577,7 @@ kcm_get_first (krb5_context context,
        if (ptr == NULL) {
            free(c->uuids);
            free(c);
-           krb5_set_error_message(context, ENOMEM, 
+           krb5_set_error_message(context, ENOMEM,
                                   N_("malloc: out of memory", ""));
            return ENOMEM;
        }
@@ -637,7 +637,7 @@ kcm_get_next (krb5_context context,
        return ret;
     }
 
-    sret = krb5_storage_write(request, 
+    sret = krb5_storage_write(request,
                              &c->uuids[c->offset],
                              sizeof(c->uuids[c->offset]));
     c->offset++;
@@ -789,7 +789,7 @@ kcm_get_cache_first(krb5_context context, krb5_cc_cursor *cursor)
     c = calloc(1, sizeof(*c));
     if (c == NULL) {
        ret = ENOMEM;
-       krb5_set_error_message(context, ret, 
+       krb5_set_error_message(context, ret,
                               N_("malloc: out of memory", ""));
        goto out;
     }
@@ -820,7 +820,7 @@ kcm_get_cache_first(krb5_context context, krb5_cc_cursor *cursor)
        ptr = realloc(c->uuids, sizeof(c->uuids[0]) * (c->length + 1));
        if (ptr == NULL) {
            ret = ENOMEM;
-           krb5_set_error_message(context, ret, 
+           krb5_set_error_message(context, ret,
                                   N_("malloc: out of memory", ""));
            goto out;
        }
@@ -837,7 +837,7 @@ kcm_get_cache_first(krb5_context context, krb5_cc_cursor *cursor)
     if (ret && c) {
         free(c->uuids);
         free(c);
-    } else 
+    } else
        *cursor = c;
 
     return ret;
@@ -869,7 +869,7 @@ kcm_get_cache_next(krb5_context context, krb5_cc_cursor cursor, const krb5_cc_op
     if (ret)
        return ret;
 
-    sret = krb5_storage_write(request, 
+    sret = krb5_storage_write(request,
                              &c->uuids[c->offset],
                              sizeof(c->uuids[c->offset]));
     c->offset++;
@@ -956,14 +956,14 @@ kcm_move(krb5_context context, krb5_ccache from, krb5_ccache to)
 }
 
 static krb5_error_code
-kcm_get_default_name(krb5_context context, const krb5_cc_ops *ops, 
+kcm_get_default_name(krb5_context context, const krb5_cc_ops *ops,
                     const char *defstr, char **str)
 {
     krb5_error_code ret;
     krb5_storage *request, *response;
     krb5_data response_data;
     char *name;
-    
+
     *str = NULL;
 
     ret = krb5_kcm_storage_request(context, KCM_OP_GET_DEFAULT_CACHE, &request);
@@ -1039,7 +1039,7 @@ kcm_set_kdc_offset(krb5_context context, krb5_ccache id, krb5_deltat kdc_offset)
     krb5_kcmcache *k = KCMCACHE(id);
     krb5_error_code ret;
     krb5_storage *request;
-    
+
     ret = krb5_kcm_storage_request(context, KCM_OP_SET_KDC_OFFSET, &request);
     if (ret)
        return ret;
@@ -1069,7 +1069,7 @@ kcm_get_kdc_offset(krb5_context context, krb5_ccache id, krb5_deltat *kdc_offset
     krb5_storage *request, *response;
     krb5_data response_data;
     int32_t offset;
-    
+
     ret = krb5_kcm_storage_request(context, KCM_OP_GET_KDC_OFFSET, &request);
     if (ret)
        return ret;
index f34a5c4f90cd2a48e8c7ac6429668d19869d6f28..9ba9c4b290daa54e230428ce98c4f464c399b594 100644 (file)
@@ -131,7 +131,7 @@ krb5_copy_keyblock (krb5_context context,
 {
     krb5_error_code ret;
     krb5_keyblock *k;
-    
+
     *to = NULL;
 
     k = calloc (1, sizeof(*k));
index f70fb396781bf80d333ccaf5f1e5b1d89d4f0db0..8ca515f2133d18400b3691c64767b5c451c694ae 100644 (file)
@@ -50,7 +50,7 @@
  *
  * A keytab name is on the form type:residual. The residual part is
  * specific to each keytab-type.
- * 
+ *
  * When a keytab-name is resolved, the type is matched with an internal
  * list of keytab types. If there is no matching keytab type,
  * the default keytab is used. The current default type is FILE.
@@ -60,7 +60,7 @@
  * [defaults]default_keytab_name.
  *
  * The keytab types that are implemented in Heimdal are:
- * - file 
+ * - file
  *   store the keytab in a file, the type's name is FILE .  The
  *   residual part is a filename. For compatibility with other
  *   Kerberos implemtation WRFILE and JAVA14 is also accepted.  WRFILE
@@ -437,7 +437,7 @@ krb5_kt_get_full_name(krb5_context context,
     char type[KRB5_KT_PREFIX_MAX_LEN];
     char name[MAXPATHLEN];
     krb5_error_code ret;
-       
+
     *str = NULL;
 
     ret = krb5_kt_get_type(context, keytab, type, sizeof(type));
@@ -566,16 +566,16 @@ _krb5_kt_principal_not_found(krb5_context context,
 {
     char princ[256], kvno_str[25], *kt_name;
     char *enctype_str = NULL;
-    
+
     krb5_unparse_name_fixed (context, principal, princ, sizeof(princ));
     krb5_kt_get_full_name (context, id, &kt_name);
     krb5_enctype_to_string(context, enctype, &enctype_str);
-    
+
     if (kvno)
        snprintf(kvno_str, sizeof(kvno_str), "(kvno %d)", kvno);
     else
        kvno_str[0] = '\0';
-    
+
     krb5_set_error_message (context, ret,
                            N_("Failed to find %s%s in keytab %s (%s)",
                               "principal, kvno, keytab file, enctype"),
index 309b9b9515009c7061c1f19bbdb1bb5979652967..ccaf62fcb4c2ab62733c701d48db8ff5c69964a5 100644 (file)
@@ -536,7 +536,7 @@ fkt_setup_keytab(krb5_context context,
        id->version = KRB5_KT_VNO;
     return krb5_store_int8 (sp, id->version);
 }
-               
+
 static krb5_error_code KRB5_CALLCONV
 fkt_add_entry(krb5_context context,
              krb5_keytab id,
index 28bbaeee8c364418c53bd5abdcf6378a4eff49b6..ea74c32780f80fd982859d78b2875d0bf1dd1975 100644 (file)
@@ -348,7 +348,7 @@ akf_add_entry(krb5_context context,
                                   strerror(ret));
            return ret;
        }
-       
+
        ret = krb5_ret_int32(sp, &len);
        if(ret) {
            krb5_storage_free(sp);
@@ -387,7 +387,7 @@ akf_add_entry(krb5_context context,
     }
 
     len++;
-       
+
     if(krb5_storage_seek(sp, 0, SEEK_SET) < 0) {
        ret = errno;
        krb5_set_error_message (context, ret,
@@ -395,7 +395,7 @@ akf_add_entry(krb5_context context,
                                strerror(ret));
        goto out;
     }
-       
+
     ret = krb5_store_int32(sp, len);
     if(ret) {
        ret = errno;
@@ -410,7 +410,7 @@ akf_add_entry(krb5_context context,
                                N_("seek to end: %s", ""), strerror(ret));
        goto out;
     }
-       
+
     ret = krb5_store_int32(sp, entry->vno);
     if(ret) {
        krb5_set_error_message(context, ret,
index 4276eeafc1f4d08dc441e153e9c22f14e2286a8e..ba456024ba7375775cbe5d27db7ca77b5c1de2ec 100644 (file)
@@ -163,7 +163,7 @@ manual page.
 .It ...
 .It Li }
 .El
-This is deprecated, see the 
+This is deprecated, see the
 .Li capaths
 section below.
 .It Li default_cc_type = Va cctype
@@ -250,7 +250,7 @@ Setting this flag to
 make it store the MIT way, this is default for Heimdal 0.7.
 .It Li check-rd-req-server
 If set to "ignore", the framework will ignore any the server input to
-.Xr krb5_rd_req 3, 
+.Xr krb5_rd_req 3,
 this is very useful when the GSS-API server input the
 wrong server name into the gss_accept_sec_context call.
 .El
@@ -338,7 +338,7 @@ obtain credentials for a service in the
 .Va server-realm .
 Secondly, it tells the KDC (and other servers) which realms are
 allowed in a multi-hop traversal from
-.Va client-realm 
+.Va client-realm
 to
 .Va server-realm .
 Except for the client case, the order of the realms are not important.
index fb8f9c4aab17e528b90706f11138d5e17db9b142..77be59adbe762c005682c4b297c8287c2ae54e9f 100644 (file)
@@ -185,7 +185,7 @@ decrypts
 .Fa input
 and store the data in
 .Fa output.
-If 
+If
 .Fa ivec
 is
 .Dv NULL
@@ -257,7 +257,7 @@ If some either of
 .Fa data
 or
 .Fa checksum
-is not needed for the application, 
+is not needed for the application,
 .Dv NULL
 can be passed in.
 .Pp
index 8c5b6320a32824f961f80943bfe49f2fa92cc972..4d4dae3086c831088ad43f0a8170ede4594011d0 100644 (file)
@@ -86,7 +86,7 @@ where
 and
 .Fa num_realms
 is the realms between them.
-If the function returns an error value, 
+If the function returns an error value,
 .Fa bad_realm
 will be set to the realm in the list causing the error.
 .Fn krb5_check_transited
index b1b0de4a5e3a4ce80623f0b655764e04206163fe..06d806e1441e0251c11f7d092392172b19ca3eb6 100644 (file)
@@ -217,7 +217,7 @@ and keyblock
 Note that keyusage is not always used in checksums.
 .Pp
 .Nm krb5_checksum_disable
-globally disables the checksum type. 
+globally disables the checksum type.
 .\" .Sh EXAMPLE
 .\" .Sh BUGS
 .Sh SEE ALSO
index 810977366376ef1dd5d22e4eb96ebb8eed97dd47..b22550e6c9565ffc01e8c4c9ccf2b1a6b04e668d 100644 (file)
@@ -104,7 +104,7 @@ should be freed by the called with
 .Fn krb5_free_creds_contents .
 .Pp
 .Fn krb5_free_creds
-frees the content of the 
+frees the content of the
 .Fa cred
 structure and the structure itself.
 .Pp
index f2a22aff6810ef3b1486e7bf5927999a17314463..2b1f58708c81d491f59fa0cff01305f657810485 100644 (file)
@@ -199,7 +199,7 @@ should be the appropriate key-usage.
 .Fa ivec
 is a pointer to a initial IV, it is modified to the end IV at the end of
 the round.
-Ivec should be the size of 
+Ivec should be the size of
 If
 .Dv NULL
 is passed in, the default IV is used.
@@ -229,7 +229,7 @@ and
 works similarly.
 .Pp
 .Fn krb5_decrypt_ticket
-decrypts the encrypted part of 
+decrypts the encrypted part of
 .Fa ticket
 with
 .Fa key .
index 62ef4dfeb14aee2bc14cb26a8080aedab2fc3517..764efb47e441720ff749420cccb313207c7f6ff1 100644 (file)
@@ -222,7 +222,7 @@ Getting initial credential ticket for a principal.
 That may include changing an expired password, and doing preauthentication.
 This interface that replaces the deprecated
 .Fa krb5_in_tkt
-and 
+and
 .Fa krb5_in_cred
 functions.
 .Pp
index 95f46085affb84fb60d475e727d242fc8a8ec553..3a6199b9547611834686b3b4c40146b5ebb1ee90 100644 (file)
@@ -156,7 +156,7 @@ Kerberos 5 Library (libkrb5, -lkrb5)
 .Fa "const char *filelist"
 .Fa "char ***pfilenames"
 .Fc
-.Ft krb5_error_code 
+.Ft krb5_error_code
 .Fo krb5_get_default_config_files
 .Fa "char ***pfilenames"
 .Fc
@@ -211,7 +211,7 @@ libs to
 This is done by
 .Fn krb5_init_context .
 .Pp
-.Fn krb5_add_et_list 
+.Fn krb5_add_et_list
 adds a
 .Xr com_err 3
 error-code handler
@@ -265,7 +265,7 @@ set the list of configuration files to use and re-initialize the
 configuration from the files.
 .Pp
 .Fn krb5_prepend_config_files
-parse the 
+parse the
 .Fa filelist
 and prepend the result to the already existing list
 .Fa pq
@@ -275,7 +275,7 @@ and should be freed with
 .Fn krb5_free_config_files .
 .Pp
 .Fn krb5_prepend_config_files_default
-parse the 
+parse the
 .Fa filelist
 and append that to the default
 list of configuration files.
index 124645f74b5be063ed8dff9be8ecced48fa8f0fc..41701b02992a867cffb1dfa1ec660078400bcc30 100644 (file)
@@ -123,7 +123,7 @@ or
 .Dv NULL
 passed in, in that case, it will be allocated and freed internally.
 .Pp
-The input data 
+The input data
 .Fa in_data
 will have a checksum calculated over it and checksum will be
 transported in the message to the server.
index 3c7da9998f26f1e328f45a91b6d0b691581dadaa..2998130a80e3274e2e015fd53790423bcb5688a0 100644 (file)
@@ -173,7 +173,7 @@ to the string
 .Fa name
 should be freed with
 .Xr free 3 .
-To the 
+To the
 .Fa flags
 argument the following flags can be passed in
 .Bl -tag -width Ds
index 7d111578481b10a6cc50a05fc82748b6a2684542..3242cdb9995601194439147f95172aa1d7928040 100644 (file)
@@ -123,7 +123,7 @@ srv_find_realm(krb5_context context, krb5_krbhst_info ***res, int *count,
            (*res)[num_srv++] = hi;
 
            hi->proto = proto_num;
-       
+
            hi->def_port = def_port;
            if (port != 0)
                hi->port = port;
@@ -134,7 +134,7 @@ srv_find_realm(krb5_context context, krb5_krbhst_info ***res, int *count,
        }
 
     *count = num_srv;
-       
+
     rk_dns_free_data(r);
     return 0;
 }
@@ -508,7 +508,7 @@ fallback_get_hosts(krb5_context context, struct krb5_krbhst_data *kd,
        ret = asprintf(&host, "%s.%s.", serv_string, kd->realm);
     else
        ret = asprintf(&host, "%s-%d.%s.",
-                      serv_string, kd->fallback_count, kd->realm);     
+                      serv_string, kd->fallback_count, kd->realm);
 
     if (ret < 0 || host == NULL)
        return ENOMEM;
@@ -605,7 +605,7 @@ plugin_get_hosts(krb5_context context,
        service = _krb5_plugin_get_symbol(e);
        if (service->minor_version != 0)
            continue;
-       
+
        (*service->init)(context, &ctx);
        ret = (*service->lookup)(ctx, type, kd->realm, 0, 0, add_locate, kd);
        (*service->fini)(ctx);
index fa88773808699c960657501dc977897ce81837e8..2fe4e490aa41cb55f4e64891d8e560af6175ba0f 100644 (file)
@@ -183,7 +183,7 @@ match_local_principals(krb5_context context,
     ret = krb5_get_default_realms (context, &realms);
     if (ret)
        return FALSE;
-       
+
     for (r = realms; *r != NULL; ++r) {
        if(strcmp(krb5_principal_get_realm(context, principal),
                  *r) != 0)
@@ -227,7 +227,7 @@ match_local_principals(krb5_context context,
  * @param context Kerberos 5 context.
  * @param principal principal to check if allowed to login
  * @param luser local user id
- * 
+ *
  * @return returns TRUE if access should be granted, FALSE otherwise.
  *
  * @ingroup krb5_support
index ca0756fdb9a3df65f9461a1837a93c52c515d882..4b289afd807df7597a4cb8d1632ef178e1c25a86 100644 (file)
@@ -501,7 +501,7 @@ _krb5_debug(krb5_context context,
 
     if (context == NULL || context->debug_dest == NULL)
        return;
-       
+
     va_start(ap, fmt);
     krb5_vlog(context, context->debug_dest, level, fmt, ap);
     va_end(ap);
index 19e6b2345ee73770c12a18964b8e25a6c280e7e6..e4b90c17e7b2cdc920604ad7166784ed85e8a8f7 100644 (file)
@@ -220,7 +220,7 @@ mcc_destroy(krb5_context context,
        l = m->creds;
        while (l != NULL) {
            struct link *old;
-       
+
            krb5_free_cred_contents (context, &l->cred);
            old = l;
            l = l->next;
@@ -347,7 +347,7 @@ mcc_set_flags(krb5_context context,
 {
     return 0; /* XXX */
 }
-               
+
 struct mcache_iter {
     krb5_mcache *cache;
 };
index a0615bb3e28d0eb52c4776e8a5ac9d8fa27e7250..ac6720c4e992155025ced914d8c00f069e5f1cca 100644 (file)
@@ -116,7 +116,7 @@ _krb5_einval(krb5_context context, const char *func, unsigned long argn)
 #ifndef HEIMDAL_SMALLER
     krb5_set_error_message(context, EINVAL,
                           N_("programmer error: invalid argument to %s argument %lu",
-                             "function:line"), 
+                             "function:line"),
                           func, argn);
     if (_krb5_have_debug(context, 10)) {
        _krb5_debug(context, 10, "invalid argument to function %s argument %lu",
index a14d60e93e591eff8db3935dc487d51a566bc754..803a5bf289484629af8fe1c405f2f899ef44edb3 100644 (file)
@@ -224,7 +224,7 @@ krb5_c_decrypt(krb5_context context,
        krb5_crypto_destroy(context, crypto);
        return ret;
        }
-       
+
        if (blocksize > ivec->length) {
            krb5_crypto_destroy(context, crypto);
            return KRB5_BAD_MSIZE;
index f94a1ea12524ceffe9258b695169a2745a1bdd17..2e6092c5ca80bb1e9c99f44fe7f53585421a4a8e 100644 (file)
@@ -64,7 +64,7 @@ rr13(unsigned char *buf, size_t len)
            /* byte offset and shift count */
            b1 = bb / 8;
            s1 = bb % 8;
-       
+
            if(bb + 8 > bytes * 8)
                /* watch for wraparound */
                s2 = (len + 8 - s1) % 8;
index 52d6eb4575e81cf4c0bd3680796468792dc4cf27..289b96541feb3cdbf2f055c5778420969ac3de7b 100644 (file)
@@ -74,7 +74,7 @@ krb5_net_write_block(krb5_context context,
          if (rk_SOCK_ERRNO == EINTR)
              continue;
          return -1;
-      } 
+      }
 
 #ifdef HAVE_WINSOCK
       if (ret == 0) {
index ea09d1f19ccbe0ed0f309705b0097afdf55d8eec..f4caaddc264b9d147268a6c5b8a1944b05789f64 100644 (file)
@@ -106,7 +106,7 @@ HMAC_MD5_any_checksum(krb5_context context,
     ret = _krb5_HMAC_MD5_checksum(context, &local_key, data, len, usage, result);
     if (ret)
        krb5_data_free(&result->checksum);
-    
+
     krb5_free_keyblock(context, local_key.key);
     return ret;
 }
index 0f3574b8836d48e67f36e7d86543806d89d66866..1103a17807be9e1240339580775c203073669244 100644 (file)
@@ -300,7 +300,7 @@ cert2epi(hx509_context context, void *ctx, hx509_cert c)
        IssuerAndSerialNumber iasn;
        hx509_name issuer;
        size_t size = 0;
-       
+
        memset(&iasn, 0, sizeof(iasn));
 
        ret = hx509_cert_get_issuer(c, &issuer);
@@ -315,7 +315,7 @@ cert2epi(hx509_context context, void *ctx, hx509_cert c)
            free_ExternalPrincipalIdentifier(&id);
            return ret;
        }
-       
+
        ret = hx509_cert_get_serialnumber(c, &iasn.serialNumber);
        if (ret) {
            free_IssuerAndSerialNumber(&iasn);
@@ -434,7 +434,7 @@ build_auth_pack(krb5_context context,
        ret = _krb5_parse_moduli(context, moduli_file, &ctx->m);
        if (ret)
            return ret;
-       
+
        ctx->u.dh = DH_new();
        if (ctx->u.dh == NULL) {
            krb5_set_error_message(context, ENOMEM,
@@ -484,9 +484,9 @@ build_auth_pack(krb5_context context,
                               &a->clientPublicValue->algorithm.algorithm);
            if (ret)
                return ret;
-           
+
            memset(&dp, 0, sizeof(dp));
-           
+
            ret = BN_to_integer(context, dh->p, &dp.p);
            if (ret) {
                free_DomainParameters(&dp);
@@ -504,14 +504,14 @@ build_auth_pack(krb5_context context,
            }
            dp.j = NULL;
            dp.validationParms = NULL;
-           
+
            a->clientPublicValue->algorithm.parameters =
                malloc(sizeof(*a->clientPublicValue->algorithm.parameters));
            if (a->clientPublicValue->algorithm.parameters == NULL) {
                free_DomainParameters(&dp);
                return ret;
            }
-           
+
            ASN1_MALLOC_ENCODE(DomainParameters,
                               a->clientPublicValue->algorithm.parameters->data,
                               a->clientPublicValue->algorithm.parameters->length,
@@ -521,11 +521,11 @@ build_auth_pack(krb5_context context,
                return ret;
            if (size != a->clientPublicValue->algorithm.parameters->length)
                krb5_abortx(context, "Internal ASN1 encoder error");
-           
+
            ret = BN_to_integer(context, dh->pub_key, &dh_pub_key);
            if (ret)
                return ret;
-           
+
            ASN1_MALLOC_ENCODE(DHPublicKey, dhbuf.data, dhbuf.length,
                               &dh_pub_key, &size, ret);
            der_free_heim_integer(&dh_pub_key);
@@ -558,7 +558,7 @@ build_auth_pack(krb5_context context,
                return ret;
            if ((int)size != xlen)
                krb5_abortx(context, "asn1 internal error");
-           
+
            a->clientPublicValue->algorithm.parameters->data = p;
            a->clientPublicValue->algorithm.parameters->length = size;
 
@@ -602,7 +602,7 @@ build_auth_pack(krb5_context context,
        a->clientPublicValue->subjectPublicKey.length = dhbuf.length * 8;
        a->clientPublicValue->subjectPublicKey.data = dhbuf.data;
     }
-    
+
     {
        a->supportedCMSTypes = calloc(1, sizeof(*a->supportedCMSTypes));
        if (a->supportedCMSTypes == NULL)
@@ -700,7 +700,7 @@ pk_mk_padata(krb5_context context,
        oid = &asn1_oid_id_pkcs7_data;
     } else if (ctx->type == PKINIT_27) {
        AuthPack ap;
-       
+
        memset(&ap, 0, sizeof(ap));
 
        ret = build_auth_pack(context, nonce, ctx, req_body, &ap);
@@ -757,7 +757,7 @@ pk_mk_padata(krb5_context context,
        pa_type = KRB5_PADATA_PK_AS_REQ;
 
        memset(&req, 0, sizeof(req));
-       req.signedAuthPack = buf;       
+       req.signedAuthPack = buf;
 
        if (ctx->trustedCertifiers) {
 
@@ -928,7 +928,7 @@ pk_verify_sign(krb5_context context,
        ret = ENOMEM;
        goto out;
     }
-       
+
     ret = hx509_get_one_cert(context->hx509ctx, signer_certs, &(*signer)->cert);
     if (ret) {
        pk_copy_error(context, context->hx509ctx, ret,
@@ -1205,9 +1205,9 @@ pk_rd_pa_reply_enckey(krb5_context context,
            size_t ph = 1 + der_length_len(content.length);
            unsigned char *ptr = malloc(content.length + ph);
            size_t l;
-           
+
            memcpy(ptr + ph, content.data, content.length);
-           
+
            ret = der_put_length_and_tag (ptr + ph - 1, ph, content.length,
                                          ASN1_C_UNIV, CONS, UT_Sequence, &l);
            if (ret)
@@ -1426,7 +1426,7 @@ pk_rd_pa_reply_dh(krb5_context context,
            krb5_set_error_message(context, ret, N_("malloc: out of memory", ""));
            goto out;
        }
-       
+
        dh_gen_keylen = DH_compute_key(dh_gen_key, kdc_dh_pubkey, ctx->u.dh);
        if (dh_gen_keylen == -1) {
            ret = KRB5KRB_ERR_GENERIC;
@@ -1490,7 +1490,7 @@ pk_rd_pa_reply_dh(krb5_context context,
        ret = EINVAL;
 #endif
     }
-       
+
     if (dh_gen_keylen <= 0) {
        ret = EINVAL;
        krb5_set_error_message(context, ret,
@@ -1557,7 +1557,7 @@ _krb5_pk_rd_pa_reply(krb5_context context,
        PA_PK_AS_REP rep;
        heim_octet_string os, data;
        heim_oid oid;
-       
+
        if (pa->padata_type != KRB5_PADATA_PK_AS_REP) {
            krb5_set_error_message(context, EINVAL,
                                   N_("PKINIT: wrong padata recv", ""));
@@ -1587,7 +1587,7 @@ _krb5_pk_rd_pa_reply(krb5_context context,
            PA_PK_AS_REP_BTMM btmm;
            free_PA_PK_AS_REP(&rep);
            memset(&rep, 0, sizeof(rep));
-           
+
            _krb5_debug(context, 5, "krb5_get_init_creds: using BTMM kinit enc reply key");
 
            ret = decode_PA_PK_AS_REP_BTMM(pa->padata_value.data,
@@ -1663,7 +1663,7 @@ _krb5_pk_rd_pa_reply(krb5_context context,
 #endif
 
        memset(&w2krep, 0, sizeof(w2krep));
-       
+
        ret = decode_PA_PK_AS_REP_Win2k(pa->padata_value.data,
                                        pa->padata_value.length,
                                        &w2krep,
@@ -1676,12 +1676,12 @@ _krb5_pk_rd_pa_reply(krb5_context context,
        }
 
        krb5_clear_error_message(context);
-       
+
        switch (w2krep.element) {
        case choice_PA_PK_AS_REP_Win2k_encKeyPack: {
            heim_octet_string data;
            heim_oid oid;
-       
+
            ret = hx509_cms_unwrap_ContentInfo(&w2krep.u.encKeyPack,
                                               &oid, &data, NULL);
            free_PA_PK_AS_REP_Win2k(&w2krep);
@@ -1746,7 +1746,7 @@ hx_pass_prompter(void *data, const hx509_prompt *prompter)
     default:
        prompt.type   = KRB5_PROMPT_TYPE_PASSWORD;
        break;
-    }  
+    }
 
     ret = (*p->prompter)(p->context, p->prompter_data, NULL, NULL, 1, &prompt);
     if (ret) {
@@ -1782,10 +1782,10 @@ _krb5_pk_set_user_id(krb5_context context,
                      "Allocate query to find signing certificate");
        return ret;
     }
-       
+
     hx509_query_match_option(q, HX509_QUERY_OPTION_PRIVATE_KEY);
     hx509_query_match_option(q, HX509_QUERY_OPTION_KU_DIGITALSIGNATURE);
-       
+
     if (principal && strncmp("LKDC:SHA1.", krb5_principal_get_realm(context, principal), 9) == 0) {
        ctx->id->flags |= PKINIT_BTMM;
     }
@@ -1801,7 +1801,7 @@ _krb5_pk_set_user_id(krb5_context context,
        ret = hx509_cert_get_subject(ctx->id->cert, &name);
        if (ret)
            goto out;
-    
+
        ret = hx509_name_to_string(name, &str);
        hx509_name_free(&name);
        if (ret)
@@ -1859,7 +1859,7 @@ _krb5_pk_load_id(krb5_context context,
        krb5_set_error_message(context, ENOMEM,
                               N_("malloc: out of memory", ""));
        return ENOMEM;
-    }  
+    }
 
     if (user_id) {
        hx509_lock lock;
@@ -1869,15 +1869,15 @@ _krb5_pk_load_id(krb5_context context,
            pk_copy_error(context, context->hx509ctx, ret, "Failed init lock");
            goto out;
        }
-       
+
        if (password && password[0])
            hx509_lock_add_password(lock, password);
-       
+
        if (prompter) {
            p.context = context;
            p.prompter = prompter;
            p.prompter_data = prompter_data;
-           
+
            ret = hx509_lock_set_prompter(lock, hx_pass_prompter, &p);
            if (ret) {
                hx509_lock_free(lock);
@@ -2085,7 +2085,7 @@ _krb5_parse_moduli_line(krb5_context context,
                                  "bits on line %d", ""), file, lineno);
        goto out;
     }
-       
+
     ret = parse_integer(context, &p, file, lineno, "p", &m1->p);
     if (ret)
        goto out;
@@ -2251,7 +2251,7 @@ _krb5_parse_moduli(krb5_context context, const char *file,
            return ENOMEM;
        }
        m = m2;
-       
+
        m[n] = NULL;
 
        ret = _krb5_parse_moduli_line(context, file, lineno, buf,  &element);
@@ -2323,7 +2323,7 @@ _krb5_get_init_creds_opt_free_pkinit(krb5_get_init_creds_opt *opt)
        break;
     case USE_RSA:
        break;
-    case USE_ECDH: 
+    case USE_ECDH:
 #ifdef HAVE_OPENSSL
        if (ctx->u.eckey)
            EC_KEY_free(ctx->u.eckey);
@@ -2459,7 +2459,7 @@ krb5_get_init_creds_opt_set_pkinit(krb5_context context,
            krb5_set_error_message(context, EINVAL,
                                   N_("No anonymous pkinit support in RSA mode", ""));
            return EINVAL;
-       }           
+       }
     }
 
     return 0;
@@ -2486,7 +2486,7 @@ krb5_get_init_creds_opt_set_pkinit_user_certs(krb5_context context,
                               N_("PKINIT: on pkinit context", ""));
        return EINVAL;
     }
-    
+
     _krb5_pk_set_user_id(context, NULL, opt->opt_private->pk_init_ctx, certs);
 
     return 0;
@@ -2519,7 +2519,7 @@ get_ms_san(hx509_context context, hx509_cert cert, char **upn)
                                upn, NULL);
     else
        ret = 1;
-    hx509_free_octet_string_list(&list);          
+    hx509_free_octet_string_list(&list);
 
     return ret;
 }
@@ -2561,7 +2561,7 @@ krb5_pk_enterprise_cert(krb5_context context,
     *principal = NULL;
     if (res)
        *res = NULL;
-    
+
     if (user_id == NULL) {
        krb5_set_error_message(context, ENOENT, "no user id");
        return ENOENT;
@@ -2594,7 +2594,7 @@ krb5_pk_enterprise_cert(krb5_context context,
                      "Failed to find PKINIT certificate");
        return ret;
     }
-    
+
     ret = hx509_get_one_cert(context->hx509ctx, result, &cert);
     hx509_certs_free(&result);
     if (ret) {
@@ -2621,7 +2621,7 @@ krb5_pk_enterprise_cert(krb5_context context,
        ret = hx509_certs_init(context->hx509ctx, "MEMORY:", 0, NULL, res);
        if (ret)
            goto out;
-       
+
        ret = hx509_certs_add(context->hx509ctx, *res, cert);
        if (ret) {
            hx509_certs_free(res);
index 49d05b4fe23e87cdae87305a54385d77d5a5a21d..9303b6c615b7f51715060284f5aa96ce930bf97d 100644 (file)
@@ -63,7 +63,7 @@ static HEIMDAL_MUTEX plugin_mutex = HEIMDAL_MUTEX_INITIALIZER;
 static struct plugin *registered = NULL;
 static int plugins_needs_scan = 1;
 
-static const char *sysplugin_dirs[] =  { 
+static const char *sysplugin_dirs[] =  {
     LIBDIR "/plugin/krb5",
 #ifdef __APPLE__
     "/System/Library/KerberosPlugins/KerberosFrameworkPlugins",
@@ -305,7 +305,7 @@ static krb5_error_code
 add_symbol(krb5_context context, struct krb5_plugin **list, void *symbol)
 {
     struct krb5_plugin *e;
-    
+
     e = calloc(1, sizeof(*e));
     if (e == NULL) {
        krb5_set_error_message(context, ENOMEM, "malloc: out of memory");
@@ -329,7 +329,7 @@ _krb5_plugin_find(krb5_context context,
     *list = NULL;
 
     HEIMDAL_MUTEX_lock(&plugin_mutex);
-    
+
     load_plugins(context);
 
     for (ret = 0, e = registered; e != NULL; e = e->next) {
@@ -379,7 +379,7 @@ _krb5_plugin_free(struct krb5_plugin *list)
 /*
  * module - dict of {
  *      ModuleName = [
- *          plugin = object{ 
+ *          plugin = object{
  *              array = { ptr, ctx }
  *          }
  *      ]
@@ -556,7 +556,7 @@ search_modules(void *ctx, heim_object_t key, heim_object_t value)
            return;
 
        pl = heim_alloc(sizeof(*pl), "struct-plug", plug_free);
-               
+
        cpm = pl->dataptr = dlsym(p->dsohandle, s->name);
        if (cpm) {
            int ret;
@@ -569,10 +569,10 @@ search_modules(void *ctx, heim_object_t key, heim_object_t value)
     } else {
        cpm = pl->dataptr;
     }
-           
+
     if (cpm && cpm->version >= s->min_version)
        heim_array_append_value(s->result, pl);
-    
+
     heim_release(pl);
 }
 
@@ -619,11 +619,11 @@ _krb5_plugin_run_f(krb5_context context,
     s.userctx = userctx;
 
     heim_dict_iterate_f(dict, search_modules, &s);
-    
+
     heim_release(dict);
-    
+
     HEIMDAL_MUTEX_unlock(&plugin_mutex);
-    
+
     s.ret = KRB5_PLUGIN_NO_HANDLE;
 
     heim_array_iterate_f(s.result, eval_results, &s);
index 869889318a4f22dfb283131e41083bf781191341..a10d2d0798035843a4182ff1f6b44981482c206d 100644 (file)
@@ -140,7 +140,7 @@ krb5_principal_get_realm(krb5_context context,
                         krb5_const_principal principal)
 {
     return princ_realm(principal);
-}                      
+}
 
 KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
 krb5_principal_get_comp_string(krb5_context context,
@@ -1028,7 +1028,7 @@ krb5_principal_match(krb5_context context,
  *
  * @ingroup krb5_principal
  */
-                       
+
 KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
 krb5_sname_to_principal (krb5_context context,
                         const char *hostname,
@@ -1039,7 +1039,7 @@ krb5_sname_to_principal (krb5_context context,
     krb5_error_code ret;
     char localhost[MAXHOSTNAMELEN];
     char **realms, *host = NULL;
-       
+
     if(type != KRB5_NT_SRV_HST && type != KRB5_NT_UNKNOWN) {
        krb5_set_error_message(context, KRB5_SNAME_UNSUPP_NAMETYPE,
                               N_("unsupported name type %d", ""),
@@ -1053,7 +1053,7 @@ krb5_sname_to_principal (krb5_context context,
            krb5_set_error_message(context, ret,
                                   N_("Failed to get local hostname", ""));
            return ret;
-       }       
+       }
        localhost[sizeof(localhost) - 1] = '\0';
        hostname = localhost;
     }
index d1d0c0390fa2489a40d251496eca22ee0ed8a160..c08547112b27fe5be9299e7c35652f7400777da1 100644 (file)
@@ -119,7 +119,7 @@ krb5_rd_cred(krb5_context context,
                                             KRB5_KU_KRB_CRED,
                                             &cred.enc_part,
                                             &enc_krb_cred_part_data);
-       
+
            krb5_crypto_destroy(context, crypto);
        }
 
@@ -135,13 +135,13 @@ krb5_rd_cred(krb5_context context,
 
            if (ret)
                goto out;
-       
+
            ret = krb5_decrypt_EncryptedData(context,
                                             crypto,
                                             KRB5_KU_KRB_CRED,
                                             &cred.enc_part,
                                             &enc_krb_cred_part_data);
-       
+
            krb5_crypto_destroy(context, crypto);
        }
        if (ret)
@@ -196,7 +196,7 @@ krb5_rd_cred(krb5_context context,
                                      auth_context->local_port);
            if (ret)
                goto out;
-       
+
            ret = compare_addrs(context, a, enc_krb_cred_part.r_address,
                                N_("receiver address is wrong "
                                   "in received creds", ""));
@@ -300,9 +300,9 @@ krb5_rd_cred(krb5_context context,
            krb5_copy_addresses (context,
                                 kci->caddr,
                                 &creds->addresses);
-       
+
        (*ret_creds)[i] = creds;
-       
+
     }
     (*ret_creds)[i] = NULL;
 
index f8963a53b2572cb926e3a9cef8d779054ce08785..391d81c191b8f986620454d2ad875d0598655f36 100644 (file)
@@ -65,7 +65,7 @@ krb5_rd_rep(krb5_context context,
     if (ret)
        goto out;
     ret = krb5_decrypt_EncryptedData (context,
-                                     crypto,   
+                                     crypto,
                                      KRB5_KU_AP_REQ_ENC_PART,
                                      &ap_rep.enc_part,
                                      &data);
index 6b52cf97ce7b3851a3c9835ff942bf6a16a46b58..6a656a8f734febe4cd3c1efaeb261e3cd99cba31 100644 (file)
@@ -59,7 +59,7 @@ decrypt_tkt_enc_part (krb5_context context,
 
     ret = decode_EncTicketPart(plain.data, plain.length, decr_part, &len);
     if (ret)
-        krb5_set_error_message(context, ret, 
+        krb5_set_error_message(context, ret,
                               N_("Failed to decode encrypted "
                                  "ticket part", ""));
     krb5_data_free (&plain);
@@ -137,7 +137,7 @@ check_transited(krb5_context context, Ticket *ticket, EncTicketPart *enc)
     char **realms;
     unsigned int num_realms, n;
     krb5_error_code ret;
-       
+
     /*
      * Windows 2000 and 2003 uses this inside their TGT so it's normaly
      * not seen by others, however, samba4 joined with a Windows AD as
@@ -252,7 +252,7 @@ krb5_decrypt_ticket(krb5_context context,
            krb5_clear_error_message (context);
            return KRB5KRB_AP_ERR_TKT_EXPIRED;
        }
-       
+
        if(!t.flags.transited_policy_checked) {
            ret = check_transited(context, ticket, &t);
            if(ret) {
@@ -404,7 +404,7 @@ krb5_verify_ap_req2(krb5_context context,
     {
        krb5_principal p1, p2;
        krb5_boolean res;
-       
+
        _krb5_principalname2krb5_principal(context,
                                           &p1,
                                           ac->authenticator->cname,
@@ -510,7 +510,7 @@ krb5_verify_ap_req2(krb5_context context,
        krb5_auth_con_free (context, ac);
     return ret;
 }
-               
+
 /*
  *
  */
@@ -951,7 +951,7 @@ krb5_rd_req_ctx(krb5_context context,
                                  &o->ap_req_options,
                                  &o->ticket,
                                  KRB5_KU_AP_REQ_AUTH);
-       
+
        if (ret)
            goto out;
 
@@ -974,7 +974,7 @@ krb5_rd_req_ctx(krb5_context context,
            goto out;
 
        done = 0;
-       while (!done) { 
+       while (!done) {
            krb5_principal p;
 
            ret = krb5_kt_next_entry(context, id, &entry, &cursor);
@@ -1010,14 +1010,14 @@ krb5_rd_req_ctx(krb5_context context,
             * and update the service principal in the ticket to match
             * whatever is in the keytab.
             */
-           
-           ret = krb5_copy_keyblock(context, 
+
+           ret = krb5_copy_keyblock(context,
                                     &entry.keyblock,
                                     &o->keyblock);
            if (ret) {
                krb5_kt_free_entry (context, &entry);
                goto out;
-           }       
+           }
 
            ret = krb5_copy_principal(context, entry.principal, &p);
            if (ret) {
@@ -1026,7 +1026,7 @@ krb5_rd_req_ctx(krb5_context context,
            }
            krb5_free_principal(context, o->ticket->server);
            o->ticket->server = p;
-           
+
            krb5_kt_free_entry (context, &entry);
 
            done = 1;
@@ -1048,7 +1048,7 @@ krb5_rd_req_ctx(krb5_context context,
            krb5_data_free(&data);
            if (ret)
                goto out;
-       
+
            ret = krb5_pac_verify(context,
                                  pac,
                                  o->ticket->ticket.authtime,
index 375a4aaba6b27ac1130cf5629295de3d7bcd8efb..965dd44437d9456253705ebd172aee70368b46bd 100644 (file)
@@ -282,14 +282,14 @@ krb5_rc_get_name(krb5_context context,
 {
     return id->name;
 }
-               
+
 KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
 krb5_rc_get_type(krb5_context context,
                 krb5_rcache id)
 {
     return "FILE";
 }
-               
+
 KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
 krb5_get_server_rcache(krb5_context context,
                       const krb5_data *piece,
index 9051f7bd14c733156355145285dd849528c1f8e7..5c422c6a449153fb2be62ab4acc7eef3677f408d 100644 (file)
@@ -240,7 +240,7 @@ default_db(krb5_context context, sqlite3 **db)
        krb5_clear_error_message(context);
        return ENOENT;
     }
-       
+
 #ifdef TRACEME
     sqlite3_trace(*db, trace, NULL);
 #endif
@@ -770,7 +770,7 @@ scc_store_cred(krb5_context context,
        bind_principal(context, s->db, s->iprincipal, 1, creds->server);
        sqlite3_bind_int(s->iprincipal, 2, 1);
        sqlite3_bind_int(s->iprincipal, 3, credid);
-       
+
        do {
            ret = sqlite3_step(s->iprincipal);
        } while (ret == SQLITE_ROW);
@@ -788,7 +788,7 @@ scc_store_cred(krb5_context context,
        bind_principal(context, s->db, s->iprincipal, 1, creds->client);
        sqlite3_bind_int(s->iprincipal, 2, 0);
        sqlite3_bind_int(s->iprincipal, 3, credid);
-       
+
        do {
            ret = sqlite3_step(s->iprincipal);
        } while (ret == SQLITE_ROW);
@@ -837,7 +837,7 @@ scc_get_principal(krb5_context context,
                               s->name, s->file);
        return KRB5_CC_END;
     }
-       
+
     if (sqlite3_column_type(s->scache, 0) != SQLITE_TEXT) {
        sqlite3_reset(s->scache);
        krb5_set_error_message(context, KRB5_CC_END,
@@ -1103,7 +1103,7 @@ scc_remove_cred(krb5_context context,
        ret = decode_creds(context, data, len, &creds);
        if (ret)
            break;
-       
+
        ret = krb5_compare_creds(context, which, mcreds, &creds);
        krb5_free_cred_contents(context, &creds);
        if (ret) {
@@ -1144,7 +1144,7 @@ scc_set_flags(krb5_context context,
 {
     return 0; /* XXX */
 }
-               
+
 struct cache_iter {
     char *drop;
     sqlite3 *db;
@@ -1315,7 +1315,7 @@ scc_move(krb5_context context, krb5_ccache from, krb5_ccache to)
 
     if (sto->cid != SCACHE_INVALID_CID) {
        /* drop old cache entry */
-       
+
        sqlite3_bind_int(sfrom->dcache, 1, sto->cid);
        do {
            ret = sqlite3_step(sfrom->dcache);
index b0a4674b658501df101d882c62ac726c325690a9..edf1d33c9d1c17bd405633a426c6c881690f49f2 100644 (file)
@@ -268,7 +268,7 @@ send_via_proxy (krb5_context context,
     int ret;
     krb5_socket_t s = rk_INVALID_SOCKET;
     char portstr[NI_MAXSERV];
-               
+
     if (proxy == NULL)
        return ENOMEM;
     if (strncmp (proxy, "http://", 7) == 0)
@@ -339,7 +339,7 @@ send_via_plugin(krb5_context context,
        service = _krb5_plugin_get_symbol(e);
        if (service->minor_version != 0)
            continue;
-       
+
        (*service->init)(context, &ctx);
        ret = (*service->send_to_kdc)(context, ctx, hi,
                                      timeout, send_data, receive);
@@ -366,7 +366,7 @@ send_via_plugin(krb5_context context,
 KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
 krb5_sendto (krb5_context context,
             const krb5_data *send_data,
-            krb5_krbhst_handle handle, 
+            krb5_krbhst_handle handle,
             krb5_data *receive)
 {
      krb5_error_code ret;
@@ -511,7 +511,7 @@ _krb5_copy_send_to_kdc_func(krb5_context context, krb5_context to)
 {
     if (context->send_to_kdc)
        return krb5_set_send_to_kdc_func(to,
-                                        context->send_to_kdc->func, 
+                                        context->send_to_kdc->func,
                                         context->send_to_kdc->data);
     else
        return krb5_set_send_to_kdc_func(to, NULL, NULL);
index 595540da6b064e5533e70cdef085ce21c7466baf..3d0f9e0b46cfb0d84b1ce2aab68d855a8431b488 100644 (file)
@@ -71,7 +71,7 @@ main(int argc, char **argv)
     krb5_storage *sp;
     krb5_context context;
     krb5_principal principal;
-       
+
 
     krb5_init_context(&context);
 
index ac1fe0ded16dade9854d86bcb13209f81cdcf225..3aeb8d6281443e6253ebd276a6f7752a74f9de43 100644 (file)
@@ -1398,7 +1398,7 @@ krb5_ret_creds(krb5_storage *sp, krb5_creds *creds)
     ret = krb5_ret_data (sp,  &creds->second_ticket);
 cleanup:
     if(ret) {
-#if 0  
+#if 0
        krb5_free_cred_contents(context, creds); /* XXX */
 #endif
     }
@@ -1583,7 +1583,7 @@ krb5_ret_creds_tag(krb5_storage *sp,
 
 cleanup:
     if(ret) {
-#if 0  
+#if 0
        krb5_free_cred_contents(context, creds); /* XXX */
 #endif
     }
index dbeec423463eda6d4909538d5e12aa7447f3ca81..2b72dea3a3fcd7866c16f76e3a73aeb66be65ee1 100644 (file)
@@ -73,7 +73,7 @@ fd_free(krb5_storage * sp)
 }
 
 /**
- * 
+ *
  *
  * @return A krb5_storage on success, or NULL on out of memory error.
  *
index f2b38209c4fe86c1a85936c2825e6b0e37bb723f..9e27c0408643df6fa010f219d30c37e6d3007893 100644 (file)
@@ -70,10 +70,10 @@ test_match_string(krb5_context context)
     RETVAL(context, ret, 0, "liternal fnmatch");
     ret = krb5_acl_match_string(context, "foo/bar", "f", "foo/*");
     RETVAL(context, ret, 0, "foo/*");
-    ret = krb5_acl_match_string(context, "foo/bar.example.org", "f", 
+    ret = krb5_acl_match_string(context, "foo/bar.example.org", "f",
                                "foo/*.example.org");
     RETVAL(context, ret, 0, "foo/*.example.org");
-    ret = krb5_acl_match_string(context, "foo/bar.example.com", "f", 
+    ret = krb5_acl_match_string(context, "foo/bar.example.com", "f",
                                "foo/*.example.org");
     RETVAL(context, ret, EACCES, "foo/*.example.com");
 
index 1a4d4159cff4c792673b81bd68864831a0aa8878..dcdddb81498186cbf05c93c38751523b2b7aa88f 100644 (file)
@@ -188,7 +188,7 @@ main(int argc, char **argv)
 
     if (argc < 3)
        usage(1);
-               
+
     principal = argv[0];
     keytab = argv[1];
     ccache = argv[2];
index 5892230c5df37eae72418083e2f59a49e53c3cca..a800c69a93ed8c77f5fa83403dbb9e8a6687bd2a 100644 (file)
@@ -67,7 +67,7 @@ test_default_name(krb5_context context)
 
     if (strcmp(p1, p2) != 0)
        krb5_errx (context, 1, "krb5_cc_default_name no longer same");
-       
+
     ret = krb5_cc_set_default_name(context, test_cc_name);
     if (p == NULL)
        krb5_errx (context, 1, "krb5_cc_set_default_name 1 failed");
@@ -180,7 +180,7 @@ test_init_vs_destroy(krb5_context context, const char *type)
                 krb5_cc_get_type(context, id),
                 krb5_cc_get_name(context, id)) < 0 || n == NULL)
        errx(1, "malloc");
-       
+
 
     ret = krb5_cc_resolve(context, n, &id2);
     free(n);
index 08062275f34d2fb647d42928f11788decc464e62..a2816332dabb54b78fc66bcfb45d1e13c4a605df 100644 (file)
@@ -61,15 +61,15 @@ check_config_file(krb5_context context, char *filelist, char **res, int def)
     if (def) {
        char **deflist;
        int j;
-       
+
        ret = krb5_get_default_config_files(&deflist);
        if (ret)
            krb5_err(context, 1, ret, "get_default_config_files");
-       
+
        for (j = 0 ; pp[i] && deflist[j]; i++, j++)
            if (strcmp(pp[i], deflist[j]) != 0)
                krb5_errx(context, 1, "'%s' != '%s'", pp[i], deflist[j]);
-       
+
        if (deflist[j] != NULL)
            krb5_errx(context, 1, "pp ended before def list");
        krb5_free_config_files(deflist);
@@ -225,7 +225,7 @@ check_escaped_strings(void)
 
         if (*s || *e)
             errx(1, "Configuation string list for value [%s] has incorrect length.",
-                config_strings_tests[i].name); 
+                config_strings_tests[i].name);
 
         krb5_config_free_strings(ps);
     }
index c68014834dd08652534d767d8f1cca8b0586542a..b103594bada124e7bc11c545fc5f4897f828610e 100644 (file)
@@ -127,7 +127,7 @@ test_cf2(krb5_context context)
                                           &k2);
        if (ret)
            krb5_err(context, 1, ret, "krb5_string_to_key_data_salt");
-           
+
        ret = krb5_crypto_init(context, &k2, 0, &c2);
        if (ret)
            krb5_err(context, 1, ret, "krb5_crypto_init");
index 1c8787d6a513ceeb9e5b8170f2fb98205e5cc3bf..f22a6930fcffb7138b4f52d18569176e419165ed 100644 (file)
@@ -58,7 +58,7 @@ test_get_init_creds(krb5_context context,
     if (ret)
        krb5_err(context, 1, ret, "krb5_get_init_creds_opt_alloc");
 
-    
+
     ret = krb5_get_init_creds_opt_set_process_last_req(context,
                                                       opt,
                                                       lr_proc,
index ca2bc4febfcce39de5d21753a968e2b14d03231e..134b0f17e693c09439b7c4496a0b9e8397b44c74 100644 (file)
@@ -280,9 +280,9 @@ main(int argc, char **argv)
 
        test_empty_keytab(context, "MEMORY:foo");
        test_empty_keytab(context, "FILE:foo");
-       
+
        test_memory_keytab(context, "MEMORY:foo", "MEMORY:foo2");
-       
+
     }
 
     krb5_free_context(context);
index 2b1b887b454fb69d6a934c6d55bcba173e67c1a6..983294ecf90c574421028ae2c2d521fbb628b8c0 100644 (file)
@@ -99,7 +99,7 @@ static const char *user = "w2003final$";
  * This pac from Christan Krause
  */
 
-static const unsigned char saved_pac2[] = 
+static const unsigned char saved_pac2[] =
     "\x05\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xc8\x01\x00\x00"
     "\x58\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x18\x00\x00\x00"
     "\x20\x02\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x70\x00\x00\x00"
@@ -170,10 +170,10 @@ main(int argc, char **argv)
     ret = krb5_init_context(&context);
     if (ret)
        errx(1, "krb5_init_contex");
-    
+
     krb5_enctype_enable(context, ETYPE_DES_CBC_MD5);
 
-    ret = krb5_parse_name_flags(context, user, 
+    ret = krb5_parse_name_flags(context, user,
                                KRB5_PRINCIPAL_PARSE_NO_REALM, &p);
     if (ret)
        krb5_err(context, 1, ret, "krb5_parse_name");
@@ -242,24 +242,24 @@ main(int argc, char **argv)
            krb5_data_free(&data);
        }
        free(list);
-       
+
        ret = _krb5_pac_sign(context, pac2, authtime, p,
                             &member_keyblock, &kdc_keyblock, &data);
        if (ret)
            krb5_err(context, 1, ret, "_krb5_pac_sign 4");
-       
+
        krb5_pac_free(context, pac2);
 
        ret = krb5_pac_parse(context, data.data, data.length, &pac2);
        krb5_data_free(&data);
        if (ret)
            krb5_err(context, 1, ret, "krb5_pac_parse 4");
-       
+
        ret = krb5_pac_verify(context, pac2, authtime, p,
                              &member_keyblock, &kdc_keyblock);
        if (ret)
            krb5_err(context, 1, ret, "krb5_pac_verify 4");
-       
+
        krb5_pac_free(context, pac2);
     }
 
index d53dc51e56d677795e9a5eaaf71556f27b59d4e7..ca78e3c04d3490f04d5e27b7f0dcb25f9f4ea098 100644 (file)
@@ -213,7 +213,7 @@ fooTicket(void)
     ASN1_MALLOC_ENCODE(Ticket, data.data, data.length, &t, &size, ret);
     if (ret)
        errx(1, "ASN1_MALLOC_ENCODE(Ticket)");
-       
+
     rk_dumpdata("foo", data.data, data.length);
     free(data.data);
 }
index d8e10fba88ad4a98d7de26276a8c206525742b52..4235442b999e8f3d0e69ff3b12a45b2a66d79422 100644 (file)
@@ -96,7 +96,7 @@ main(int argc, char **argv)
     if (ret)
        errx(1, "krb5_init_contex");
 
-    ret = krb5_plugin_register(context, PLUGIN_TYPE_DATA, 
+    ret = krb5_plugin_register(context, PLUGIN_TYPE_DATA,
                               KRB5_PLUGIN_LOCATE, &resolve);
     if (ret)
        krb5_err(context, 1, ret, "krb5_plugin_register");
index 54682ed2ff0321877a64c4c20a2b5a24bca2c23a..6b930775c0cca5bfb33b3bbf04d1123ad0ae0979 100644 (file)
@@ -203,14 +203,14 @@ test_truncate(krb5_context context, krb5_storage *sp, int fd)
 
     krb5_store_string(sp, "hej");
     krb5_storage_truncate(sp, 2);
-    
+
     if (fstat(fd, &sb) != 0)
        krb5_err(context, 1, errno, "fstat");
     if (sb.st_size != 2)
        krb5_errx(context, 1, "length not 2");
 
     krb5_storage_truncate(sp, 1024);
-    
+
     if (fstat(fd, &sb) != 0)
        krb5_err(context, 1, errno, "fstat");
     if (sb.st_size != 1024)
index 4d518e436d680fce774cdcd7ae9033171ca81eb5..ecad7798e7f2d834d4c25208f67c3a43a42ac2ec 100644 (file)
@@ -54,7 +54,7 @@ check_linear(krb5_context context,
     krb5_data_zero(&tr);
 
     va_start(va, realm);
-    
+
     while (realm) {
        inrealms = erealloc(inrealms, (num_inrealms + 2) * sizeof(inrealms[0]));
        inrealms[num_inrealms] = rk_UNCONST(realm);
index 7d3ff1e4a1649b7ff2fdd48b2dce9fcaf2f3c9c4..4845a93d944685828811812822e750def4b5936d 100644 (file)
@@ -639,7 +639,7 @@ decrypt_tkt (krb5_context context,
                                   &size);
     krb5_data_free (&data);
     if (ret) {
-        krb5_set_error_message(context, ret, 
+        krb5_set_error_message(context, ret,
                               N_("Failed to decode encpart in ticket", ""));
        return ret;
     }
@@ -828,7 +828,7 @@ _krb5_extract_ticket(krb5_context context,
        creds->addresses.val = NULL;
     }
     creds->flags.b = rep->enc_part.flags;
-       
+
     creds->authdata.len = 0;
     creds->authdata.val = NULL;
 
index 53bf98b2a1a30c59a900b8ac9f6b3ee049929482..f240fe8ad158dca19051218b9d0573b2c375a8d7 100644 (file)
@@ -55,7 +55,7 @@ free_realms(struct tr_realm *r)
        r = r->next;
        free(p->realm);
        free(p);
-    }  
+    }
 }
 
 static int
@@ -71,7 +71,7 @@ make_path(krb5_context context, struct tr_realm *r,
        from = to;
        to = str;
     }
-       
+
     if(strcmp(from + strlen(from) - strlen(to), to) == 0){
        p = from;
        while(1){
index 300cef007ee49f18ab4ff1818fc9e1fa4f04014c..2e77b7e59d9c299b1d7fe6d578b5cef0330ce2f2 100644 (file)
@@ -199,11 +199,11 @@ cleanup:
 
 /**
  * Validate the newly fetch credential, see also krb5_verify_init_creds().
- * 
+ *
  * @param context a Kerberos 5 context
  * @param creds the credentials to verify
  * @param client the client name to match up
- * @param ccache the credential cache to use 
+ * @param ccache the credential cache to use
  * @param service a service name to use, used with
  *        krb5_sname_to_principal() to build a hostname to use to
  *        verify.
@@ -229,7 +229,7 @@ krb5_get_validated_creds(krb5_context context,
        return KRB5_PRINC_NOMATCH;
     }
 
-    ret = krb5_sname_to_principal (context, NULL, service, 
+    ret = krb5_sname_to_principal (context, NULL, service,
                                   KRB5_NT_SRV_HST, &server);
     if(ret)
        return ret;
index 14f010137129dffbd4f8d104de6b1622ff603815..01562ef562a38340aec2a2fac5795680630ddf36 100644 (file)
@@ -195,7 +195,7 @@ krb5_verify_user_opt(krb5_context context,
        if (ret)
            return ret;
        ret = KRB5_CONFIG_NODEFREALM;
-       
+
        for (r = realms; *r != NULL && ret != 0; ++r) {
            ret = krb5_principal_set_realm(context, principal, *r);
            if (ret) {
index f7581d1f90b53a54afd7e89cecc2bcb3fd27e74c..cb3be76fccff5a2118a2be034a17feb112f341b8 100644 (file)
@@ -37,7 +37,7 @@
 static krb5_error_code _warnerr(krb5_context context, int do_errtext,
         krb5_error_code code, int level, const char *fmt, va_list ap)
        __attribute__((__format__(__printf__, 5, 0)));
-       
+
 static krb5_error_code
 _warnerr(krb5_context context, int do_errtext,
         krb5_error_code code, int level, const char *fmt, va_list ap)
@@ -69,7 +69,7 @@ _warnerr(krb5_context context, int do_errtext,
            *arg= "<unknown error>";
        }
     }
-       
+
     if(context && context->warn_dest)
        krb5_log(context, context->warn_dest, level, xfmt, args[0], args[1]);
     else
index c35f9c59545950fce90dc5ce4b42cd7fe73306a3..559f53525035b031fb0e8eaed2723b31d6870fa8 100644 (file)
@@ -4,7 +4,7 @@
 
    NOTE: this was taken from the GNU Readline documentation and ported
    to libedit. A commad to output the history list was added.
-   
+
    */
 
 #include <stdio.h>
@@ -453,7 +453,7 @@ com_pwd (char* ignore)
 
 /* The user wishes to quit using this program.  Just set DONE
    non-zero. */
-int 
+int
 com_quit (char *arg)
 {
    done = 1;
index 876b283a5be39e6306a4c831872905635812d840..ec600a7bd3898a5354872de1f23344fd7b2b27a7 100644 (file)
@@ -577,7 +577,7 @@ ch_enlargebufs(EditLine *el, size_t addlen)
 
        /* zero the newly added memory, leave old data in */
        (void) memset(&newbuffer[sz], 0, (newsz - sz) * sizeof(*newbuffer));
-           
+
        oldbuf = el->el_line.buffer;
 
        el->el_line.buffer = newbuffer;
@@ -625,7 +625,7 @@ ch_enlargebufs(EditLine *el, size_t addlen)
        el->el_chared.c_redo.lim = newbuffer +
                        (el->el_chared.c_redo.lim - el->el_chared.c_redo.buf);
        el->el_chared.c_redo.buf = newbuffer;
-       
+
        if (!hist_enlargebuf(el, sz, newsz))
                return 0;
 
index 3a539d468eb0e50f15ed9e796a78f15389926f82..a0adde6f60873d74ec8af2849483d12c4a72b9a5 100644 (file)
@@ -57,7 +57,7 @@ ct_conv_buff_resize(ct_buffer_t *conv, size_t mincsize, size_t minwsize)
                        conv->csize = 0;
                        el_free(conv->cbuff);
                        conv->cbuff = NULL;
-               } else 
+               } else
                        conv->cbuff = p;
        }
 
index 5b75b3ab632c5f9cfc047bba83e300327df4d25e..df65b02c00f9086977e6b3d06dff92d494c6219e 100644 (file)
@@ -114,9 +114,9 @@ wchar_t *wcsdup(const wchar_t *s);
 #else /* NARROW */
 
 #define ct_mbtowc            error
-#define ct_mbtowc_reset      
+#define ct_mbtowc_reset
 #define ct_wctomb            error
-#define ct_wctomb_reset      
+#define ct_wctomb_reset
 #define ct_wcstombs(a, b, c)    (strncpy(a, b, c), strlen(a))
 #define ct_mbstowcs(a, b, c)    (strncpy(a, b, c), strlen(a))
 
@@ -213,7 +213,7 @@ protected size_t ct_enc_width(Char);
 #define VISUAL_WIDTH_MAX 8
 
 /* The terminal is thought of in terms of X columns by Y lines. In the cases
- * where a wide character takes up more than one column, the adjacent 
+ * where a wide character takes up more than one column, the adjacent
  * occupied column entries will contain this faux character. */
 #define MB_FILL_CHAR ((Char)-1)
 
index 6d68e004cda0d3ff02e5e3a0b15bd5db06688d8f..c4d21aa93286ad9b751e8c05b85e753f28a1675e 100644 (file)
@@ -449,7 +449,7 @@ ed_unassigned(EditLine *el, Int c __attribute__((__unused__)))
  */
 protected el_action_t
 /*ARGSUSED*/
-ed_tty_sigint(EditLine *el __attribute__((__unused__)), 
+ed_tty_sigint(EditLine *el __attribute__((__unused__)),
              Int c __attribute__((__unused__)))
 {
 
@@ -463,7 +463,7 @@ ed_tty_sigint(EditLine *el __attribute__((__unused__)),
  */
 protected el_action_t
 /*ARGSUSED*/
-ed_tty_dsusp(EditLine *el __attribute__((__unused__)), 
+ed_tty_dsusp(EditLine *el __attribute__((__unused__)),
             Int c __attribute__((__unused__)))
 {
 
@@ -477,7 +477,7 @@ ed_tty_dsusp(EditLine *el __attribute__((__unused__)),
  */
 protected el_action_t
 /*ARGSUSED*/
-ed_tty_flush_output(EditLine *el __attribute__((__unused__)), 
+ed_tty_flush_output(EditLine *el __attribute__((__unused__)),
                    Int c __attribute__((__unused__)))
 {
 
@@ -491,7 +491,7 @@ ed_tty_flush_output(EditLine *el __attribute__((__unused__)),
  */
 protected el_action_t
 /*ARGSUSED*/
-ed_tty_sigquit(EditLine *el __attribute__((__unused__)), 
+ed_tty_sigquit(EditLine *el __attribute__((__unused__)),
               Int c __attribute__((__unused__)))
 {
 
@@ -505,7 +505,7 @@ ed_tty_sigquit(EditLine *el __attribute__((__unused__)),
  */
 protected el_action_t
 /*ARGSUSED*/
-ed_tty_sigtstp(EditLine *el __attribute__((__unused__)), 
+ed_tty_sigtstp(EditLine *el __attribute__((__unused__)),
               Int c __attribute__((__unused__)))
 {
 
@@ -519,7 +519,7 @@ ed_tty_sigtstp(EditLine *el __attribute__((__unused__)),
  */
 protected el_action_t
 /*ARGSUSED*/
-ed_tty_stop_output(EditLine *el __attribute__((__unused__)), 
+ed_tty_stop_output(EditLine *el __attribute__((__unused__)),
                   Int c __attribute__((__unused__)))
 {
 
@@ -533,7 +533,7 @@ ed_tty_stop_output(EditLine *el __attribute__((__unused__)),
  */
 protected el_action_t
 /*ARGSUSED*/
-ed_tty_start_output(EditLine *el __attribute__((__unused__)), 
+ed_tty_start_output(EditLine *el __attribute__((__unused__)),
                    Int c __attribute__((__unused__)))
 {
 
@@ -598,7 +598,7 @@ ed_clear_screen(EditLine *el, Int c __attribute__((__unused__)))
  */
 protected el_action_t
 /*ARGSUSED*/
-ed_redisplay(EditLine *el __attribute__((__unused__)), 
+ed_redisplay(EditLine *el __attribute__((__unused__)),
             Int c __attribute__((__unused__)))
 {
 
@@ -626,7 +626,7 @@ ed_start_over(EditLine *el, Int c __attribute__((__unused__)))
  */
 protected el_action_t
 /*ARGSUSED*/
-ed_sequence_lead_in(EditLine *el __attribute__((__unused__)), 
+ed_sequence_lead_in(EditLine *el __attribute__((__unused__)),
                    Int c __attribute__((__unused__)))
 {
 
@@ -660,7 +660,7 @@ ed_prev_history(EditLine *el, Int c __attribute__((__unused__)))
        if (hist_get(el) == CC_ERROR) {
                if (el->el_map.type == MAP_VI) {
                        el->el_history.eventno = sv_event;
-                       
+
                }
                beep = 1;
                /* el->el_history.eventno was fixed by first call */
index 4c4d65a3e885cf76ccef8d978e6dabf49a5c4c5c..b36d405e0ab32aee186c5e7cd75822d5cb9d8a49 100644 (file)
@@ -97,7 +97,7 @@ typedef KEYMAP_ENTRY *Keymap;
 extern "C" {
 #endif
 extern const char      *rl_library_version;
-extern int             rl_readline_version; 
+extern int             rl_readline_version;
 extern char            *rl_readline_name;
 extern FILE            *rl_instream;
 extern FILE            *rl_outstream;
index d8444a980b7881e98e01a4af8a2ceda4890d1b56..1dcf75bd992b028db515e96a6c4b5b26ab30fa51 100644 (file)
@@ -472,7 +472,7 @@ fn_complete(EditLine *el,
                    (int)(cur_off - len), cur_off);
        } else
                matches = 0;
-       if (!attempted_completion_function || 
+       if (!attempted_completion_function ||
            (over != NULL && !*over && !matches))
                matches = completion_matches(ct_encode_string(temp, &el->el_scratch), complet_func);
 
@@ -520,7 +520,7 @@ fn_complete(EditLine *el,
                        }
                        /* matches[1] through matches[i-1] are available */
                        matches_num = i - 1;
-                               
+
                        /* newline to get on next line from command line */
                        (void)fprintf(el->el_outfile, "\n");
 
index 5e66747ba7420ed84280eaa7d56c84e01e799d75..5009feec62c0a1c87d19667696f91737e39cc809 100644 (file)
@@ -128,7 +128,7 @@ unsigned char       _el_fn_complete(EditLine *, int);
  * For operations that support set or set/get, the argument types listed are for
  * the "set" operation. For "get", each listed type must be a pointer.
  * E.g. EL_EDITMODE takes an int when set, but an int* when get.
- * 
+ *
  * Operations that only support "get" have the correct argument types listed.
  */
 #define        EL_PROMPT       0       /* , prompt_func);                    set/get */
index f3c6c9d0421656a47b6f67a4e45d09c09f28355a..3ec16a77bc024629b0efe3a6b7dd8a84cc25ead8 100644 (file)
@@ -439,7 +439,7 @@ history_def_del(ptr_t p, TYPE(HistEvent) *ev __attribute__((__unused__)),
  */
 /* ARGSUSED */
 private void
-history_def_delete(history_t *h, 
+history_def_delete(history_t *h,
                   TYPE(HistEvent) *ev __attribute__((__unused__)), hentry_t *hp)
 {
        HistEventPrivate *evp = (void *)&hp->ev;
@@ -498,7 +498,7 @@ history_def_enter(ptr_t p, TYPE(HistEvent) *ev, const Char *str)
 
        if ((h->flags & H_UNIQUE) != 0 && h->list.next != &h->list &&
            Strcmp(h->list.next->ev.str, str) == 0)
-           return (0); 
+           return (0);
 
        if (history_def_insert(h, ev, str) == -1)
                return (-1);    /* error, keep error message */
index 4ff506d9734ba94041c1c2a1e2e1adf8c4400b82..daf679fd5bb093bed06bf0755132a293e8aa6084 100644 (file)
@@ -587,7 +587,7 @@ key_kprint(EditLine *el, const Char *key, key_value_t *val, int ntype)
                case XK_STR:
                case XK_EXE:
                        (void) key__decode_str(val->str, unparsbuf,
-                           sizeof(unparsbuf), 
+                           sizeof(unparsbuf),
                            ntype == XK_STR ? "\"\"" : "[]");
                        (void) fprintf(el->el_outfile, fmt,
                            ct_encode_string(key, &el->el_scratch), unparsbuf);
index bd46d8ff96f2862cfd288d12472bec1c0d3b631d..e622060faff13044ce6b6e024cbc32a7d851bd9c 100644 (file)
@@ -1155,7 +1155,7 @@ map_print_some_keys(EditLine *el, el_action_t *map, Int first, Int last)
        lastbuf[1] = 0;
        if (map[first] == ED_UNASSIGNED) {
                if (first == last) {
-                       (void) key__decode_str(firstbuf, unparsbuf, 
+                       (void) key__decode_str(firstbuf, unparsbuf,
                            sizeof(unparsbuf), STRQQ);
                        (void) fprintf(el->el_outfile,
                            "%-15s->  is undefined\n", unparsbuf);
@@ -1166,14 +1166,14 @@ map_print_some_keys(EditLine *el, el_action_t *map, Int first, Int last)
        for (bp = el->el_map.help; bp < ep; bp++) {
                if (bp->func == map[first]) {
                        if (first == last) {
-                               (void) key__decode_str(firstbuf, unparsbuf, 
+                               (void) key__decode_str(firstbuf, unparsbuf,
                                    sizeof(unparsbuf), STRQQ);
                                (void) fprintf(el->el_outfile, "%-15s->  " FSTR "\n",
                                    unparsbuf, bp->name);
                        } else {
-                               (void) key__decode_str(firstbuf, unparsbuf, 
+                               (void) key__decode_str(firstbuf, unparsbuf,
                                    sizeof(unparsbuf), STRQQ);
-                               (void) key__decode_str(lastbuf, extrabuf, 
+                               (void) key__decode_str(lastbuf, extrabuf,
                                    sizeof(extrabuf), STRQQ);
                                (void) fprintf(el->el_outfile,
                                    "%-4s to %-7s->  " FSTR "\n",
@@ -1184,14 +1184,14 @@ map_print_some_keys(EditLine *el, el_action_t *map, Int first, Int last)
        }
 #ifdef MAP_DEBUG
        if (map == el->el_map.key) {
-               (void) key__decode_str(firstbuf, unparsbuf, 
+               (void) key__decode_str(firstbuf, unparsbuf,
                    sizeof(unparsbuf), STRQQ);
                (void) fprintf(el->el_outfile,
                    "BUG!!! %s isn't bound to anything.\n", unparsbuf);
                (void) fprintf(el->el_outfile, "el->el_map.key[%d] == %d\n",
                    first, el->el_map.key[first]);
        } else {
-               (void) key__decode_str(firstbuf, unparsbuf, 
+               (void) key__decode_str(firstbuf, unparsbuf,
                    sizeof(unparsbuf), STRQQ);
                (void) fprintf(el->el_outfile,
                    "BUG!!! %s isn't bound to anything.\n", unparsbuf);
index af63b82b6849b029d96a4847412a025b85c01ef6..cde7462859ba9b9e83984a4f2cd31e1949b3f52a 100644 (file)
@@ -48,7 +48,7 @@ typedef struct el_prompt_t {
        el_pfunc_t      p_func;         /* Function to return the prompt */
        coord_t         p_pos;          /* position in the line after prompt */
        Char            p_ignore;       /* character to start/end literal */
-       int             p_wide; 
+       int             p_wide;
 } el_prompt_t;
 
 protected void prompt_print(EditLine *, int);
index 852606a9c17dec362cc89bf505f16134101b4143..1ded7c1cf2a03090e369eb805de1251165e3fa30 100644 (file)
@@ -40,7 +40,7 @@ typedef int (*el_rfunc_t)(EditLine *, Char *);
 typedef struct el_read_t {
        el_rfunc_t      read_char;      /* Function to read a character */
 } el_read_t;
+
 protected int          read_init(EditLine *);
 protected void         read_prepare(EditLine *);
 protected void         read_finish(EditLine *);
index 53c71b6a4f654125cd845112bf9209402d7475ff..aeb6c46f41e581455c516224379db97adb268fb2 100644 (file)
@@ -258,7 +258,7 @@ rl_set_prompt(const char *prompt)
 
        if (!prompt)
                prompt = "";
-       if (rl_prompt != NULL && strcmp(rl_prompt, prompt) == 0) 
+       if (rl_prompt != NULL && strcmp(rl_prompt, prompt) == 0)
                return 0;
        if (rl_prompt)
                free(rl_prompt);
@@ -352,7 +352,7 @@ rl_initialize(void)
            "ReadLine compatible suspend function",
            _el_rl_tstp);
        el_set(e, EL_BIND, "^Z", "rl_tstp", NULL);
-               
+
        /* read settings from configuration file */
        el_source(e, NULL);
 
@@ -1937,7 +1937,7 @@ rl_callback_read_char()
        }
 }
 
-void 
+void
 rl_callback_handler_install(const char *prompt, VCPFunction *linefunc)
 {
        if (e == NULL) {
@@ -1946,9 +1946,9 @@ rl_callback_handler_install(const char *prompt, VCPFunction *linefunc)
        (void)rl_set_prompt(prompt);
        rl_linefunc = linefunc;
        el_set(e, EL_UNBUFFERED, 1);
-}   
+}
 
-void 
+void
 rl_callback_handler_remove(void)
 {
        el_set(e, EL_UNBUFFERED, 0);
@@ -2148,7 +2148,7 @@ rl_completion_matches(const char *str, rl_compentry_func_t *fun)
                list[0][min] = '\0';
        }
        return list;
-               
+
 out:
        free(list);
        return NULL;
index 7c128df0fba8b2979271a794da25b38be0b0180d..7f35ce1536bbb1f0bc74fbbfa532a0218ec0403e 100644 (file)
@@ -110,7 +110,7 @@ re_nextline(EditLine *el)
                for(i = 1; i < lins; i++)
                        el->el_vdisplay[i - 1] = el->el_vdisplay[i];
 
-               firstline[0] = '\0';            /* empty the string */  
+               firstline[0] = '\0';            /* empty the string */
                el->el_vdisplay[i - 1] = firstline;
        } else
                el->el_refresh.r_cursor.v++;
@@ -1077,7 +1077,7 @@ re_fastputc(EditLine *el, Int c)
                if (el->el_cursor.v + 1 >= el->el_term.t_size.v) {
                        int i, lins = el->el_term.t_size.v;
                        Char *firstline = el->el_display[0];
-       
+
                        for(i = 1; i < lins; i++)
                                el->el_display[i - 1] = el->el_display[i];
 
index 765d25bb81b7c8b5055e60d9b90a305b5183ad3a..87c90df4e4a277b64cc20a475845c5071c13a551 100644 (file)
@@ -61,7 +61,7 @@
 #  define __END_DECLS
 # endif
 #endif
+
 #ifndef public
 # define public                /* Externally visible functions/variables */
 #endif
index 39c881a386710d9989eefe65f91ff5e601947dbc..3a1b5e739ed057217888be10ca5b9ecc9f96b787 100644 (file)
@@ -648,7 +648,7 @@ mc_again:
                                                    (el->el_cursor.h & 0370);
                                                    i < (where & ~0x7);
                                                    i += 8)
-                                                       term__putc(el, '\t');   
+                                                       term__putc(el, '\t');
                                                        /* then tab over */
                                                el->el_cursor.h = where & ~0x7;
                                        }
@@ -1343,7 +1343,7 @@ term_writec(EditLine *el, Int c)
  */
 protected int
 /*ARGSUSED*/
-term_telltc(EditLine *el, int argc __attribute__((__unused__)), 
+term_telltc(EditLine *el, int argc __attribute__((__unused__)),
     const Char **argv __attribute__((__unused__)))
 {
        const struct termcapstr *t;
index 1755101372e949f86279e4bd9cbfca3ea5bc4f54..c20a67f4c29d2006c566ccfc835f4d3a22ca9fc9 100644 (file)
@@ -315,7 +315,7 @@ unvis(char *cp, int c, int *astate, int flag)
                        *astate = SS(0, S_META1);
                else if (c == '^')
                        *astate = SS(0, S_CTRL);
-               else 
+               else
                        goto bad;
                return UNVIS_NOCHAR;
 
index 0764d8438c786843533d29cf796083ce3f2ebb82..fb8ee720362cdf5bba68612e83aad6a750097bdc 100644 (file)
@@ -981,7 +981,7 @@ vi_to_history_line(EditLine *el, Int c)
                el->el_history.eventno = 1;
                if (hist_get(el) == CC_ERROR)
                        return CC_ERROR;
-               el->el_history.eventno = 1 + el->el_history.ev.num 
+               el->el_history.eventno = 1 + el->el_history.ev.num
                                        - el->el_state.argument;
                if (el->el_history.eventno < 0) {
                        el->el_history.eventno = sv_event_no;
index 2a1ec7981f3056a0db3781d1d414b9e8fb8eafdf..2641c4a9f6754ce3cc6530a554efcb29cc7593af 100644 (file)
@@ -149,7 +149,7 @@ do_mvis(char *dst, int c, int flag, int nextc, const char *extra)
            ((isspace(c) && (nextc == '\r' || nextc == '\n')) ||
            /* Out of range */
            (!isspace(c) && (c < 33 || (c > 60 && c < 62) || c > 126)) ||
-           /* Specific char to be escaped */ 
+           /* Specific char to be escaped */
            strchr("#$@[\\]^`{|}~", c) != NULL)) {
                *dst++ = '=';
                *dst++ = XTOA(((unsigned int)c >> 4) & 0xf);
index 2a77375e0b743a245019ebbb9e285b26029346a6..5cf7b5919e0757708f1a8e3102eeb2a551105127 100644 (file)
@@ -6,7 +6,7 @@
  * This material is provided "as is", with absolutely no warranty expressed
  * or implied. Any use is at your own risk.
  *
- * Permission to use or copy this software for any purpose is hereby granted 
+ * Permission to use or copy this software for any purpose is hereby granted
  * without fee. Permission to modify the code and to distribute modified
  * code is also granted without any restrictions.
  */
@@ -15,9 +15,9 @@
 
 #include "config.h"
 
-#if defined(LIBC_SCCS) && !defined(lint) 
-__RCSID("$NetBSD: wcsdup.c,v 1.3 2008/05/26 13:17:48 haad Exp $"); 
-#endif /* LIBC_SCCS and not lint */ 
+#if defined(LIBC_SCCS) && !defined(lint)
+__RCSID("$NetBSD: wcsdup.c,v 1.3 2008/05/26 13:17:48 haad Exp $");
+#endif /* LIBC_SCCS and not lint */
 
 #include <stdlib.h>
 #include <assert.h>
index 9551e078510ff46cb6c62f8616b405f56453d51c..68fd5eb18d7273280a2205b2e7f016919b2b27eb 100644 (file)
@@ -1,36 +1,36 @@
 /*
  * Copyright (c) 2010 Kungliga Tekniska Högskolan
- * (Royal Institute of Technology, Stockholm, Sweden). 
- * All rights reserved. 
+ * (Royal Institute of Technology, Stockholm, Sweden).
+ * All rights reserved.
  *
  * Portions Copyright (c) 2010 Apple Inc. All rights reserved.
  *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
  *
- * 1. Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer. 
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
  *
- * 2. Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in the 
- *    documentation and/or other materials provided with the distribution. 
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
  *
- * 3. Neither the name of the Institute nor the names of its contributors 
- *    may be used to endorse or promote products derived from this software 
- *    without specific prior written permission. 
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
  *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
- * SUCH DAMAGE. 
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
  */
 
 #include <sys/types.h>
@@ -57,7 +57,7 @@ heim_generate_challenge(const char *hostname)
 
     t = time(NULL);
     num = rk_random();
-    
+
     asprintf(&str, "<%lu%lu@%s>", (unsigned long)t,
             (unsigned long)num, hostname);
 
@@ -164,7 +164,7 @@ heim_cram_md5_import(void *data, size_t len)
     heim_CRAM_MD5_STATE state;
     heim_cram_md5 ctx;
     unsigned n;
-    
+
     if (len != sizeof(state))
        return NULL;
 
index a9c5b2b0505cfafec921261692d216c0d72be14e..1c26dcb4af52751f1481256b035c7b3614fda8f8 100644 (file)
@@ -135,13 +135,13 @@ build_A2_hash(heim_digest_t context, const char *method)
     unsigned char md[CC_MD5_DIGEST_LENGTH];
     CC_MD5_CTX ctx;
     char *A2;
-  
+
     CC_MD5_Init(&ctx);
     if (method)
        CC_MD5_Update(&ctx, method, strlen(method));
     CC_MD5_Update(&ctx, ":", 1);
     CC_MD5_Update(&ctx, context->clientURI, strlen(context->clientURI));
-       
+
     /* conf|int */
     if (context->type != HEIM_DIGEST_TYPE_RFC2069) {
        if (strcmp(context->clientQOP, "auth") != 0) {
@@ -152,7 +152,7 @@ build_A2_hash(heim_digest_t context, const char *method)
     } else {
        /* support auth-int ? */
     }
-       
+
     CC_MD5_Final(md, &ctx);
 
     hex_encode(md, sizeof(md), &A2);
@@ -265,7 +265,7 @@ parse_values(const char *string, struct md5_value **val)
            goto error;
        p2 += sz;
        p1 = p2;
-               
+
        if (*p2 == '"') {
            p1++;
            while (*p2 == '"') {
@@ -292,7 +292,7 @@ parse_values(const char *string, struct md5_value **val)
            goto nomem;
        strncpy(v->mv_value, p1, p2 - p1);
        v->mv_value[p2 - p1] = '\0';
-               
+
        if (p2[0] == '\0')
            break;
        if (p2[0] == '"')
@@ -418,7 +418,7 @@ heim_digest_parse_response(heim_digest_t context, const char *response)
     if (context->clientUsername == NULL) goto out;
 
     context->clientRealm = values_find(&val, "realm");
-    
+
     context->clientResponse = values_find(&val, "response");
     if (context->clientResponse == NULL) goto out;
 
index 5268d44a424d420dd3ac759c062192afc66470c1..389a1a093806e32211acd9444e3556b30e51b605 100644 (file)
@@ -56,7 +56,7 @@ heim_cram_md5_free(heim_cram_md5 ctx);
  * response = read_from_client();
  *
  * heim_digest_parse_response(d, response);
- * 
+ *
  * const char *user = heim_digest_get_key(d, "username");
  * heim_digest_set_key(d, "password", "sommar17");
  *
index 62674b528f12cf219d6e2e67261696418c786836..7aafc8c0aa7a28cd7d2ae5ced4de6461746751f5 100644 (file)
@@ -293,7 +293,7 @@ ret_sec_string(krb5_storage *sp, int ucs2, struct sec_buffer *desc, char **s)
     CHECK(krb5_storage_seek(sp, desc->offset, SEEK_SET), desc->offset);
     CHECK(ret_string(sp, ucs2, desc->length, s), 0);
  out:
-    return ret; 
+    return ret;
 }
 
 static krb5_error_code
@@ -1029,7 +1029,7 @@ splitandenc(unsigned char *hash,
     key[7] = (hash[6] << 1);
 
     EVP_CIPHER_CTX_init(&ctx);
-    
+
     EVP_CipherInit_ex(&ctx, EVP_des_cbc(), NULL, key, NULL, 1);
     EVP_Cipher(&ctx, answer, challenge, 8);
     EVP_CIPHER_CTX_cleanup(&ctx);
@@ -1133,7 +1133,7 @@ heim_ntlm_v1_base_session(void *key, size_t len,
        session->length = 0;
        return ENOMEM;
     }
-    
+
     m = EVP_MD_CTX_create();
     if (m == NULL) {
        heim_ntlm_free_buf(session);
index 6c6224f2d88e0c27c0c7a18a7fcd2e38da6dce22..e0c1eb0c6d4cb7a2ba85cde0d9ac2f5b454d3c97 100644 (file)
@@ -53,14 +53,14 @@ test_sasl_digest_md5(void)
        abort();
     if (heim_digest_parse_response(ctx, "charset=utf-8,username=\"chris\",realm=\"elwood.innosoft.com\",nonce=\"OA6MG9tEQGm2hh\",nc=00000001,cnonce=\"OA6MHXh6VqTrRk\",digest-uri=\"imap/elwood.innosoft.com\",response=d388dad90d4bbd760a152321f2143af7,qop=auth"))
        abort();
-    
+
     if ((user = heim_digest_get_key(ctx, "username")) == NULL)
        abort();
     if (strcmp(user, "chris") != 0)
        abort();
 
     heim_digest_set_key(ctx, "password", "secret");
-    
+
     if (heim_digest_verify(ctx, &r))
        abort();
 
@@ -95,14 +95,14 @@ test_http_digest_md5(void)
                                   "response=\"1949323746fe6a43ef61f9606e7febea\","
                                   "opaque=\"5ccc069c403ebaf9f0171e9517f40e41\""))
        abort();
-    
+
     if ((user = heim_digest_get_key(ctx, "username")) == NULL)
        abort();
     if (strcmp(user, "Mufasa") != 0)
        abort();
 
     heim_digest_set_key(ctx, "password", "CircleOfLife");
-    
+
     if (heim_digest_verify(ctx, NULL))
        abort();
 
@@ -158,7 +158,7 @@ test_cram_md5(void)
        abort();
 
     heim_cram_md5_export(secret, &state);
-    
+
     /* here you can store the memcpy-ed version of state somewhere else */
 
     ctx = heim_cram_md5_import(&state, sizeof(state));
@@ -183,7 +183,7 @@ test_apop(void)
     const char *resp = "c4c9334bac560ecc979e58001b3e22fb";
     char *t;
 
-    
+
     t = heim_apop_create(chal, secret);
     if (t == NULL)
        abort();
index 29a4accab1b38b976d1009863f85467bc8409d03..1d6fe9594373cc9bb04a727de4a1d7d5e71ce007 100644 (file)
@@ -72,7 +72,7 @@ little_endian(unsigned char *res, size_t len)
 {
     unsigned char t;
     size_t i;
-    
+
     for (i = 0; i < len; i += 4) {
        t = res[i + 0]; res[i + 0] = res[i + 3]; res[i + 3] = t;
        t = res[i + 1]; res[i + 1] = res[i + 2]; res[i + 2] = t;
@@ -91,7 +91,7 @@ otp_md_init (OtpKey key,
     EVP_MD_CTX *ctx;
     char *p;
     int len;
-    
+
     ctx = EVP_MD_CTX_create();
 
     len = strlen(pwd) + strlen(seed);
@@ -110,7 +110,7 @@ otp_md_init (OtpKey key,
 
     if (le)
        little_endian(res, ressz);
-    
+
     free (p);
     compressmd (key, res, ressz);
     return 0;
index 78d8b4f8e616def49eb37afae951a38ba72afb33..0b4ac46824c42c6dfec72ab2adbef2086c54cb27 100644 (file)
@@ -78,7 +78,7 @@ roken_vmconcat (char **s, size_t max_len, va_list args)
     len = 1;
     while ((a = va_arg(args, const char*))) {
        size_t n = strlen (a);
-       
+
        if(max_len && len + n > max_len){
            free(p);
            return 0;
index ac87339fe9a1ba48b2e72a15e3de397f03b13bf9..2ac3827fb12f38c1ab47ccb414bc738448063178 100644 (file)
@@ -1,19 +1,19 @@
 /***********************************************************************
  * Copyright (c) 2009, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -26,7 +26,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 #include <stdio.h>
@@ -149,7 +149,7 @@ int teardown_test(void)
         !strcmp(dirname + len + 1 - sizeof(TESTDIR)/sizeof(char), TESTDIR)) {
 
         /* fallthrough */
-        
+
     } else {
         /* did we create the directory? */
 
index fb3f3735f1f7de18452432288d08c879ea0d1d20..c76724c72dee9b0777ded7abfda8dd5250e80273 100644 (file)
@@ -1,19 +1,19 @@
 /***********************************************************************
  * Copyright (c) 2009, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -26,7 +26,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 #include<config.h>
index bbbe62fd2beafe857500d3246965b84f94d606d1..0885324a8a70c726855467b47e283cf799d33c27 100644 (file)
@@ -1,19 +1,19 @@
 /***********************************************************************
  * Copyright (c) 2009, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -26,7 +26,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 #include <config.h>
index c7a84a0811ef79427a2baf49d596f4b9f11a0c26..a2863df4317a4ad874326a9f967bc0366776d452 100644 (file)
@@ -1,33 +1,33 @@
 .\" Copyright (c) 2001, 2003 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\" $Id$
 .\"
 .Dd August 14, 2003
@@ -61,13 +61,13 @@ The roken library (libroken, -lroken)
 .Ft ssize_t
 .Fn ewrite "int fd" "const void *buf" "size_t nbytes"
 .Sh DESCRIPTION
-These functions do the same as the ones without the 
+These functions do the same as the ones without the
 .Dq e
-prefix, but if there is an error they will print a message with 
+prefix, but if there is an error they will print a message with
 .Xr errx 3 ,
 and exit. For
 .Nm eread
-and 
+and
 .Nm ewrite
 this is also true for partial data.
 .Pp
index f693faec81aa0255b77a2e1d1bf26959d940e87c..7dfe492179d132ad8144f0199115b8a1fee328fc 100644 (file)
@@ -153,7 +153,7 @@ rangematch(const char *pattern, int test, int flags)
         */
        if (negate = (*pattern == '!' || *pattern == '^'))
                ++pattern;
-       
+
        for (ok = 0; (c = *pattern++) != ']';) {
                if (c == '\\' && !(flags & FNM_NOESCAPE))
                        c = *pattern++;
index f1d74b430cebf76ac11843d6fcd13797bdaccd89..5a4a1753fef5ffece379ce096b126978924e567d 100644 (file)
@@ -91,7 +91,7 @@ get_window_size(int fd, int *lines, int *columns)
 #elif defined(HAVE__SCRSIZE)
     {
        int dst[2];
-       
+
        _scrsize(dst);
        if (lines)
            *lines = dst[1];
index 17a18b0827b1477e2ae43dc398f8e6e193bc52d7..454121992d34504d40561d26590d8ec4254b4fb3 100644 (file)
@@ -65,7 +65,7 @@ roken_getaddrinfo_hostspec2(const char *hostspec,
     memset(&hints, 0, sizeof(hints));
 
     hints.ai_socktype = socktype;
-       
+
     for(hstp = hst; hstp->prefix; hstp++) {
        if(strncmp(hostspec, hstp->prefix, strlen(hstp->prefix)) == 0) {
            hints.ai_socktype = hstp->socktype;
index 15533fed9040f6c75c7e5c383ff8d89282428ebd..dda6e7dbf3d3f9bac52ae076e6c99832bcdc1637 100644 (file)
@@ -1,34 +1,34 @@
 .\" Copyright (c) 1999 - 2002 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
-.\" 
 .\" $Id$
 .Dd September 24, 1999
 .Dt GETARG 3
index d6250f5259c3140aa08da290d88956dfcb529c15..42f8dc07d80d29f53ae585ae60cb030104c73f80 100644 (file)
@@ -43,7 +43,7 @@
 #elif defined(HAVE_DB_H)
 #include <db.h>
 #endif
-#include <errno.h>     
+#include <errno.h>
 #include <fcntl.h>
 #include <limits.h>
 #include <stdio.h>
@@ -238,7 +238,7 @@ getent(char **cap, size_t *len, char **db_array, int fd,
     int myfd = 0, eof, foundit;
     char *record;
     int tc_not_resolved;
-       
+
     /*
      * Return with ``loop detected'' error if we've recursed more than
      * MAX_RECURSION times.
@@ -356,7 +356,7 @@ getent(char **cap, size_t *len, char **db_array, int fd,
                for (;;) {
                    if (bp >= b_end) {
                        int n;
-               
+
                        n = read(fd, buf, sizeof(buf));
                        if (n <= 0) {
                            if (myfd)
@@ -373,7 +373,7 @@ getent(char **cap, size_t *len, char **db_array, int fd,
                        b_end = buf+n;
                        bp = buf;
                    }
-       
+
                    c = *bp++;
                    if (c == '\n') {
                        if (slash) {
@@ -442,13 +442,13 @@ getent(char **cap, size_t *len, char **db_array, int fd,
                 */
                if (eof)
                    break;
-                               
+
                /*
                 * Toss blank lines and comments.
                 */
                if (*record == '\0' || *record == '#')
                    continue;
-       
+
                /*
                 * See if this is the record we want ...
                 */
@@ -524,11 +524,11 @@ getent(char **cap, size_t *len, char **db_array, int fd,
                    tc_not_resolved = 1;
                                /* couldn't resolve tc */
                if (iret == -1) {
-                   *(s - 1) = ':';                     
+                   *(s - 1) = ':';
                    scan = s - 1;
                    tc_not_resolved = 1;
                    continue;
-                                       
+
                }
            }
            /* not interested in name field of tc'ed record */
@@ -591,7 +591,7 @@ getent(char **cap, size_t *len, char **db_array, int fd,
             */
            scan = s-1;
        }
-       
+
     }
     /*
      * Close file (if we opened it), give back any extra memory, and
@@ -606,12 +606,12 @@ getent(char **cap, size_t *len, char **db_array, int fd,
            errno = ENOMEM;
            return (-2);
        }
-               
+
     *cap = record;
     if (tc_not_resolved)
        return (1);
     return (0);
-}      
+}
 
 #ifdef USE_DB
 static int
@@ -640,7 +640,7 @@ cdbget(DB *capdbp, char **bp, const char *name)
                key.data = (char *)data.data + 1;
                key.size = data.size - 1;
        }
-       
+
        *bp = (char *)data.data + 1;
        return (((char *)(data.data))[0] == TCERR ? 1 : 0);
 }
@@ -775,7 +775,7 @@ cgetnext(char **bp, char **db_array)
                slash = 1;
            else
                slash = 0;
-       }                       
+       }
 
 
        /*
@@ -1116,10 +1116,10 @@ nfcmp(char *nf, char *rec)
 {
     char *cp, tmp;
     int ret;
-       
+
     for (cp = rec; *cp != ':'; cp++)
        ;
-       
+
     tmp = *(cp + 1);
     *(cp + 1) = '\0';
     ret = strcmp(nf, rec);
index 1df633febf983dcf141bc39285f3fb7e8303b5e0..8d0725a68f91a2c2df7c72a12dad0341a396565b 100644 (file)
@@ -70,7 +70,7 @@ print_addr(const char *s, struct sockaddr *sa)
     for(i = 0; i < sa->sa_len - ((long)sa->sa_data - (long)&sa->sa_family); i++)
        printf("%02x", ((unsigned char*)sa->sa_data)[i]);
 #else
-    for(i = 0; i < sizeof(sa->sa_data); i++) 
+    for(i = 0; i < sizeof(sa->sa_data); i++)
        printf("%02x", ((unsigned char*)sa->sa_data)[i]);
 #endif
     printf("\n");
@@ -80,16 +80,16 @@ static void
 print_ifaddrs(struct ifaddrs *x)
 {
     struct ifaddrs *p;
-    
+
     for(p = x; p; p = p->ifa_next) {
        if (verbose_counter) {
            printf("%s\n", p->ifa_name);
            printf("  flags=%x\n", p->ifa_flags);
            if(p->ifa_addr)
                print_addr("addr", p->ifa_addr);
-           if(p->ifa_dstaddr) 
+           if(p->ifa_dstaddr)
                print_addr("dstaddr", p->ifa_dstaddr);
-           if(p->ifa_netmask) 
+           if(p->ifa_netmask)
                print_addr("netmask", p->ifa_netmask);
            printf("  %p\n", p->ifa_data);
        }
index 1e0583b7d83fdd6aac44945717b12d1992c0dd4b..cc949b0b1a89826ae8907936b48af2a07585d491 100644 (file)
@@ -632,7 +632,7 @@ rk_getifaddrs(struct ifaddrs **ifap)
        default:
          continue;
        }
-       
+
        if (!build){
          if (max_ifindex < nlm_index)
            max_ifindex = nlm_index;
@@ -993,7 +993,7 @@ getifaddrs2(struct ifaddrs **ifap,
        (*end)->ifa_data = NULL;
 
        end = &(*end)->ifa_next;
-       
+
     }
     *ifap = start;
     close(fd);
@@ -1139,7 +1139,7 @@ getlifaddrs2(struct ifaddrs **ifap,
        (*end)->ifa_data = NULL;
 
        end = &(*end)->ifa_next;
-       
+
     }
     *ifap = start;
     close(fd);
index 7b3f8143a28332c025cf31a5287ab37e81e4ef32..beb29b397a347cd027eb6aef7cea119ed292101e 100644 (file)
@@ -1,19 +1,19 @@
 /***********************************************************************
  * Copyright (c) 2009, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -26,7 +26,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 #include<config.h>
@@ -83,7 +83,7 @@ rk_getifaddrs(struct ifaddrs **ifpp)
 
        free (il);
        il = NULL;
-           
+
        if (WSAGetLastError() == WSAEFAULT && cbret > il_len) {
            il_len = cbret;
        } else {
@@ -134,7 +134,7 @@ rk_getifaddrs(struct ifaddrs **ifpp)
 
     if (il)
        free (il);
-    
+
     return ret;
 }
 
@@ -142,15 +142,15 @@ void ROKEN_LIB_FUNCTION
 rk_freeifaddrs(struct ifaddrs *ifp)
 {
     struct ifaddrs *p, *q;
-    
+
     for(p = ifp; p; ) {
        if (p->ifa_name)
            free(p->ifa_name);
        if(p->ifa_addr)
            free(p->ifa_addr);
-       if(p->ifa_dstaddr) 
+       if(p->ifa_dstaddr)
            free(p->ifa_dstaddr);
-       if(p->ifa_netmask) 
+       if(p->ifa_netmask)
            free(p->ifa_netmask);
        if(p->ifa_data)
            free(p->ifa_data);
index 9b37319eb2cc7a98ba0dd8c6e15df7f3a9dfec15..5a7ed65af8098668eb4c3c2ba68559ad81e9446c 100644 (file)
@@ -384,14 +384,14 @@ globtilde(const Char *pattern, Char *patbuf, glob_t *pglob)
        /* Copy the home directory */
        for (b = patbuf; *h; *b++ = *h++)
                continue;
-       
+
        /* Append the rest of the pattern */
        while ((*b++ = *p++) != CHAR_EOS)
                continue;
 
        return patbuf;
 }
-       
+
 
 /*
  * The main glob() routine: compiles the pattern (optionally processing
@@ -532,7 +532,7 @@ glob2(Char *pathbuf, Char *pathend, Char *pattern, glob_t *pglob,
                        *pathend = CHAR_EOS;
                        if (g_lstat(pathbuf, &sb, pglob))
                                return(0);
-               
+
                        if (((pglob->gl_flags & GLOB_MARK) &&
                            pathend[-1] != CHAR_SEP) && (S_ISDIR(sb.st_mode)
                            || (S_ISLNK(sb.st_mode) &&
@@ -585,7 +585,7 @@ glob3(Char *pathbuf, Char *pathend, Char *pattern, Char *restpattern,
 
        *pathend = CHAR_EOS;
        errno = 0;
-       
+
        if ((dirp = g_opendir(pathbuf, pglob)) == NULL) {
                /* TODO: don't call for ENOENT or ENOTDIR? */
                if (pglob->gl_errfunc) {
index d9bc9f1c0bc18a15df0080c4a2be5e9d8dfe693e..4b32eed7572fc37106c9b804d5d80ec578658413 100644 (file)
@@ -86,7 +86,7 @@ hex_decode(const char *str, void *data, size_t len)
     size_t l;
     unsigned char *p = data;
     size_t i;
-       
+
     l = strlen(str);
 
     /* check for overflow, same as (l+1)/2 but overflow safe */
index 83a18ed77fb27ba7902153f8738bcf7843ed41bb..851764d28e56714c8b02a9056c040fdb3f7e9d93 100644 (file)
@@ -66,7 +66,7 @@ main(int argc, char **argv)
        if  (sz != tests[i].size)
            errx(1, "sz (%lu) != tests[%d].size (%lu)",
                 (unsigned long)sz, i, (unsigned long)tests[i].size);
-       
+
        for (buf_sz = 0; buf_sz < tests[i].size + 2; buf_sz++) {
 
            buf = rk_test_mem_alloc(RK_TM_OVERRUN, "overrun",
index eba1bf3ffb6c3a69108eac03c3385bbb0337b8aa..da326cb3bc21938538d2b0c414ee6b9d7f3f5626 100644 (file)
@@ -1,33 +1,33 @@
 .\" Copyright (c) 2004 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\" $Id$
 .\"
 .Dd October 31, 2004
@@ -52,13 +52,13 @@ The roken library (libroken, -lroken)
 .Ft size_t
 .Fn unparse_time_approx "int seconds" "char *buf" "size_t len"
 .Sh DESCRIPTION
-The 
+The
 .Fn parse_time
 function converts a the period of time specified in
 into a number of seconds.
-The 
+The
 .Fa timespec
-can be any number of 
+can be any number of
 .Aq number unit
 pairs separated by comma and whitespace. The number can be
 negative. Number without explicit units are taken as being
@@ -68,12 +68,12 @@ The
 .Fn unparse_time
 and
 .Fn unparse_time_approx
-does the opposite of 
+does the opposite of
 .Fn parse_time ,
 that is they take a number of seconds and express that as human
-readable string. 
+readable string.
 .Fa unparse_time
-produces an exact time, while 
+produces an exact time, while
 .Fa unparse_time_approx
 restricts the result to only include one units.
 .Pp
@@ -99,13 +99,13 @@ Units names can be arbitrarily abbreviated (as long as they are
 unique).
 .Sh RETURN VALUES
 .Fn parse_time
-returns the number of seconds that represents the expression in 
+returns the number of seconds that represents the expression in
 .Fa timespec
 or -1 on error.
 .Fn unparse_time
-and 
-.Fn unparse_time_approx 
-return the number of characters written to 
+and
+.Fn unparse_time_approx
+return the number of characters written to
 .Fa buf .
 if the return value is greater than or equal to the
 .Fa len
@@ -140,7 +140,7 @@ main(int argc, char **argv)
 }
 .Ed
 .Bd -literal
-$ ./a.out "1 minute 30 seconds" "90 s" "1 y -1 s"     
+$ ./a.out "1 minute 30 seconds" "90 s" "1 y -1 s"
 1   year = 365 days
 1  month = 30 days
 1   week = 7 days
index 48d3552ade13dc0a75cdbb35af60fdee8a6c8f79..768981334f251d2ff2a0eaa77e51aa9639462097 100644 (file)
@@ -125,7 +125,7 @@ loop:       SWAPINIT(a, es);
        swap_cnt = 0;
        if (n < 7) {
                for (pm = (char *)a + es; pm < (char *)a + n * es; pm += es)
-                       for (pl = pm; 
+                       for (pl = pm;
                             pl > (char *)a && CMP(thunk, pl - es, pl) > 0;
                             pl -= es)
                                swap(pl, pl - es);
@@ -173,7 +173,7 @@ loop:       SWAPINIT(a, es);
        }
        if (swap_cnt == 0) {  /* Switch to insertion sort */
                for (pm = (char *)a + es; pm < (char *)a + n * es; pm += es)
-                       for (pl = pm; 
+                       for (pl = pm;
                             pl > (char *)a && CMP(thunk, pl - es, pl) > 0;
                             pl -= es)
                                swap(pl, pl - es);
index e61e2735053895ed27569367022efcbd758a7148..d7348d30a4fee67cc28ad61be2f60b643e1af6c1 100644 (file)
@@ -1,19 +1,19 @@
 /***********************************************************************
  * Copyright (c) 2010, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -26,7 +26,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 #include <config.h>
index df3f5c6258ef86f7e57b112c176fe5daab8e9a8a..b27f37a6d6d1ca34042d0c5fdd23ce47e9cc8393 100644 (file)
@@ -528,7 +528,7 @@ dns_lookup_int(const char *domain, int rr_class, int rr_type)
     struct sockaddr_storage from;
     uint32_t fromsize = sizeof(from);
     dns_handle_t handle;
-    
+
     handle = dns_open(NULL);
     if (handle == NULL)
        return NULL;
index 0faf66861593f31590a8633c643b4bdda4ae1fce..f2c62f23f39c046eb7c8521f73acefdb37d2e25c 100644 (file)
@@ -107,9 +107,9 @@ open_pty(void)
     {
        char *clone[] = {
            "/dev/ptc",
-           "/dev/ptmx", 
+           "/dev/ptmx",
            "/dev/ptm",
-           "/dev/ptym/clone", 
+           "/dev/ptym/clone",
            NULL
        };
        char **q;
@@ -372,7 +372,7 @@ main(int argc, char **argv)
            sa.sa_handler = caught_signal;
            sa.sa_flags = 0;
            sigemptyset (&sa.sa_mask);
-       
+
            sigaction(SIGALRM, &sa, NULL);
        }
 
index 327a7b39208c88d928a13cf43f055b819704a77e..1bb560d3baf4ed20a91cafdd5c09d1ed831df774 100644 (file)
@@ -191,12 +191,12 @@ roken_gethostby(const char *hostname)
        static char addrs[4 * MAX_ADDRS];
        static char *addr_list[MAX_ADDRS + 1];
        int num_addrs = 0;
-       
+
        he.h_name = p;
        he.h_aliases = NULL;
        he.h_addrtype = AF_INET;
        he.h_length = 4;
-       
+
        while((p = strtok_r(NULL, " \t\r\n", &foo)) && num_addrs < MAX_ADDRS) {
            struct in_addr ip;
            inet_aton(p, &ip);
index 6e2eecd491962679801ac1e7e9c9f49f746b7dd8..c6853772ad78cd9caeb9d9bb7f420ee34611cb29 100644 (file)
@@ -68,23 +68,23 @@ sendmsg(rk_socket_t s, const struct msghdr *msg, int flags)
 /***********************************************************************
  * Copyright (c) 2009, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * - Neither the name of Secure Endpoints Inc. nor the names of its
  *   contributors may be used to endorse or promote products derived
  *   from this software without specific prior written permission.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -97,7 +97,7 @@ sendmsg(rk_socket_t s, const struct msghdr *msg, int flags)
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 /**
index 1fca398c1fbd8b2b1524a59d387e4ceb7436bcd7..5163fc2537744b6d732c75db8547f39d7af3ac87 100644 (file)
@@ -1,19 +1,19 @@
 /***********************************************************************
  * Copyright (c) 2009, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -26,7 +26,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 #include <config.h>
@@ -66,7 +66,7 @@
  * @retval 128- The signal that killed the subprocess +128.
  */
 ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
-wait_for_process_timed(pid_t pid, time_t (*func)(void *), 
+wait_for_process_timed(pid_t pid, time_t (*func)(void *),
                       void *ptr, time_t timeout)
 {
     HANDLE hProcess;
@@ -205,7 +205,7 @@ collect_commandline(const char * fn, va_list * ap)
 }
 
 ROKEN_LIB_FUNCTION pid_t ROKEN_LIB_CALL
-pipe_execv(FILE **stdin_fd, FILE **stdout_fd, FILE **stderr_fd, 
+pipe_execv(FILE **stdin_fd, FILE **stdout_fd, FILE **stderr_fd,
           const char *file, ...)
 {
     HANDLE  hOut_r = NULL;
@@ -335,7 +335,7 @@ pipe_execv(FILE **stdin_fd, FILE **stdout_fd, FILE **stderr_fd,
 
 
 ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
-simple_execvp_timed(const char *file, char *const args[], 
+simple_execvp_timed(const char *file, char *const args[],
                    time_t (*func)(void *), void *ptr, time_t timeout)
 {
     intptr_t hp;
index eac28c16651b1b0da066957c793cfcd87892e9e9..4773f7c027e77c0e250d078ce33f743622e21a6d 100644 (file)
@@ -1,19 +1,19 @@
 /***********************************************************************
  * Copyright (c) 2009, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -26,7 +26,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 #include <config.h>
index 5fffe63ee585a326474aabe67393a8b6111ab2f3..88e996c671f16d1c0fb825919d9303189dbd87bf 100644 (file)
@@ -190,7 +190,7 @@ append_number(struct snprintf_state *state,
            no such wording for %x. This would mean that %#.o would
            output "0", but %#.x "". This does not make sense, and is
            also not what other printf implementations are doing. */
-       
+
        if(prec <= nlen && nstr[nstart] != '0' && nstr[nstart] != '\0')
            prec = nlen + 1;
     }
@@ -208,13 +208,13 @@ append_number(struct snprintf_state *state,
            width -= prec;
        else
            width -= nlen;
-       
+
        if(use_alternative(flags, num, base))
            width -= 2;
-       
+
        if(signchar != '\0')
            width--;
-       
+
        /* pad to width */
        len += pad(state, width, ' ');
     }
@@ -236,12 +236,12 @@ append_number(struct snprintf_state *state,
     } else
        /* pad to prec with zeros */
        len += pad(state, prec - nlen, '0');
-       
+
     while(nstr[nstart] != '\0') {
        (*state->append_char)(state, nstr[nstart++]);
        ++len;
     }
-       
+
     if(flags & minus_flag)
        len += pad(state, width - len, ' ');
 
index 8797f957723ce2a832f5f2c8dd7ec1eebaa2c557..017d6252ea16e02593fa2f4a0b90b15d97bdd312 100644 (file)
@@ -233,7 +233,7 @@ socket_set_portrange (rk_socket_t sock, int restr, int af)
        }
 #endif
 }
-       
+
 /*
  * Enable debug on `sock'.
  */
index 5caae7f70f724be5f4e3c4eea67a299d7bcb0b2b..94389494b1915dedb437a7d596828021e350729c 100644 (file)
@@ -296,7 +296,7 @@ static int convert_un_in(const struct sockaddr_un *un, struct sockaddr *in, sock
        case SOCKET_TYPE_CHAR_TCP:
        case SOCKET_TYPE_CHAR_UDP: {
                struct sockaddr_in *in2 = (struct sockaddr_in *)in;
-               
+
                if ((*len) < sizeof(*in2)) {
                    errno = EINVAL;
                    return -1;
@@ -314,7 +314,7 @@ static int convert_un_in(const struct sockaddr_un *un, struct sockaddr *in, sock
        case SOCKET_TYPE_CHAR_TCP_V6:
        case SOCKET_TYPE_CHAR_UDP_V6: {
                struct sockaddr_in6 *in2 = (struct sockaddr_in6 *)in;
-               
+
                if ((*len) < sizeof(*in2)) {
                        errno = EINVAL;
                        return -1;
@@ -408,7 +408,7 @@ static int convert_in_un_remote(struct socket_info *si, const struct sockaddr *i
 
                prt = ntohs(in->sin6_port);
                iface = SW_IPV6_ADDRESS;
-               
+
                break;
        }
 #endif
@@ -515,7 +515,7 @@ static int convert_in_un_alloc(struct socket_info *si, const struct sockaddr *in
 
                prt = ntohs(in->sin6_port);
                iface = SW_IPV6_ADDRESS;
-               
+
                break;
        }
 #endif
@@ -583,7 +583,7 @@ static int sockaddr_convert_to_un(struct socket_info *si, const struct sockaddr
        default:
                break;
        }
-       
+
        errno = EAFNOSUPPORT;
        return -1;
 }
@@ -648,7 +648,7 @@ enum swrap_packet_type {
 
 struct swrap_file_hdr {
        unsigned long   magic;
-       unsigned short  version_major;  
+       unsigned short  version_major;
        unsigned short  version_minor;
        long            timezone;
        unsigned long   sigfigs;
@@ -911,7 +911,7 @@ static int swrap_get_pcap_fd(const char *fname)
        if (fd != -1) {
                struct swrap_file_hdr file_hdr;
                file_hdr.magic          = 0xA1B2C3D4;
-               file_hdr.version_major  = 0x0002;       
+               file_hdr.version_major  = 0x0002;
                file_hdr.version_minor  = 0x0004;
                file_hdr.timezone       = 0x00000000;
                file_hdr.sigfigs        = 0x00000000;
@@ -1456,7 +1456,7 @@ static int swrap_auto_bind(struct socket_info *si)
                         "%s/"SOCKET_FORMAT, socket_wrapper_dir(),
                         type, socket_wrapper_default_iface(), port);
                if (stat(un_addr.sun_path, &st) == 0) continue;
-               
+
                ret = real_bind(si->fd, (struct sockaddr *)&un_addr, sizeof(un_addr));
                if (ret == -1) return ret;
 
@@ -1683,32 +1683,32 @@ _PUBLIC_ ssize_t swrap_sendto(int s, const void *buf, size_t len, int flags, con
                        ret = swrap_auto_bind(si);
                        if (ret == -1) return -1;
                }
-               
+
                ret = sockaddr_convert_to_un(si, to, tolen, &un_addr, 0, &bcast);
                if (ret == -1) return -1;
-               
+
                if (bcast) {
                        struct stat st;
                        unsigned int iface;
                        unsigned int prt = ntohs(((const struct sockaddr_in *)to)->sin_port);
                        char type;
-                       
+
                        type = SOCKET_TYPE_CHAR_UDP;
-                       
+
                        for(iface=0; iface <= MAX_WRAPPED_INTERFACES; iface++) {
                                snprintf(un_addr.sun_path, sizeof(un_addr.sun_path), "%s/"SOCKET_FORMAT,
                                         socket_wrapper_dir(), type, iface, prt);
                                if (stat(un_addr.sun_path, &st) != 0) continue;
-                               
+
                                /* ignore the any errors in broadcast sends */
                                real_sendto(s, buf, len, flags, (struct sockaddr *)&un_addr, sizeof(un_addr));
                        }
-                       
+
                        swrap_dump_packet(si, to, SWRAP_SENDTO, buf, len);
-                       
+
                        return len;
                }
-               
+
                ret = real_sendto(s, buf, len, flags, (struct sockaddr *)&un_addr, sizeof(un_addr));
                break;
        default:
@@ -1716,7 +1716,7 @@ _PUBLIC_ ssize_t swrap_sendto(int s, const void *buf, size_t len, int flags, con
                errno = EHOSTUNREACH;
                break;
        }
-               
+
        /* to give better errors */
        if (ret == -1 && errno == ENOENT) {
                errno = EHOSTUNREACH;
index 2dcfdf4a33b847e95f42db9a90919d613d79762a..35eb3ae96f161f7f78a6828a985d86f76e7b2534 100644 (file)
@@ -1,19 +1,19 @@
 /***********************************************************************
  * Copyright (c) 2009, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -26,7 +26,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 #include<config.h>
index 18faa71a4834eed662ec87f2669ab92c1ec198bd..d95b88c1bb0f7006467faad2d40ca6607f09fe65 100644 (file)
@@ -286,7 +286,7 @@ strftime (char *buf, size_t maxsize, const char *format,
                                "%02d:%02d",
                                tm->tm_hour,
                                tm->tm_min);
-               
+
            case 's' :
                ret = snprintf (buf, maxsize - n,
                                "%d", (int)mktime(rk_UNCONST(tm)));
index dcdaa185f274195172c0b76b50b3365019e7f2cb..f4fb539a634fd65ed3b702d8f7c5d4d0ba72e6f2 100644 (file)
@@ -1,19 +1,19 @@
 /***********************************************************************
  * Copyright (c) 2009, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -26,7 +26,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 /*
index 04a72c58abc3759248b3b3e1ae31fec283fafc52..5afdf74ed8c94438b2163ff339174c9a32d97c0a 100644 (file)
@@ -1,19 +1,19 @@
 /***********************************************************************
  * Copyright (c) 2009, Secure Endpoints Inc.
  * All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * - Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
- * 
+ *
  * - Redistributions in binary form must reproduce the above copyright
  *   notice, this list of conditions and the following disclaimer in
  *   the documentation and/or other materials provided with the
  *   distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
@@ -26,7 +26,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  **********************************************************************/
 
 #include <config.h>
@@ -109,11 +109,11 @@ test_simple_echo_client(void)
     int rv;
     char buf[81];
     int i;
-    
+
     fprintf(stderr, "[%s] Getting connected socket...", getprogname());
     rv = get_connected_socket(&s);
     if (rv) {
-       fprintf(stderr, "\n[%s] get_connected_socket() failed (%s)\n", 
+       fprintf(stderr, "\n[%s] get_connected_socket() failed (%s)\n",
                getprogname(), strerror(rk_SOCK_ERRNO));
        return 1;
     }
@@ -123,7 +123,7 @@ test_simple_echo_client(void)
     for (i=0; i < sizeof(test_strings)/sizeof(test_strings[0]); i++) {
        rv = send(s, test_strings[i], strlen(test_strings[i]), 0);
        if (rk_IS_SOCKET_ERROR(rv)) {
-           fprintf(stderr, "[%s] send() failure (%s)\n", 
+           fprintf(stderr, "[%s] send() failure (%s)\n",
                    getprogname(), strerror(rk_SOCK_ERRNO));
            rk_closesocket(s);
            return 1;
@@ -188,10 +188,10 @@ test_simple_echo_socket(void)
                srv = send(s, buf, rv, 0);
                if (srv != rv) {
                    if (rk_IS_SOCKET_ERROR(srv))
-                       fprintf(stderr, "[%s] send() error [%s]\n", 
+                       fprintf(stderr, "[%s] send() error [%s]\n",
                                getprogname(), strerror(rk_SOCK_ERRNO));
                    else
-                       fprintf(stderr, "[%s] send() size mismatch %d != %d", 
+                       fprintf(stderr, "[%s] send() size mismatch %d != %d",
                                getprogname(), srv, rv);
                }
 
index a073821b859551d1bab2fb9fb555e934693ce892..cc5b9a95b6049047884e0bb0ce60161c29c485e0 100644 (file)
@@ -73,53 +73,53 @@ main(int argc, char **argv)
        { "=", 1 },
        { NULL }
     };
-    
+
     for(t = tests; t->string; t++) {
        /* Better not be there */
        p = (struct node *)rk_tfind((void *)t, (void **)&rootnode,
                                    node_compare);
-       
+
        if (p) {
            warnx("erroneous list: found %d\n", p->order);
            numerr++;
        }
-       
+
        /* Put node into the tree. */
        p = (struct node *) rk_tsearch((void *)t, (void **)&rootnode,
                                       node_compare);
-       
+
        if (!p) {
            warnx("erroneous list: missing %d\n", t->order);
            numerr++;
        }
     }
-    
+
     rk_twalk(rootnode, list_node);
-    
+
     for(t = tests; t->string; t++) {
        /* Better be there */
        p =  (struct node *) rk_tfind((void *)t, (void **)&rootnode,
                                      node_compare);
-       
+
        if (!p) {
            warnx("erroneous list: missing %d\n", t->order);
            numerr++;
        }
-       
+
        /* pull out node */
        (void) rk_tdelete((void *)t, (void **)&rootnode,
                          node_compare);
-       
+
        /* Better not be there */
        p =  (struct node *) rk_tfind((void *)t, (void **)&rootnode,
                                      node_compare);
-       
+
        if (p) {
            warnx("erroneous list: found %d\n", p->order);
            numerr++;
        }
-       
+
     }
-    
+
     return numerr;
 }
index 731dde06c2d49451258ee958418d5e28d3e5714c..6ceda4aa2c2edff2b662a331259cff82a5782dd0 100644 (file)
@@ -183,7 +183,7 @@ rk_unvis(char *cp, int c, int *astate, int flag)
                }
                *astate = S_GROUND;
                return (UNVIS_SYNBAD);
-               
+
        case S_META:
                if (c == '-')
                        *astate = S_META1;
@@ -194,12 +194,12 @@ rk_unvis(char *cp, int c, int *astate, int flag)
                        return (UNVIS_SYNBAD);
                }
                return (0);
-               
+
        case S_META1:
                *astate = S_GROUND;
                *cp |= c;
                return (UNVIS_VALID);
-               
+
        case S_CTRL:
                if (c == '?')
                        *cp |= 0177;
@@ -214,7 +214,7 @@ rk_unvis(char *cp, int c, int *astate, int flag)
                         * yes - and maybe a third
                         */
                        *cp = (*cp << 3) + (c - '0');
-                       *astate = S_OCTAL3;     
+                       *astate = S_OCTAL3;
                        return (0);
                }
                /*
@@ -233,8 +233,8 @@ rk_unvis(char *cp, int c, int *astate, int flag)
                 * we were done, push back passed char
                 */
                return (UNVIS_VALIDPUSH);
-                       
-       default:        
+
+       default:
                /*
                 * decoder in unknown state - (probably uninitialized)
                 */
index c2ecbab00f772f51d3ead2e25ba7a01741fce585..30f69436dd2e99fd62b5627e15cf5a7919a25fe4 100644 (file)
@@ -72,7 +72,7 @@ mandoc_template(SL_cmd *cmds,
            continue; */
        printf(".Op Fl %s", c->name);
        printf("\n");
-       
+
     }
     if (extra_string && *extra_string)
        printf (".Ar %s\n", extra_string);
@@ -311,7 +311,7 @@ sl_command_loop(SL_cmd *cmds, const char *prompt, void **data)
     char *buf;
     int argc;
     char **argv;
-       
+
     buf = sl_readline(prompt);
     if(buf == NULL)
        return -2;
index fb93508a9ec84939c07f83349dc09da5654a437b..39fae43132fd7c543547ecc23982cb5544f26709 100644 (file)
@@ -244,7 +244,7 @@ check_command(struct assignment *as)
                ex(as, "multiple max_args strings");
                ret++;
        }
-       
+
        return ret;
 }
 
@@ -472,7 +472,7 @@ gen_options(struct assignment *opt1, const char *name)
        struct assignment *type;
        struct type_handler *th;
        char *s;
-       
+
        s = make_name(tmp->u.assignment);
        type = find(tmp->u.assignment, "type");
        th = find_handler(type);
@@ -530,7 +530,7 @@ gen_wrapper(struct assignment *as)
        struct assignment *help = find(tmp->u.assignment, "help");
 
        struct type_handler *th;
-       
+
        cprint(2, "{ ");
        if(lopt)
            fprintf(cfile, "\"%s\", ", lopt->u.value);
@@ -566,7 +566,7 @@ gen_wrapper(struct assignment *as)
        struct assignment *defval = find(tmp->u.assignment, "default");
 
        struct type_handler *th;
-       
+
        s = make_name(tmp->u.assignment);
        th = find_handler(type);
        (*th->defval)(s, defval);
index 8c44ff4b39a5be4b7e25b13bf692d7142088ca49..efe31d888c1d6b521a921f896ff031af125ac41f 100644 (file)
@@ -1,6 +1,6 @@
 /******************************************************************************
 ** This file is an amalgamation of many separate C source files from SQLite
-** version 3.6.23.1.  By combining all the individual C code files into this 
+** version 3.6.23.1.  By combining all the individual C code files into this
 ** single large file, the entire code can be compiled as a one translation
 ** unit.  This allows many compilers to do optimizations that would not be
 ** possible if the files were compiled separately.  Performance improvements
@@ -9,7 +9,7 @@
 **
 ** This file is all you need to compile SQLite.  To use SQLite in other
 ** programs, you need this file and the "sqlite3.h" header file that defines
-** the programming interface to the SQLite library.  (If you do not have 
+** the programming interface to the SQLite library.  (If you do not have
 ** the "sqlite3.h" header file at hand, you will find a copy embedded within
 ** the text of this file.  Search for "Begin file sqlite3.h" to find the start
 ** of the embedded sqlite3.h header file.) Additional code files may be needed
@@ -91,7 +91,7 @@
 **    May you share freely, never taking more than you give.
 **
 *************************************************************************
-** 
+**
 ** This file defines various limits of what SQLite can process.
 */
 
 #endif
 
 /*
-** The maximum depth of an expression tree. This is limited to 
-** some extent by SQLITE_MAX_SQL_LENGTH. But sometime you might 
-** want to place more severe limits on the complexity of an 
+** The maximum depth of an expression tree. This is limited to
+** some extent by SQLITE_MAX_SQL_LENGTH. But sometime you might
+** want to place more severe limits on the complexity of an
 ** expression.
 **
 ** A value of 0 used to mean that the limit was not enforced.
 **
 ** If this limit is changed, then the compiled library is technically
 ** incompatible with an SQLite library compiled with a different limit. If
-** a process operating on a database with a page-size of 65536 bytes 
-** crashes, then an instance of SQLite compiled with the default page-size 
+** a process operating on a database with a page-size of 65536 bytes
+** crashes, then an instance of SQLite compiled with the default page-size
 ** limit will not be able to rollback the aborted transaction. This could
 ** lead to database corruption.
 */
 ** Maximum depth of recursion for triggers.
 **
 ** A value of 1 means that a trigger program will not be able to itself
-** fire any triggers. A value of 0 means that no trigger programs at all 
+** fire any triggers. A value of 0 means that no trigger programs at all
 ** may be executed.
 */
 #ifndef SQLITE_MAX_TRIGGER_DEPTH
 #endif
 
 /*
-** The number of samples of an index that SQLite takes in order to 
+** The number of samples of an index that SQLite takes in order to
 ** construct a histogram of the table content when running ANALYZE
 ** and with SQLITE_ENABLE_STAT2
 */
 ** to the next, so we have developed the following set of #if statements
 ** to generate appropriate macros for a wide range of compilers.
 **
-** The correct "ANSI" way to do this is to use the intptr_t type. 
+** The correct "ANSI" way to do this is to use the intptr_t type.
 ** Unfortunately, that typedef is not available on all compilers, or
 ** if it is available, it requires an #include of specific headers
 ** that very from one machine to the next.
 
 /*
 ** The SQLITE_DEFAULT_MEMSTATUS macro must be defined as either 0 or 1.
-** It determines whether or not the features related to 
+** It determines whether or not the features related to
 ** SQLITE_CONFIG_MEMSTATUS are available by default or not. This value can
 ** be overridden at runtime using the sqlite3_config() API.
 */
 ** option is set.  Thus NDEBUG becomes an opt-in rather than an opt-out
 ** feature.
 */
-#if !defined(NDEBUG) && !defined(SQLITE_DEBUG) 
+#if !defined(NDEBUG) && !defined(SQLITE_DEBUG)
 # define NDEBUG 1
 #endif
 
 /*
-** The testcase() macro is used to aid in coverage testing.  When 
+** The testcase() macro is used to aid in coverage testing.  When
 ** doing coverage testing, the condition inside the argument to
 ** testcase() must be evaluated both true and false in order to
 ** get full branch coverage.  The testcase() macro is inserted
@@ -478,7 +478,7 @@ SQLITE_PRIVATE   void sqlite3Coverage(int);
 #endif
 
 /*
-** The ALWAYS and NEVER macros surround boolean expressions which 
+** The ALWAYS and NEVER macros surround boolean expressions which
 ** are intended to always be true or false, respectively.  Such
 ** expressions could be omitted from the code completely.  But they
 ** are included in a few cases in order to enhance the resilience
@@ -656,8 +656,8 @@ extern "C" {
 ** function is provided for use in DLLs since DLL users usually do not have
 ** direct access to string constants within the DLL.  ^The
 ** sqlite3_libversion_number() function returns an integer equal to
-** [SQLITE_VERSION_NUMBER].  ^The sqlite3_sourceid() function returns 
-** a pointer to a string constant whose value is the same as the 
+** [SQLITE_VERSION_NUMBER].  ^The sqlite3_sourceid() function returns
+** a pointer to a string constant whose value is the same as the
 ** [SQLITE_SOURCE_ID] C preprocessor macro.
 **
 ** See also: [sqlite_version()] and [sqlite_source_id()].
@@ -671,20 +671,20 @@ SQLITE_API int sqlite3_libversion_number(void);
 /*
 ** CAPI3REF: Run-Time Library Compilation Options Diagnostics
 **
-** ^The sqlite3_compileoption_used() function returns 0 or 1 
-** indicating whether the specified option was defined at 
-** compile time.  ^The SQLITE_ prefix may be omitted from the 
-** option name passed to sqlite3_compileoption_used().  
+** ^The sqlite3_compileoption_used() function returns 0 or 1
+** indicating whether the specified option was defined at
+** compile time.  ^The SQLITE_ prefix may be omitted from the
+** option name passed to sqlite3_compileoption_used().
 **
 ** ^The sqlite3_compileoption_get() function allows interating
 ** over the list of options that were defined at compile time by
 ** returning the N-th compile time option string.  ^If N is out of range,
-** sqlite3_compileoption_get() returns a NULL pointer.  ^The SQLITE_ 
-** prefix is omitted from any strings returned by 
+** sqlite3_compileoption_get() returns a NULL pointer.  ^The SQLITE_
+** prefix is omitted from any strings returned by
 ** sqlite3_compileoption_get().
 **
 ** ^Support for the diagnostic functions sqlite3_compileoption_used()
-** and sqlite3_compileoption_get() may be omitted by specifing the 
+** and sqlite3_compileoption_get() may be omitted by specifing the
 ** [SQLITE_OMIT_COMPILEOPTION_DIAGS] option at compile time.
 **
 ** See also: SQL functions [sqlite_compileoption_used()] and
@@ -704,7 +704,7 @@ SQLITE_API const char *sqlite3_compileoption_get(int N);
 ** SQLite can be compiled with or without mutexes.  When
 ** the [SQLITE_THREADSAFE] C preprocessor macro is 1 or 2, mutexes
 ** are enabled and SQLite is threadsafe.  When the
-** [SQLITE_THREADSAFE] macro is 0, 
+** [SQLITE_THREADSAFE] macro is 0,
 ** the mutexes are omitted.  Without the mutexes, it is not safe
 ** to use SQLite concurrently from more than one thread.
 **
@@ -760,7 +760,7 @@ typedef struct sqlite3 sqlite3;
 **
 ** ^The sqlite3_int64 and sqlite_int64 types can store integer values
 ** between -9223372036854775808 and +9223372036854775807 inclusive.  ^The
-** sqlite3_uint64 and sqlite_uint64 types can store integer values 
+** sqlite3_uint64 and sqlite_uint64 types can store integer values
 ** between 0 and +18446744073709551615 inclusive.
 */
 #ifdef SQLITE_INT64_TYPE
@@ -805,7 +805,7 @@ typedef sqlite_uint64 sqlite3_uint64;
 ** pointer or an [sqlite3] object pointer obtained
 ** from [sqlite3_open()], [sqlite3_open16()], or
 ** [sqlite3_open_v2()], and not previously closed.
-** ^Calling sqlite3_close() with a NULL pointer argument is a 
+** ^Calling sqlite3_close() with a NULL pointer argument is a
 ** harmless no-op.
 */
 SQLITE_API int sqlite3_close(sqlite3 *);
@@ -823,7 +823,7 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
 ** The sqlite3_exec() interface is a convenience wrapper around
 ** [sqlite3_prepare_v2()], [sqlite3_step()], and [sqlite3_finalize()],
 ** that allows an application to run multiple statements of SQL
-** without having to use a lot of C code. 
+** without having to use a lot of C code.
 **
 ** ^The sqlite3_exec() interface runs zero or more UTF-8 encoded,
 ** semicolon-separate SQL statements passed into its 2nd argument,
@@ -863,7 +863,7 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
 ** from [sqlite3_column_name()].
 **
 ** ^If the 2nd parameter to sqlite3_exec() is a NULL pointer, a pointer
-** to an empty string, or a pointer that contains only whitespace and/or 
+** to an empty string, or a pointer that contains only whitespace and/or
 ** SQL comments, then no SQL statements are evaluated and the database
 ** is not changed.
 **
@@ -1064,7 +1064,7 @@ SQLITE_API int sqlite3_exec(
 /*
 ** CAPI3REF: OS Interface Open File Handle
 **
-** An [sqlite3_file] object represents an open file in the 
+** An [sqlite3_file] object represents an open file in the
 ** [sqlite3_vfs | OS interface layer].  Individual OS interface
 ** implementations will
 ** want to subclass this object by appending additional fields
@@ -1086,7 +1086,7 @@ struct sqlite3_file {
 ** This object defines the methods used to perform various operations
 ** against the open file represented by the [sqlite3_file] object.
 **
-** If the xOpen method sets the sqlite3_file.pMethods element 
+** If the xOpen method sets the sqlite3_file.pMethods element
 ** to a non-NULL pointer, then the sqlite3_io_methods.xClose method
 ** may be invoked even if the xOpen reported that it failed.  The
 ** only way to prevent a call to xClose following a failed xOpen
@@ -1256,14 +1256,14 @@ typedef struct sqlite3_mutex sqlite3_mutex;
 ** the [sqlite3_file] can safely store a pointer to the
 ** filename if it needs to remember the filename for some reason.
 ** If the zFilename parameter is xOpen is a NULL pointer then xOpen
-** must invent its own temporary name for the file.  Whenever the 
+** must invent its own temporary name for the file.  Whenever the
 ** xFilename parameter is NULL it will also be the case that the
 ** flags parameter will include [SQLITE_OPEN_DELETEONCLOSE].
 **
 ** The flags argument to xOpen() includes all bits set in
 ** the flags argument to [sqlite3_open_v2()].  Or if [sqlite3_open()]
 ** or [sqlite3_open16()] is used, then flags includes at least
-** [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]. 
+** [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE].
 ** If xOpen() opens a file read-only then it sets *pOutFlags to
 ** include [SQLITE_OPEN_READONLY].  Other bits in *pOutFlags may be set.
 **
@@ -1303,10 +1303,10 @@ typedef struct sqlite3_mutex sqlite3_mutex;
 ** The [SQLITE_OPEN_EXCLUSIVE] flag is always used in conjunction
 ** with the [SQLITE_OPEN_CREATE] flag, which are both directly
 ** analogous to the O_EXCL and O_CREAT flags of the POSIX open()
-** API.  The SQLITE_OPEN_EXCLUSIVE flag, when paired with the 
+** API.  The SQLITE_OPEN_EXCLUSIVE flag, when paired with the
 ** SQLITE_OPEN_CREATE, is used to indicate that file should always
 ** be created, and that it is an error if it already exists.
-** It is <i>not</i> used to indicate the file should be opened 
+** It is <i>not</i> used to indicate the file should be opened
 ** for exclusive access.
 **
 ** At least szOsFile bytes of memory are allocated by SQLite
@@ -1506,7 +1506,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_config(int, ...);
 ** [database connection] (specified in the first argument).  The
 ** sqlite3_db_config() interface should only be used immediately after
 ** the database connection is created using [sqlite3_open()],
-** [sqlite3_open16()], or [sqlite3_open_v2()].  
+** [sqlite3_open16()], or [sqlite3_open_v2()].
 **
 ** The second argument to sqlite3_db_config(D,V,...)  is the
 ** configuration verb - an integer code that indicates what
@@ -1530,7 +1530,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_db_config(sqlite3*, int op, ...);
 ** This object is used in only one place in the SQLite interface.
 ** A pointer to an instance of this object is the argument to
 ** [sqlite3_config()] when the configuration option is
-** [SQLITE_CONFIG_MALLOC] or [SQLITE_CONFIG_GETMALLOC].  
+** [SQLITE_CONFIG_MALLOC] or [SQLITE_CONFIG_GETMALLOC].
 ** By creating an instance of this object
 ** and passing it to [sqlite3_config]([SQLITE_CONFIG_MALLOC])
 ** during configuration, an application can specify an alternative
@@ -1566,7 +1566,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_db_config(sqlite3*, int op, ...);
 ** allocators round up memory allocations at least to the next multiple
 ** of 8.  Some allocators round up to a larger multiple or to a power of 2.
 ** Every memory allocation request coming in through [sqlite3_malloc()]
-** or [sqlite3_realloc()] first calls xRoundup.  If xRoundup returns 0, 
+** or [sqlite3_realloc()] first calls xRoundup.  If xRoundup returns 0,
 ** that causes the corresponding memory allocation to fail.
 **
 ** The xInit method initializes the memory allocator.  (For example,
@@ -1624,7 +1624,7 @@ struct sqlite3_mem_methods {
 ** by a single thread.   ^If SQLite is compiled with
 ** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
 ** it is not possible to change the [threading mode] from its default
-** value of Single-thread and so [sqlite3_config()] will return 
+** value of Single-thread and so [sqlite3_config()] will return
 ** [SQLITE_ERROR] if called with the SQLITE_CONFIG_SINGLETHREAD
 ** configuration option.</dd>
 **
@@ -1675,9 +1675,9 @@ struct sqlite3_mem_methods {
 ** tracks memory usage, for example. </dd>
 **
 ** <dt>SQLITE_CONFIG_MEMSTATUS</dt>
-** <dd> ^This option takes single argument of type int, interpreted as a 
-** boolean, which enables or disables the collection of memory allocation 
-** statistics. ^(When memory allocation statistics are disabled, the 
+** <dd> ^This option takes single argument of type int, interpreted as a
+** boolean, which enables or disables the collection of memory allocation
+** statistics. ^(When memory allocation statistics are disabled, the
 ** following SQLite interfaces become non-operational:
 **   <ul>
 **   <li> [sqlite3_memory_used()]
@@ -1703,13 +1703,13 @@ struct sqlite3_mem_methods {
 ** ^SQLite will use no more than one scratch buffer per thread.  So
 ** N should be set to the expected maximum number of threads.  ^SQLite will
 ** never require a scratch buffer that is more than 6 times the database
-** page size. ^If SQLite needs needs additional scratch memory beyond 
-** what is provided by this configuration option, then 
+** page size. ^If SQLite needs needs additional scratch memory beyond
+** what is provided by this configuration option, then
 ** [sqlite3_malloc()] will be used to obtain the memory needed.</dd>
 **
 ** <dt>SQLITE_CONFIG_PAGECACHE</dt>
 ** <dd> ^This option specifies a static memory buffer that SQLite can use for
-** the database page cache with the default page cache implemenation.  
+** the database page cache with the default page cache implemenation.
 ** This configuration should not be used if an application-define page
 ** cache implementation is loaded using the SQLITE_CONFIG_PCACHE option.
 ** There are three arguments to this option: A pointer to 8-byte aligned
@@ -1724,7 +1724,7 @@ struct sqlite3_mem_methods {
 ** memory needs for the first N pages that it adds to cache.  ^If additional
 ** page cache memory is needed beyond what is provided by this option, then
 ** SQLite goes to [sqlite3_malloc()] for the additional storage space.
-** ^The implementation might use one or more of the N buffers to hold 
+** ^The implementation might use one or more of the N buffers to hold
 ** memory accounting information. The pointer in the first argument must
 ** be aligned to an 8-byte boundary or subsequent behavior of SQLite
 ** will be undefined.</dd>
@@ -1803,7 +1803,7 @@ struct sqlite3_mem_methods {
 #define SQLITE_CONFIG_MEMSTATUS     9  /* boolean */
 #define SQLITE_CONFIG_MUTEX        10  /* sqlite3_mutex_methods* */
 #define SQLITE_CONFIG_GETMUTEX     11  /* sqlite3_mutex_methods* */
-/* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */ 
+/* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */
 #define SQLITE_CONFIG_LOOKASIDE    13  /* int int */
 #define SQLITE_CONFIG_PCACHE       14  /* sqlite3_pcache_methods* */
 #define SQLITE_CONFIG_GETPCACHE    15  /* sqlite3_pcache_methods* */
@@ -1825,7 +1825,7 @@ struct sqlite3_mem_methods {
 **
 ** <dl>
 ** <dt>SQLITE_DBCONFIG_LOOKASIDE</dt>
-** <dd> ^This option takes three additional arguments that determine the 
+** <dd> ^This option takes three additional arguments that determine the
 ** [lookaside memory allocator] configuration for the [database connection].
 ** ^The first argument (the third parameter to [sqlite3_db_config()] is a
 ** pointer to an memory buffer to use for lookaside memory.
@@ -1921,7 +1921,7 @@ SQLITE_API sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
 ** mechanisms do not count as direct row changes.)^
 **
 ** A "trigger context" is a scope of execution that begins and
-** ends with the script of a [CREATE TRIGGER | trigger]. 
+** ends with the script of a [CREATE TRIGGER | trigger].
 ** Most SQL statements are
 ** evaluated outside of any trigger.  This is the "top level"
 ** trigger context.  If a trigger fires from the top level, a
@@ -1964,7 +1964,7 @@ SQLITE_API int sqlite3_changes(sqlite3*);
 ** the count does not include changes used to implement [REPLACE] constraints,
 ** do rollbacks or ABORT processing, or [DROP TABLE] processing.  The
 ** count does not include rows of views that fire an [INSTEAD OF trigger],
-** though if the INSTEAD OF trigger makes changes of its own, those changes 
+** though if the INSTEAD OF trigger makes changes of its own, those changes
 ** are counted.)^
 ** ^The sqlite3_total_changes() function counts the changes as soon as
 ** the statement that makes them is completed (when the statement handle
@@ -2004,7 +2004,7 @@ SQLITE_API int sqlite3_total_changes(sqlite3*);
 **
 ** ^The sqlite3_interrupt(D) call is in effect until all currently running
 ** SQL statements on [database connection] D complete.  ^Any new SQL statements
-** that are started after the sqlite3_interrupt() call and before the 
+** that are started after the sqlite3_interrupt() call and before the
 ** running statements reaches zero are interrupted as if they had been
 ** running prior to the sqlite3_interrupt() call.  ^New SQL statements
 ** that are started after the running statement count reaches zero are
@@ -2039,7 +2039,7 @@ SQLITE_API void sqlite3_interrupt(sqlite3*);
 ** ^These routines do not parse the SQL statements thus
 ** will not detect syntactically incorrect SQL.
 **
-** ^(If SQLite has not been initialized using [sqlite3_initialize()] prior 
+** ^(If SQLite has not been initialized using [sqlite3_initialize()] prior
 ** to invoking sqlite3_complete16() then sqlite3_initialize() is invoked
 ** automatically by sqlite3_complete16().  If that initialization fails,
 ** then the return value from sqlite3_complete16() will be non-zero
@@ -2114,7 +2114,7 @@ SQLITE_API int sqlite3_complete16(const void *sql);
 ** The busy callback should not take any actions which modify the
 ** database connection that invoked the busy handler.  Any such actions
 ** result in undefined behavior.
-** 
+**
 ** A busy handler must not close the database connection
 ** or [prepared statement] that invoked the busy handler.
 */
@@ -2456,7 +2456,7 @@ SQLITE_API void sqlite3_randomness(int N, void *P);
 ** requested is ok.  ^When the callback returns [SQLITE_DENY], the
 ** [sqlite3_prepare_v2()] or equivalent call that triggered the
 ** authorizer will fail with an error message explaining that
-** access is denied. 
+** access is denied.
 **
 ** ^The first parameter to the authorizer callback is a copy of the third
 ** parameter to the sqlite3_set_authorizer() interface. ^The second parameter
@@ -2503,7 +2503,7 @@ SQLITE_API void sqlite3_randomness(int N, void *P);
 ** database connections for the meaning of "modify" in this paragraph.
 **
 ** ^When [sqlite3_prepare_v2()] is used to prepare a statement, the
-** statement might be re-prepared during [sqlite3_step()] due to a 
+** statement might be re-prepared during [sqlite3_step()] due to a
 ** schema change.  Hence, the application should ensure that the
 ** correct authorizer callback remains in place during the [sqlite3_step()].
 **
@@ -2658,7 +2658,7 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
 ** except that it accepts two additional parameters for additional control
 ** over the new database connection.  ^(The flags parameter to
 ** sqlite3_open_v2() can take one of
-** the following three values, optionally combined with the 
+** the following three values, optionally combined with the
 ** [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX], [SQLITE_OPEN_SHAREDCACHE],
 ** and/or [SQLITE_OPEN_PRIVATECACHE] flags:)^
 **
@@ -2742,7 +2742,7 @@ SQLITE_API int sqlite3_open_v2(
 ** associated with a [database connection]. If a prior API call failed
 ** but the most recent API call succeeded, the return value from
 ** sqlite3_errcode() is undefined.  ^The sqlite3_extended_errcode()
-** interface is the same except that it always returns the 
+** interface is the same except that it always returns the
 ** [extended result code] even when extended result codes are
 ** disabled.
 **
@@ -2809,9 +2809,9 @@ typedef struct sqlite3_stmt sqlite3_stmt;
 ** new limit for that construct.  The function returns the old limit.)^
 **
 ** ^If the new limit is a negative number, the limit is unchanged.
-** ^(For the limit category of SQLITE_LIMIT_XYZ there is a 
+** ^(For the limit category of SQLITE_LIMIT_XYZ there is a
 ** [limits | hard upper bound]
-** set by a compile-time C preprocessor macro named 
+** set by a compile-time C preprocessor macro named
 ** [limits | SQLITE_MAX_XYZ].
 ** (The "_LIMIT_" in the name is changed to "_MAX_".))^
 ** ^Attempts to increase a limit above its hard upper bound are
@@ -2969,9 +2969,9 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 ** <li>
 ** ^If the value of a [parameter | host parameter] in the WHERE clause might
 ** change the query plan for a statement, then the statement may be
-** automatically recompiled (as if there had been a schema change) on the first 
-** [sqlite3_step()] call following any change to the 
-** [sqlite3_bind_text | bindings] of the [parameter]. 
+** automatically recompiled (as if there had been a schema change) on the first
+** [sqlite3_step()] call following any change to the
+** [sqlite3_bind_text | bindings] of the [parameter].
 ** </li>
 ** </ol>
 */
@@ -3033,7 +3033,7 @@ SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
 ** sqlite3_value object but no mutex is held for an unprotected
 ** sqlite3_value object.  If SQLite is compiled to be single-threaded
 ** (with [SQLITE_THREADSAFE=0] and with [sqlite3_threadsafe()] returning 0)
-** or if SQLite is run in one of reduced mutex modes 
+** or if SQLite is run in one of reduced mutex modes
 ** [SQLITE_CONFIG_SINGLETHREAD] or [SQLITE_CONFIG_MULTITHREAD]
 ** then there is no distinction between protected and unprotected
 ** sqlite3_value objects and they can be used interchangeably.  However,
@@ -3724,7 +3724,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
 ** nArg parameter is a better match than a function implementation with
 ** a negative nArg.  ^A function where the preferred text encoding
 ** matches the database encoding is a better
-** match than a function where the encoding is different.  
+** match than a function where the encoding is different.
 ** ^A function where the encoding difference is between UTF16le and UTF16be
 ** is a closer match than a function where the encoding difference is
 ** between UTF8 and UTF16.
@@ -3732,7 +3732,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
 ** ^Built-in functions may be overloaded by new application-defined functions.
 ** ^The first application-defined function with a given name overrides all
 ** built-in functions in the same [database connection] with the same name.
-** ^Subsequent application-defined functions of the same name only override 
+** ^Subsequent application-defined functions of the same name only override
 ** prior application-defined functions that are an exact match for the
 ** number of parameters and preferred encoding.
 **
@@ -3780,7 +3780,7 @@ SQLITE_API int sqlite3_create_function16(
 ** DEPRECATED
 **
 ** These functions are [deprecated].  In order to maintain
-** backwards compatibility with older code, these functions continue 
+** backwards compatibility with older code, these functions continue
 ** to be supported.  However, new applications should avoid
 ** the use of these functions.  To help encourage people to avoid
 ** using these functions, we are not going to tell you what they do.
@@ -3858,7 +3858,7 @@ SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
 ** Implementions of aggregate SQL functions use this
 ** routine to allocate memory for storing their state.
 **
-** ^The first time the sqlite3_aggregate_context(C,N) routine is called 
+** ^The first time the sqlite3_aggregate_context(C,N) routine is called
 ** for a particular aggregate function, SQLite
 ** allocates N of memory, zeroes out that memory, and returns a pointer
 ** to the new memory. ^On second and subsequent calls to
@@ -3880,7 +3880,7 @@ SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
 ** the same aggregate function instance will not resize the memory
 ** allocation.)^
 **
-** ^SQLite automatically frees the memory allocated by 
+** ^SQLite automatically frees the memory allocated by
 ** sqlite3_aggregate_context() when the aggregate query concludes.
 **
 ** The first parameter must be a copy of the
@@ -4151,24 +4151,24 @@ SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n);
 ** See also:  [sqlite3_collation_needed()] and [sqlite3_collation_needed16()].
 */
 SQLITE_API int sqlite3_create_collation(
-  sqlite3*, 
-  const char *zName, 
-  int eTextRep, 
+  sqlite3*,
+  const char *zName,
+  int eTextRep,
   void*,
   int(*xCompare)(void*,int,const void*,int,const void*)
 );
 SQLITE_API int sqlite3_create_collation_v2(
-  sqlite3*, 
-  const char *zName, 
-  int eTextRep, 
+  sqlite3*,
+  const char *zName,
+  int eTextRep,
   void*,
   int(*xCompare)(void*,int,const void*,int,const void*),
   void(*xDestroy)(void*)
 );
 SQLITE_API int sqlite3_create_collation16(
-  sqlite3*, 
+  sqlite3*,
   const void *zName,
-  int eTextRep, 
+  int eTextRep,
   void*,
   int(*xCompare)(void*,int,const void*,int,const void*)
 );
@@ -4200,12 +4200,12 @@ SQLITE_API int sqlite3_create_collation16(
 ** [sqlite3_create_collation_v2()].
 */
 SQLITE_API int sqlite3_collation_needed(
-  sqlite3*, 
-  void*, 
+  sqlite3*,
+  void*,
   void(*)(void*,sqlite3*,int eTextRep,const char*)
 );
 SQLITE_API int sqlite3_collation_needed16(
-  sqlite3*, 
+  sqlite3*,
   void*,
   void(*)(void*,sqlite3*,int eTextRep,const void*)
 );
@@ -4237,7 +4237,7 @@ SQLITE_API int sqlite3_rekey(
 );
 
 /*
-** Specify the activation key for a SEE database.  Unless 
+** Specify the activation key for a SEE database.  Unless
 ** activated, none of the SEE routines will work.
 */
 SQLITE_API void sqlite3_activate_see(
@@ -4247,7 +4247,7 @@ SQLITE_API void sqlite3_activate_see(
 
 #ifdef SQLITE_ENABLE_CEROD
 /*
-** Specify the activation key for a CEROD database.  Unless 
+** Specify the activation key for a CEROD database.  Unless
 ** activated, none of the CEROD routines will work.
 */
 SQLITE_API void sqlite3_activate_cerod(
@@ -4293,7 +4293,7 @@ SQLITE_API int sqlite3_sleep(int);
 ** ^The [temp_store_directory pragma] may modify this variable and cause
 ** it to point to memory obtained from [sqlite3_malloc].  ^Furthermore,
 ** the [temp_store_directory pragma] always assumes that any string
-** that this variable points to is held in memory obtained from 
+** that this variable points to is held in memory obtained from
 ** [sqlite3_malloc] and the pragma may attempt to free that memory
 ** using [sqlite3_free].
 ** Hence, if this variable is modified directly, either it should be
@@ -4448,7 +4448,7 @@ SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
 ** interfaces.
 */
 SQLITE_API void *sqlite3_update_hook(
-  sqlite3*, 
+  sqlite3*,
   void(*)(void *,int ,char const *,char const *,sqlite3_int64),
   void*
 );
@@ -4703,8 +4703,8 @@ typedef struct sqlite3_module sqlite3_module;
 ** KEYWORDS: sqlite3_module {virtual table module}
 ** EXPERIMENTAL
 **
-** This structure, sometimes called a a "virtual table module", 
-** defines the implementation of a [virtual tables].  
+** This structure, sometimes called a a "virtual table module",
+** defines the implementation of a [virtual tables].
 ** This structure consists mostly of methods for the module.
 **
 ** ^A virtual table module is created by filling in a persistent
@@ -4838,7 +4838,7 @@ struct sqlite3_index_info {
 ** preexisting [virtual table] for the module.
 **
 ** ^The module name is registered on the [database connection] specified
-** by the first parameter.  ^The name of the module is given by the 
+** by the first parameter.  ^The name of the module is given by the
 ** second parameter.  ^The third parameter is a pointer to
 ** the implementation of the [virtual table module].   ^The fourth
 ** parameter is an arbitrary client data pointer that is passed through
@@ -4931,7 +4931,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_declare_vtab(sqlite3*, const char *zS
 ** EXPERIMENTAL
 **
 ** ^(Virtual tables can provide alternative implementations of functions
-** using the [xFindFunction] method of the [virtual table module].  
+** using the [xFindFunction] method of the [virtual table module].
 ** But global versions of those functions
 ** must exist in order to be overloaded.)^
 **
@@ -4984,8 +4984,8 @@ typedef struct sqlite3_blob sqlite3_blob;
 **
 ** ^If the flags parameter is non-zero, then the BLOB is opened for read
 ** and write access. ^If it is zero, the BLOB is opened for read access.
-** ^It is not possible to open a column that is part of an index or primary 
-** key for writing. ^If [foreign key constraints] are enabled, it is 
+** ^It is not possible to open a column that is part of an index or primary
+** key for writing. ^If [foreign key constraints] are enabled, it is
 ** not possible to open a column that is part of a [child key] for writing.
 **
 ** ^Note that the database name is not the filename that contains
@@ -5064,7 +5064,7 @@ SQLITE_API int sqlite3_blob_close(sqlite3_blob *);
 /*
 ** CAPI3REF: Return The Size Of An Open BLOB
 **
-** ^Returns the size in bytes of the BLOB accessible via the 
+** ^Returns the size in bytes of the BLOB accessible via the
 ** successfully opened [BLOB handle] in its only argument.  ^The
 ** incremental blob I/O routines can only read or overwriting existing
 ** blob content; they cannot change the size of a blob.
@@ -5431,7 +5431,7 @@ SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*);
 /*
 ** CAPI3REF: Retrieve the mutex for a database connection
 **
-** ^This interface returns a pointer the [sqlite3_mutex] object that 
+** ^This interface returns a pointer the [sqlite3_mutex] object that
 ** serializes access to the [database connection] given in the argument
 ** when the [threading mode] is Serialized.
 ** ^If the [threading mode] is Single-thread or Multi-thread then this
@@ -5567,12 +5567,12 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pH
 ** <dd>This parameter records the largest memory allocation request
 ** handed to [sqlite3_malloc()] or [sqlite3_realloc()] (or their
 ** internal equivalents).  Only the value returned in the
-** *pHighwater parameter to [sqlite3_status()] is of interest.  
+** *pHighwater parameter to [sqlite3_status()] is of interest.
 ** The value written into the *pCurrent parameter is undefined.</dd>)^
 **
 ** ^(<dt>SQLITE_STATUS_PAGECACHE_USED</dt>
 ** <dd>This parameter returns the number of pages used out of the
-** [pagecache memory allocator] that was configured using 
+** [pagecache memory allocator] that was configured using
 ** [SQLITE_CONFIG_PAGECACHE].  The
 ** value returned is in pages, not in bytes.</dd>)^
 **
@@ -5588,7 +5588,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pH
 ** ^(<dt>SQLITE_STATUS_PAGECACHE_SIZE</dt>
 ** <dd>This parameter records the largest memory allocation request
 ** handed to [pagecache memory allocator].  Only the value returned in the
-** *pHighwater parameter to [sqlite3_status()] is of interest.  
+** *pHighwater parameter to [sqlite3_status()] is of interest.
 ** The value written into the *pCurrent parameter is undefined.</dd>)^
 **
 ** ^(<dt>SQLITE_STATUS_SCRATCH_USED</dt>
@@ -5612,7 +5612,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pH
 ** ^(<dt>SQLITE_STATUS_SCRATCH_SIZE</dt>
 ** <dd>This parameter records the largest memory allocation request
 ** handed to [scratch memory allocator].  Only the value returned in the
-** *pHighwater parameter to [sqlite3_status()] is of interest.  
+** *pHighwater parameter to [sqlite3_status()] is of interest.
 ** The value written into the *pCurrent parameter is undefined.</dd>)^
 **
 ** ^(<dt>SQLITE_STATUS_PARSER_STACK</dt>
@@ -5636,7 +5636,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pH
 ** CAPI3REF: Database Connection Status
 ** EXPERIMENTAL
 **
-** ^This interface is used to retrieve runtime status information 
+** ^This interface is used to retrieve runtime status information
 ** about a single [database connection].  ^The first argument is the
 ** database connection object to be interrogated.  ^The second argument
 ** is the parameter to interrogate.  ^Currently, the only allowed value
@@ -5685,7 +5685,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_db_status(sqlite3*, int op, int *pCur
 ** statements.  For example, if the number of table steps greatly exceeds
 ** the number of table searches or result rows, that would tend to indicate
 ** that the prepared statement is using a full table scan rather than
-** an index.  
+** an index.
 **
 ** ^(This interface is used to retrieve and reset counter values from
 ** a [prepared statement].  The first argument is the prepared statement
@@ -5712,7 +5712,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_stmt_status(sqlite3_stmt*, int op,int
 ** <dt>SQLITE_STMTSTATUS_FULLSCAN_STEP</dt>
 ** <dd>^This is the number of times that SQLite has stepped forward in
 ** a table as part of a full table scan.  Large numbers for this counter
-** may indicate opportunities for performance improvement through 
+** may indicate opportunities for performance improvement through
 ** careful use of indices.</dd>
 **
 ** <dt>SQLITE_STMTSTATUS_SORT</dt>
@@ -5745,14 +5745,14 @@ typedef struct sqlite3_pcache sqlite3_pcache;
 ** EXPERIMENTAL
 **
 ** ^(The [sqlite3_config]([SQLITE_CONFIG_PCACHE], ...) interface can
-** register an alternative page cache implementation by passing in an 
-** instance of the sqlite3_pcache_methods structure.)^ The majority of the 
-** heap memory used by SQLite is used by the page cache to cache data read 
-** from, or ready to be written to, the database file. By implementing a 
-** custom page cache using this API, an application can control more 
-** precisely the amount of memory consumed by SQLite, the way in which 
-** that memory is allocated and released, and the policies used to 
-** determine exactly which parts of a database file are cached and for 
+** register an alternative page cache implementation by passing in an
+** instance of the sqlite3_pcache_methods structure.)^ The majority of the
+** heap memory used by SQLite is used by the page cache to cache data read
+** from, or ready to be written to, the database file. By implementing a
+** custom page cache using this API, an application can control more
+** precisely the amount of memory consumed by SQLite, the way in which
+** that memory is allocated and released, and the policies used to
+** determine exactly which parts of a database file are cached and for
 ** how long.
 **
 ** ^(The contents of the sqlite3_pcache_methods structure are copied to an
@@ -5764,10 +5764,10 @@ typedef struct sqlite3_pcache sqlite3_pcache;
 ** (usually only once during the lifetime of the process). ^(The xInit()
 ** method is passed a copy of the sqlite3_pcache_methods.pArg value.)^
 ** ^The xInit() method can set up up global structures and/or any mutexes
-** required by the custom page cache implementation. 
+** required by the custom page cache implementation.
 **
-** ^The xShutdown() method is called from within [sqlite3_shutdown()], 
-** if the application invokes this API. It can be used to clean up 
+** ^The xShutdown() method is called from within [sqlite3_shutdown()],
+** if the application invokes this API. It can be used to clean up
 ** any outstanding resources before process shutdown, if required.
 **
 ** ^SQLite holds a [SQLITE_MUTEX_RECURSIVE] mutex when it invokes
@@ -5808,11 +5808,11 @@ typedef struct sqlite3_pcache sqlite3_pcache;
 **
 ** ^The xPagecount() method should return the number of pages currently
 ** stored in the cache.
-** 
-** ^The xFetch() method is used to fetch a page and return a pointer to it. 
+**
+** ^The xFetch() method is used to fetch a page and return a pointer to it.
 ** ^A 'page', in this context, is a buffer of szPage bytes aligned at an
 ** 8-byte boundary. ^The page to be fetched is determined by the key. ^The
-** mimimum key value is 1. After it has been retrieved using xFetch, the page 
+** mimimum key value is 1. After it has been retrieved using xFetch, the page
 ** is considered to be "pinned".
 **
 ** ^If the requested page is already in the page cache, then the page cache
@@ -5839,14 +5839,14 @@ typedef struct sqlite3_pcache sqlite3_pcache;
 **
 ** ^xUnpin() is called by SQLite with a pointer to a currently pinned page
 ** as its second argument. ^(If the third parameter, discard, is non-zero,
-** then the page should be evicted from the cache. In this case SQLite 
+** then the page should be evicted from the cache. In this case SQLite
 ** assumes that the next time the page is retrieved from the cache using
 ** the xFetch() method, it will be zeroed.)^ ^If the discard parameter is
 ** zero, then the page is considered to be unpinned. ^The cache implementation
 ** may choose to evict unpinned pages at any time.
 **
-** ^(The cache is not required to perform any reference counting. A single 
-** call to xUnpin() unpins the page regardless of the number of prior calls 
+** ^(The cache is not required to perform any reference counting. A single
+** call to xUnpin() unpins the page regardless of the number of prior calls
 ** to xFetch().)^
 **
 ** ^The xRekey() method is used to change the key value associated with the
@@ -5901,38 +5901,38 @@ typedef struct sqlite3_backup sqlite3_backup;
 **
 ** The backup API copies the content of one database into another.
 ** It is useful either for creating backups of databases or
-** for copying in-memory databases to or from persistent files. 
+** for copying in-memory databases to or from persistent files.
 **
 ** See Also: [Using the SQLite Online Backup API]
 **
-** ^Exclusive access is required to the destination database for the 
+** ^Exclusive access is required to the destination database for the
 ** duration of the operation. ^However the source database is only
 ** read-locked while it is actually being read; it is not locked
 ** continuously for the entire backup operation. ^Thus, the backup may be
 ** performed on a live source database without preventing other users from
 ** reading or writing to the source database while the backup is underway.
-** 
-** ^(To perform a backup operation: 
+**
+** ^(To perform a backup operation:
 **   <ol>
 **     <li><b>sqlite3_backup_init()</b> is called once to initialize the
-**         backup, 
-**     <li><b>sqlite3_backup_step()</b> is called one or more times to transfer 
+**         backup,
+**     <li><b>sqlite3_backup_step()</b> is called one or more times to transfer
 **         the data between the two databases, and finally
-**     <li><b>sqlite3_backup_finish()</b> is called to release all resources 
-**         associated with the backup operation. 
+**     <li><b>sqlite3_backup_finish()</b> is called to release all resources
+**         associated with the backup operation.
 **   </ol>)^
 ** There should be exactly one call to sqlite3_backup_finish() for each
 ** successful call to sqlite3_backup_init().
 **
 ** <b>sqlite3_backup_init()</b>
 **
-** ^The D and N arguments to sqlite3_backup_init(D,N,S,M) are the 
-** [database connection] associated with the destination database 
+** ^The D and N arguments to sqlite3_backup_init(D,N,S,M) are the
+** [database connection] associated with the destination database
 ** and the database name, respectively.
 ** ^The database name is "main" for the main database, "temp" for the
 ** temporary database, or the name specified after the AS keyword in
 ** an [ATTACH] statement for an attached database.
-** ^The S and M arguments passed to 
+** ^The S and M arguments passed to
 ** sqlite3_backup_init(D,N,S,M) identify the [database connection]
 ** and database name of the source database, respectively.
 ** ^The source and destination [database connections] (parameters S and D)
@@ -5948,14 +5948,14 @@ typedef struct sqlite3_backup sqlite3_backup;
 ** ^A successful call to sqlite3_backup_init() returns a pointer to an
 ** [sqlite3_backup] object.
 ** ^The [sqlite3_backup] object may be used with the sqlite3_backup_step() and
-** sqlite3_backup_finish() functions to perform the specified backup 
+** sqlite3_backup_finish() functions to perform the specified backup
 ** operation.
 **
 ** <b>sqlite3_backup_step()</b>
 **
-** ^Function sqlite3_backup_step(B,N) will copy up to N pages between 
+** ^Function sqlite3_backup_step(B,N) will copy up to N pages between
 ** the source and destination databases specified by [sqlite3_backup] object B.
-** ^If N is negative, all remaining source pages are copied. 
+** ^If N is negative, all remaining source pages are copied.
 ** ^If sqlite3_backup_step(B,N) successfully copies N pages and there
 ** are still more pages to be copied, then the function resturns [SQLITE_OK].
 ** ^If sqlite3_backup_step(B,N) successfully finishes copying all pages
@@ -5973,8 +5973,8 @@ typedef struct sqlite3_backup sqlite3_backup;
 **
 ** ^If sqlite3_backup_step() cannot obtain a required file-system lock, then
 ** the [sqlite3_busy_handler | busy-handler function]
-** is invoked (if one is specified). ^If the 
-** busy-handler returns non-zero before the lock is available, then 
+** is invoked (if one is specified). ^If the
+** busy-handler returns non-zero before the lock is available, then
 ** [SQLITE_BUSY] is returned to the caller. ^In this case the call to
 ** sqlite3_backup_step() can be retried later. ^If the source
 ** [database connection]
@@ -5982,15 +5982,15 @@ typedef struct sqlite3_backup sqlite3_backup;
 ** is called, then [SQLITE_LOCKED] is returned immediately. ^Again, in this
 ** case the call to sqlite3_backup_step() can be retried later on. ^(If
 ** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX], [SQLITE_NOMEM], or
-** [SQLITE_READONLY] is returned, then 
-** there is no point in retrying the call to sqlite3_backup_step(). These 
-** errors are considered fatal.)^  The application must accept 
-** that the backup operation has failed and pass the backup operation handle 
+** [SQLITE_READONLY] is returned, then
+** there is no point in retrying the call to sqlite3_backup_step(). These
+** errors are considered fatal.)^  The application must accept
+** that the backup operation has failed and pass the backup operation handle
 ** to the sqlite3_backup_finish() to release associated resources.
 **
 ** ^The first call to sqlite3_backup_step() obtains an exclusive lock
-** on the destination file. ^The exclusive lock is not released until either 
-** sqlite3_backup_finish() is called or the backup operation is complete 
+** on the destination file. ^The exclusive lock is not released until either
+** sqlite3_backup_finish() is called or the backup operation is complete
 ** and sqlite3_backup_step() returns [SQLITE_DONE].  ^Every call to
 ** sqlite3_backup_step() obtains a [shared lock] on the source database that
 ** lasts for the duration of the sqlite3_backup_step() call.
@@ -5999,18 +5999,18 @@ typedef struct sqlite3_backup sqlite3_backup;
 ** through the backup process.  ^If the source database is modified by an
 ** external process or via a database connection other than the one being
 ** used by the backup operation, then the backup will be automatically
-** restarted by the next call to sqlite3_backup_step(). ^If the source 
+** restarted by the next call to sqlite3_backup_step(). ^If the source
 ** database is modified by the using the same database connection as is used
 ** by the backup operation, then the backup database is automatically
 ** updated at the same time.
 **
 ** <b>sqlite3_backup_finish()</b>
 **
-** When sqlite3_backup_step() has returned [SQLITE_DONE], or when the 
+** When sqlite3_backup_step() has returned [SQLITE_DONE], or when the
 ** application wishes to abandon the backup operation, the application
 ** should destroy the [sqlite3_backup] by passing it to sqlite3_backup_finish().
 ** ^The sqlite3_backup_finish() interfaces releases all
-** resources associated with the [sqlite3_backup] object. 
+** resources associated with the [sqlite3_backup] object.
 ** ^If sqlite3_backup_step() has not yet returned [SQLITE_DONE], then any
 ** active write-transaction on the destination database is rolled back.
 ** The [sqlite3_backup] object is invalid
@@ -6049,8 +6049,8 @@ typedef struct sqlite3_backup sqlite3_backup;
 ** connections, then the source database connection may be used concurrently
 ** from within other threads.
 **
-** However, the application must guarantee that the destination 
-** [database connection] is not passed to any other API (by any thread) after 
+** However, the application must guarantee that the destination
+** [database connection] is not passed to any other API (by any thread) after
 ** sqlite3_backup_init() is called and before the corresponding call to
 ** sqlite3_backup_finish().  SQLite does not currently check to see
 ** if the application incorrectly accesses the destination [database connection]
@@ -6061,11 +6061,11 @@ typedef struct sqlite3_backup sqlite3_backup;
 ** If running in [shared cache mode], the application must
 ** guarantee that the shared cache used by the destination database
 ** is not accessed while the backup is running. In practice this means
-** that the application must guarantee that the disk file being 
+** that the application must guarantee that the disk file being
 ** backed up to is not accessed by any connection within the process,
 ** not just the specific connection that was passed to sqlite3_backup_init().
 **
-** The [sqlite3_backup] object itself is partially threadsafe. Multiple 
+** The [sqlite3_backup] object itself is partially threadsafe. Multiple
 ** threads may safely make multiple concurrent calls to sqlite3_backup_step().
 ** However, the sqlite3_backup_remaining() and sqlite3_backup_pagecount()
 ** APIs are not strictly speaking threadsafe. If they are invoked at the
@@ -6090,8 +6090,8 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 ** ^When running in shared-cache mode, a database operation may fail with
 ** an [SQLITE_LOCKED] error if the required locks on the shared-cache or
 ** individual tables within the shared-cache cannot be obtained. See
-** [SQLite Shared-Cache Mode] for a description of shared-cache locking. 
-** ^This API may be used to register a callback that SQLite will invoke 
+** [SQLite Shared-Cache Mode] for a description of shared-cache locking.
+** ^This API may be used to register a callback that SQLite will invoke
 ** when the connection currently holding the required lock relinquishes it.
 ** ^This API is only available if the library was compiled with the
 ** [SQLITE_ENABLE_UNLOCK_NOTIFY] C-preprocessor symbol defined.
@@ -6099,14 +6099,14 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 ** See Also: [Using the SQLite Unlock Notification Feature].
 **
 ** ^Shared-cache locks are released when a database connection concludes
-** its current transaction, either by committing it or rolling it back. 
+** its current transaction, either by committing it or rolling it back.
 **
 ** ^When a connection (known as the blocked connection) fails to obtain a
 ** shared-cache lock and SQLITE_LOCKED is returned to the caller, the
 ** identity of the database connection (the blocking connection) that
-** has locked the required resource is stored internally. ^After an 
+** has locked the required resource is stored internally. ^After an
 ** application receives an SQLITE_LOCKED error, it may call the
-** sqlite3_unlock_notify() method with the blocked connection handle as 
+** sqlite3_unlock_notify() method with the blocked connection handle as
 ** the first argument to register for a callback that will be invoked
 ** when the blocking connections current transaction is concluded. ^The
 ** callback is invoked from within the [sqlite3_step] or [sqlite3_close]
@@ -6120,15 +6120,15 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 **
 ** ^If the blocked connection is attempting to obtain a write-lock on a
 ** shared-cache table, and more than one other connection currently holds
-** a read-lock on the same table, then SQLite arbitrarily selects one of 
+** a read-lock on the same table, then SQLite arbitrarily selects one of
 ** the other connections to use as the blocking connection.
 **
-** ^(There may be at most one unlock-notify callback registered by a 
+** ^(There may be at most one unlock-notify callback registered by a
 ** blocked connection. If sqlite3_unlock_notify() is called when the
 ** blocked connection already has a registered unlock-notify callback,
 ** then the new callback replaces the old.)^ ^If sqlite3_unlock_notify() is
 ** called with a NULL pointer as its second argument, then any existing
-** unlock-notify callback is cancelled. ^The blocked connections 
+** unlock-notify callback is cancelled. ^The blocked connections
 ** unlock-notify callback may also be canceled by closing the blocked
 ** connection using [sqlite3_close()].
 **
@@ -6141,7 +6141,7 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 **
 ** <b>Callback Invocation Details</b>
 **
-** When an unlock-notify callback is registered, the application provides a 
+** When an unlock-notify callback is registered, the application provides a
 ** single void* pointer that is passed to the callback when it is invoked.
 ** However, the signature of the callback function allows SQLite to pass
 ** it an array of void* context pointers. The first argument passed to
@@ -6154,12 +6154,12 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 ** same callback function, then instead of invoking the callback function
 ** multiple times, it is invoked once with the set of void* context pointers
 ** specified by the blocked connections bundled together into an array.
-** This gives the application an opportunity to prioritize any actions 
+** This gives the application an opportunity to prioritize any actions
 ** related to the set of unblocked database connections.
 **
 ** <b>Deadlock Detection</b>
 **
-** Assuming that after registering for an unlock-notify callback a 
+** Assuming that after registering for an unlock-notify callback a
 ** database waits for the callback to be issued before taking any further
 ** action (a reasonable assumption), then using this API may cause the
 ** application to deadlock. For example, if connection X is waiting for
@@ -6182,7 +6182,7 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 **
 ** <b>The "DROP TABLE" Exception</b>
 **
-** When a call to [sqlite3_step()] returns SQLITE_LOCKED, it is almost 
+** When a call to [sqlite3_step()] returns SQLITE_LOCKED, it is almost
 ** always appropriate to call sqlite3_unlock_notify(). There is however,
 ** one exception. When executing a "DROP TABLE" or "DROP INDEX" statement,
 ** SQLite checks if there are any currently executing SELECT statements
@@ -6195,7 +6195,7 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 ** One way around this problem is to check the extended error code returned
 ** by an sqlite3_step() call. ^(If there is a blocking connection, then the
 ** extended error code is set to SQLITE_LOCKED_SHAREDCACHE. Otherwise, in
-** the special "DROP TABLE/INDEX" case, the extended error code is just 
+** the special "DROP TABLE/INDEX" case, the extended error code is just
 ** SQLITE_LOCKED.)^
 */
 SQLITE_API int sqlite3_unlock_notify(
@@ -6211,7 +6211,7 @@ SQLITE_API int sqlite3_unlock_notify(
 **
 ** ^The [sqlite3_strnicmp()] API allows applications and extensions to
 ** compare the contents of two buffers containing UTF-8 strings in a
-** case-indendent fashion, using the same definition of case independence 
+** case-indendent fashion, using the same definition of case independence
 ** that SQLite uses internally when comparing identifiers.
 */
 SQLITE_API int sqlite3_strnicmp(const char *, const char *, int);
@@ -6295,7 +6295,7 @@ typedef struct HashElem HashElem;
 ** element pointed to plus the next _ht.count-1 elements in the list.
 **
 ** Hash.htsize and Hash.ht may be zero.  In that case lookup is done
-** by a linear search of the global list.  For small tables, the 
+** by a linear search of the global list.  For small tables, the
 ** Hash.ht table is never allocated because if there are few elements
 ** in the table, it is faster to do a linear search than to manage
 ** the hash table.
@@ -6310,7 +6310,7 @@ struct Hash {
   } *ht;
 };
 
-/* Each element in the hash table is an instance of the following 
+/* Each element in the hash table is an instance of the following
 ** structure.  All elements are stored on a single doubly-linked list.
 **
 ** Again, this structure is intended to be opaque, but it can't really
@@ -6546,7 +6546,7 @@ SQLITE_PRIVATE void sqlite3HashClear(Hash*);
 
 /*
 ** OMIT_TEMPDB is set to 1 if SQLITE_OMIT_TEMPDB is defined, or 0
-** afterward. Having this macro allows us to cause the C compiler 
+** afterward. Having this macro allows us to cause the C compiler
 ** to omit code used by TEMP tables without messy #ifndef statements.
 */
 #ifdef SQLITE_OMIT_TEMPDB
@@ -6689,7 +6689,7 @@ SQLITE_PRIVATE const int sqlite3one;
 #define LARGEST_INT64  (0xffffffff|(((i64)0x7fffffff)<<32))
 #define SMALLEST_INT64 (((i64)-1) - LARGEST_INT64)
 
-/* 
+/*
 ** Round up a number to the next larger multiple of 8.  This is used
 ** to force 8-byte alignment on 64-bit architectures.
 */
@@ -6718,7 +6718,7 @@ SQLITE_PRIVATE const int sqlite3one;
 
 /*
 ** An instance of the following structure is used to store the busy-handler
-** callback for a given sqlite handle. 
+** callback for a given sqlite handle.
 **
 ** The sqlite.busyHandler member of the sqlite struct contains the busy
 ** callback for the database handle. Each pager opened via the sqlite
@@ -6783,16 +6783,16 @@ struct BusyHandler {
 SQLITE_API   int sqlite3_wsd_init(int N, int J);
 SQLITE_API   void *sqlite3_wsd_find(void *K, int L);
 #else
-  #define SQLITE_WSD 
+  #define SQLITE_WSD
   #define GLOBAL(t,v) v
   #define sqlite3GlobalConfig sqlite3Config
 #endif
 
 /*
 ** The following macros are used to suppress compiler warnings and to
-** make it clear to human readers when a function parameter is deliberately 
+** make it clear to human readers when a function parameter is deliberately
 ** left unused within the body of a function. This usually happens when
-** a function is called via a function pointer. For example the 
+** a function is called via a function pointer. For example the
 ** implementation of an SQL aggregate step callback may not use the
 ** parameter indicating the number of arguments passed to the aggregate,
 ** if it knows that this is enforced elsewhere.
@@ -6853,7 +6853,7 @@ typedef struct WhereInfo WhereInfo;
 typedef struct WhereLevel WhereLevel;
 
 /*
-** Defer sourcing vdbe.h and btree.h until after the "u8" and 
+** Defer sourcing vdbe.h and btree.h until after the "u8" and
 ** "BusyHandler" typedefs. vdbe.h also requires a few of the opaque
 ** pointer types (i.e. FuncDef) defined above.
 */
@@ -6983,7 +6983,7 @@ SQLITE_PRIVATE int sqlite3BtreeUpdateMeta(Btree*, int idx, u32 value);
 
 /*
 ** The second parameter to sqlite3BtreeGetMeta or sqlite3BtreeUpdateMeta
-** should be one of the following values. The integer values are assigned 
+** should be one of the following values. The integer values are assigned
 ** to constants so that the offset of the corresponding field in an
 ** SQLite database header may be found using the following formula:
 **
@@ -7068,7 +7068,7 @@ SQLITE_PRIVATE void sqlite3BtreeCursorList(Btree*);
 SQLITE_PRIVATE   void sqlite3BtreeEnter(Btree*);
 SQLITE_PRIVATE   void sqlite3BtreeEnterAll(sqlite3*);
 #else
-# define sqlite3BtreeEnter(X) 
+# define sqlite3BtreeEnter(X)
 # define sqlite3BtreeEnterAll(X)
 #endif
 
@@ -7235,7 +7235,7 @@ typedef struct VdbeOpList VdbeOpList;
 #define P4_KEYINFO_STATIC  (-17)
 
 /*
-** The Vdbe.aColName array contains 5n Mem structures, where n is the 
+** The Vdbe.aColName array contains 5n Mem structures, where n is the
 ** number of columns of data returned by the statement.
 */
 #define COLNAME_NAME     0
@@ -7255,7 +7255,7 @@ typedef struct VdbeOpList VdbeOpList;
 
 /*
 ** The following macro converts a relative address in the p2 field
-** of a VdbeOp structure into a negative number so that 
+** of a VdbeOp structure into a negative number so that
 ** sqlite3VdbeAddOpList() knows that the address is relative.  Calling
 ** the macro again restores the address.
 */
@@ -7542,8 +7542,8 @@ SQLITE_PRIVATE   void sqlite3VdbeNoopComment(Vdbe*, const char*, ...);
 #define _PAGER_H_
 
 /*
-** Default maximum size for persistent journal files. A negative 
-** value means no limit. This value may be overridden using the 
+** Default maximum size for persistent journal files. A negative
+** value means no limit. This value may be overridden using the
 ** sqlite3PagerJournalSizeLimit() API. See also "PRAGMA journal_size_limit".
 */
 #ifndef SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT
@@ -7569,9 +7569,9 @@ typedef struct PgHdr DbPage;
 /*
 ** Page number PAGER_MJ_PGNO is never used in an SQLite database (it is
 ** reserved for working around a windows/posix incompatibility). It is
-** used in the journal to signify that the remainder of the journal file 
+** used in the journal to signify that the remainder of the journal file
 ** is devoted to storing a master journal name - there are no more pages to
-** roll back. See comments for function writeMasterJournal() in pager.c 
+** roll back. See comments for function writeMasterJournal() in pager.c
 ** for details.
 */
 #define PAGER_MJ_PGNO(x) ((Pgno)((PENDING_BYTE/((x)->pageSize))+1))
@@ -7603,11 +7603,11 @@ typedef struct PgHdr DbPage;
 
 /*
 ** The remainder of this file contains the declarations of the functions
-** that make up the Pager sub-system API. See source code comments for 
+** that make up the Pager sub-system API. See source code comments for
 ** a detailed description of each routine.
 */
 
-/* Open and close a Pager connection. */ 
+/* Open and close a Pager connection. */
 SQLITE_PRIVATE int sqlite3PagerOpen(
   sqlite3_vfs*,
   Pager **ppPager,
@@ -7631,7 +7631,7 @@ SQLITE_PRIVATE int sqlite3PagerJournalMode(Pager *, int);
 SQLITE_PRIVATE i64 sqlite3PagerJournalSizeLimit(Pager *, i64);
 SQLITE_PRIVATE sqlite3_backup **sqlite3PagerBackupPtr(Pager*);
 
-/* Functions used to obtain and release page references. */ 
+/* Functions used to obtain and release page references. */
 SQLITE_PRIVATE int sqlite3PagerAcquire(Pager *pPager, Pgno pgno, DbPage **ppPage, int clrFlag);
 #define sqlite3PagerGet(A,B,C) sqlite3PagerAcquire(A,B,C,0)
 SQLITE_PRIVATE DbPage *sqlite3PagerLookup(Pager *pPager, Pgno pgno);
@@ -7643,8 +7643,8 @@ SQLITE_PRIVATE int sqlite3PagerWrite(DbPage*);
 SQLITE_PRIVATE void sqlite3PagerDontWrite(DbPage*);
 SQLITE_PRIVATE int sqlite3PagerMovepage(Pager*,DbPage*,Pgno,int);
 SQLITE_PRIVATE int sqlite3PagerPageRefcount(DbPage*);
-SQLITE_PRIVATE void *sqlite3PagerGetData(DbPage *); 
-SQLITE_PRIVATE void *sqlite3PagerGetExtra(DbPage *); 
+SQLITE_PRIVATE void *sqlite3PagerGetData(DbPage *);
+SQLITE_PRIVATE void *sqlite3PagerGetExtra(DbPage *);
 
 /* Functions used to manage pager transactions and savepoints. */
 SQLITE_PRIVATE int sqlite3PagerPagecount(Pager*, int*);
@@ -7704,7 +7704,7 @@ SQLITE_PRIVATE   void sqlite3PagerRefdump(Pager*);
 **
 *************************************************************************
 ** This header file defines the interface that the sqlite page cache
-** subsystem. 
+** subsystem.
 */
 
 #ifndef _PCACHE_H_
@@ -7777,7 +7777,7 @@ SQLITE_PRIVATE void sqlite3PcacheSetPageSize(PCache *, int);
 SQLITE_PRIVATE int sqlite3PcacheSize(void);
 
 /* One release per successful fetch.  Page is pinned until released.
-** Reference counted. 
+** Reference counted.
 */
 SQLITE_PRIVATE int sqlite3PcacheFetch(PCache*, Pgno, int createFlag, PgHdr**);
 SQLITE_PRIVATE void sqlite3PcacheRelease(PgHdr*);
@@ -7818,7 +7818,7 @@ SQLITE_PRIVATE int sqlite3PcachePagecount(PCache*);
 
 #if defined(SQLITE_CHECK_PAGES) || defined(SQLITE_DEBUG)
 /* Iterate through all dirty pages currently stored in the cache. This
-** interface is only available if SQLITE_CHECK_PAGES is defined when the 
+** interface is only available if SQLITE_CHECK_PAGES is defined when the
 ** library is built.
 */
 SQLITE_PRIVATE void sqlite3PcacheIterateDirty(PCache *pCache, void (*xIter)(PgHdr *));
@@ -7878,8 +7878,8 @@ SQLITE_PRIVATE void sqlite3PCacheSetDefault(void);
 /*
 ** Figure out if we are dealing with Unix, Windows, or some other
 ** operating system.  After the following block of preprocess macros,
-** all of SQLITE_OS_UNIX, SQLITE_OS_WIN, SQLITE_OS_OS2, and SQLITE_OS_OTHER 
-** will defined to either 1 or 0.  One of the four will be 1.  The other 
+** all of SQLITE_OS_UNIX, SQLITE_OS_WIN, SQLITE_OS_OS2, and SQLITE_OS_OTHER
+** will defined to either 1 or 0.  One of the four will be 1.  The other
 ** three will be 0.
 */
 #if defined(SQLITE_OS_OTHER)
@@ -7981,10 +7981,10 @@ SQLITE_PRIVATE void sqlite3PCacheSetDefault(void);
 ** 2006-10-31:  The default prefix used to be "sqlite_".  But then
 ** Mcafee started using SQLite in their anti-virus product and it
 ** started putting files with the "sqlite" name in the c:/temp folder.
-** This annoyed many windows users.  Those users would then do a 
+** This annoyed many windows users.  Those users would then do a
 ** Google search for "sqlite", find the telephone numbers of the
 ** developers and call to wake them up at night and complain.
-** For this reason, the default name prefix is changed to be "sqlite" 
+** For this reason, the default name prefix is changed to be "sqlite"
 ** spelled backwards.  So the temp files are still identified, but
 ** anybody smart enough to figure out the code is also likely smart
 ** enough to know that calling the developer will not help get rid
@@ -8025,9 +8025,9 @@ SQLITE_PRIVATE void sqlite3PCacheSetDefault(void);
 ** UnlockFile().
 **
 ** LockFile() prevents not just writing but also reading by other processes.
-** A SHARED_LOCK is obtained by locking a single randomly-chosen 
-** byte out of a specific range of bytes. The lock byte is obtained at 
-** random so two separate readers can probably access the file at the 
+** A SHARED_LOCK is obtained by locking a single randomly-chosen
+** byte out of a specific range of bytes. The lock byte is obtained at
+** random so two separate readers can probably access the file at the
 ** same time, unless they are unlucky and choose the same lock byte.
 ** An EXCLUSIVE_LOCK is obtained by locking all bytes in the range.
 ** There can only be one writer.  A RESERVED_LOCK is obtained by locking
@@ -8046,7 +8046,7 @@ SQLITE_PRIVATE void sqlite3PCacheSetDefault(void);
 ** The following #defines specify the range of bytes used for locking.
 ** SHARED_SIZE is the number of bytes available in the pool from which
 ** a random byte is selected for a shared lock.  The pool of bytes for
-** shared locks begins at SHARED_FIRST. 
+** shared locks begins at SHARED_FIRST.
 **
 ** The same locking strategy and
 ** byte ranges are used for Unix.  This leaves open the possiblity of having
@@ -8062,7 +8062,7 @@ SQLITE_PRIVATE void sqlite3PCacheSetDefault(void);
 ** that all locks will fit on a single page even at the minimum page size.
 ** PENDING_BYTE defines the beginning of the locks.  By default PENDING_BYTE
 ** is set high so that we don't have to allocate an unused page except
-** for very large databases.  But one should test the page skipping logic 
+** for very large databases.  But one should test the page skipping logic
 ** by setting PENDING_BYTE low and running the entire regression suite.
 **
 ** Changing the value of PENDING_BYTE results in a subtly incompatible
@@ -8082,8 +8082,8 @@ SQLITE_PRIVATE void sqlite3PCacheSetDefault(void);
 */
 SQLITE_PRIVATE int sqlite3OsInit(void);
 
-/* 
-** Functions for accessing sqlite3_file methods 
+/*
+** Functions for accessing sqlite3_file methods
 */
 SQLITE_PRIVATE int sqlite3OsClose(sqlite3_file*);
 SQLITE_PRIVATE int sqlite3OsRead(sqlite3_file*, void*, int amt, i64 offset);
@@ -8099,8 +8099,8 @@ SQLITE_PRIVATE int sqlite3OsFileControl(sqlite3_file*,int,void*);
 SQLITE_PRIVATE int sqlite3OsSectorSize(sqlite3_file *id);
 SQLITE_PRIVATE int sqlite3OsDeviceCharacteristics(sqlite3_file *id);
 
-/* 
-** Functions for accessing sqlite3_vfs methods 
+/*
+** Functions for accessing sqlite3_vfs methods
 */
 SQLITE_PRIVATE int sqlite3OsOpen(sqlite3_vfs *, const char *, sqlite3_file*, int, int *);
 SQLITE_PRIVATE int sqlite3OsDelete(sqlite3_vfs *, const char *, int);
@@ -8117,7 +8117,7 @@ SQLITE_PRIVATE int sqlite3OsSleep(sqlite3_vfs *, int);
 SQLITE_PRIVATE int sqlite3OsCurrentTime(sqlite3_vfs *, double*);
 
 /*
-** Convenience functions for opening and closing files using 
+** Convenience functions for opening and closing files using
 ** sqlite3_malloc() to obtain space for the file-handle structure.
 */
 SQLITE_PRIVATE int sqlite3OsOpenMalloc(sqlite3_vfs *, const char *, sqlite3_file **, int,int*);
@@ -8225,10 +8225,10 @@ struct Db {
 **
 ** If there are no virtual tables configured in this schema, the
 ** Schema.db variable is set to NULL. After the first virtual table
-** has been added, it is set to point to the database connection 
+** has been added, it is set to point to the database connection
 ** used to create the connection. Once a virtual table has been
-** added to the Schema structure and the Schema.db variable populated, 
-** only that database connection may use the Schema to prepare 
+** added to the Schema structure and the Schema.db variable populated,
+** only that database connection may use the Schema to prepare
 ** statements.
 */
 struct Schema {
@@ -8248,7 +8248,7 @@ struct Schema {
 };
 
 /*
-** These macros can be used to test, set, or clear bits in the 
+** These macros can be used to test, set, or clear bits in the
 ** Db.pSchema->flags field.
 */
 #define DbHasProperty(D,I,P)     (((D)->aDb[I].pSchema->flags&(P))==(P))
@@ -8385,9 +8385,9 @@ struct sqlite3 {
   void *pTraceArg;                          /* Argument to the trace function */
   void (*xProfile)(void*,const char*,u64);  /* Profiling function */
   void *pProfileArg;                        /* Argument to profile function */
-  void *pCommitArg;                 /* Argument to xCommitCallback() */   
+  void *pCommitArg;                 /* Argument to xCommitCallback() */
   int (*xCommitCallback)(void*);    /* Invoked at every commit. */
-  void *pRollbackArg;               /* Argument to xRollbackCallback() */   
+  void *pRollbackArg;               /* Argument to xRollbackCallback() */
   void (*xRollbackCallback)(void*); /* Invoked at every commit. */
   void *pUpdateArg;
   void (*xUpdateCallback)(void*,int, const char*,const char*,sqlite_int64);
@@ -8431,8 +8431,8 @@ struct sqlite3 {
   i64 nDeferredCons;            /* Net deferred constraints this transaction. */
 
 #ifdef SQLITE_ENABLE_UNLOCK_NOTIFY
-  /* The following variables are all protected by the STATIC_MASTER 
-  ** mutex, not by sqlite3.mutex. They are used by code in notify.c. 
+  /* The following variables are all protected by the STATIC_MASTER
+  ** mutex, not by sqlite3.mutex. They are used by code in notify.c.
   **
   ** When X.pUnlockConnection==Y, that means that X is waiting for Y to
   ** unlock so that it can proceed.
@@ -8469,7 +8469,7 @@ struct sqlite3 {
 #define SQLITE_SqlTrace       0x00004000  /* Debug print SQL as it executes */
 #define SQLITE_VdbeListing    0x00008000  /* Debug listings of VDBE programs */
 #define SQLITE_WriteSchema    0x00010000  /* OK to update SQLITE_MASTER */
-#define SQLITE_NoReadlock     0x00020000  /* Readlocks are omitted when 
+#define SQLITE_NoReadlock     0x00020000  /* Readlocks are omitted when
                                           ** accessing read-only databases */
 #define SQLITE_IgnoreChecks   0x00040000  /* Do not enforce check constraints */
 #define SQLITE_ReadUncommitted 0x0080000  /* For shared-cache mode */
@@ -8539,10 +8539,10 @@ struct FuncDef {
 ** used to create the initializers for the FuncDef structures.
 **
 **   FUNCTION(zName, nArg, iArg, bNC, xFunc)
-**     Used to create a scalar function definition of a function zName 
+**     Used to create a scalar function definition of a function zName
 **     implemented by C function xFunc that accepts nArg arguments. The
 **     value passed as iArg is cast to a (void*) and made available
-**     as the user-data (sqlite3_user_data()) for the function. If 
+**     as the user-data (sqlite3_user_data()) for the function. If
 **     argument bNC is true, then the SQLITE_FUNC_NEEDCOLL flag is set.
 **
 **   AGGREGATE(zName, nArg, iArg, bNC, xStep, xFinal)
@@ -8552,8 +8552,8 @@ struct FuncDef {
 **     FUNCTION().
 **
 **   LIKEFUNC(zName, nArg, pArg, flags)
-**     Used to create a scalar function definition of a function zName 
-**     that accepts nArg arguments and is implemented by a call to C 
+**     Used to create a scalar function definition of a function zName
+**     that accepts nArg arguments and is implemented by a call to C
 **     function likeFunc. Argument pArg is cast to a (void *) and made
 **     available as the function user-data (sqlite3_user_data()). The
 **     FuncDef.flags variable is set to the value passed as the flags
@@ -8671,7 +8671,7 @@ struct CollSeq {
 **
 ** These used to have mnemonic name like 'i' for SQLITE_AFF_INTEGER and
 ** 't' for SQLITE_AFF_TEXT.  But we can save a little space and improve
-** the speed a little by numbering the values consecutively.  
+** the speed a little by numbering the values consecutively.
 **
 ** But rather than start with 0 or 1, we begin with 'a'.  That way,
 ** when multiple affinity types are concatenated into a string and
@@ -8690,7 +8690,7 @@ struct CollSeq {
 
 /*
 ** The SQLITE_AFF_MASK values masks off the significant bits of an
-** affinity value. 
+** affinity value.
 */
 #define SQLITE_AFF_MASK     0x67
 
@@ -8704,20 +8704,20 @@ struct CollSeq {
 
 /*
 ** An object of this type is created for each virtual table present in
-** the database schema. 
+** the database schema.
 **
 ** If the database schema is shared, then there is one instance of this
 ** structure for each database connection (sqlite3*) that uses the shared
 ** schema. This is because each database connection requires its own unique
-** instance of the sqlite3_vtab* handle used to access the virtual table 
-** implementation. sqlite3_vtab* handles can not be shared between 
-** database connections, even when the rest of the in-memory database 
+** instance of the sqlite3_vtab* handle used to access the virtual table
+** implementation. sqlite3_vtab* handles can not be shared between
+** database connections, even when the rest of the in-memory database
 ** schema is shared, as the implementation often stores the database
 ** connection handle passed to it via the xConnect() or xCreate() method
 ** during initialization internally. This database connection handle may
-** then used by the virtual table implementation to access real tables 
-** within the database. So that they appear as part of the callers 
-** transaction, these accesses need to be made via the same database 
+** then used by the virtual table implementation to access real tables
+** within the database. So that they appear as part of the callers
+** transaction, these accesses need to be made via the same database
 ** connection as that used to execute SQL operations on the virtual table.
 **
 ** All VTable objects that correspond to a single table in a shared
@@ -8729,19 +8729,19 @@ struct CollSeq {
 ** sqlite3_vtab* handle in the compiled query.
 **
 ** When an in-memory Table object is deleted (for example when the
-** schema is being reloaded for some reason), the VTable objects are not 
-** deleted and the sqlite3_vtab* handles are not xDisconnect()ed 
+** schema is being reloaded for some reason), the VTable objects are not
+** deleted and the sqlite3_vtab* handles are not xDisconnect()ed
 ** immediately. Instead, they are moved from the Table.pVTable list to
 ** another linked list headed by the sqlite3.pDisconnect member of the
-** corresponding sqlite3 structure. They are then deleted/xDisconnected 
+** corresponding sqlite3 structure. They are then deleted/xDisconnected
 ** next time a statement is prepared using said sqlite3*. This is done
 ** to avoid deadlock issues involving multiple sqlite3.mutex mutexes.
 ** Refer to comments above function sqlite3VtabUnlockList() for an
 ** explanation as to why it is safe to add an entry to an sqlite3.pDisconnect
 ** list without holding the corresponding sqlite3.mutex mutex.
 **
-** The memory for objects of this type is always allocated by 
-** sqlite3DbMalloc(), using the connection handle stored in VTable.db as 
+** The memory for objects of this type is always allocated by
+** sqlite3DbMalloc(), using the connection handle stored in VTable.db as
 ** the first argument.
 */
 struct VTable {
@@ -8776,10 +8776,10 @@ struct VTable {
 ** in sqlite.aDb[].  0 is for the main database and 1 is for the file that
 ** holds temporary tables and indices.  If TF_Ephemeral is set
 ** then the table is stored in a file that is automatically deleted
-** when the VDBE cursor to the table is closed.  In this case Table.tnum 
+** when the VDBE cursor to the table is closed.  In this case Table.tnum
 ** refers VDBE cursor number that holds the table open, not to the root
 ** page number.  Transient tables are used to hold the results of a
-** sub-query that appears instead of a real table name in the FROM clause 
+** sub-query that appears instead of a real table name in the FROM clause
 ** of a SELECT statement.
 */
 struct Table {
@@ -8894,7 +8894,7 @@ struct FKey {
 ** key is set to NULL.  CASCADE means that a DELETE or UPDATE of the
 ** referenced table row is propagated into the row that holds the
 ** foreign key.
-** 
+**
 ** The following symbolic values are used to record which type
 ** of action to take.
 */
@@ -8915,7 +8915,7 @@ struct FKey {
 
 /*
 ** An instance of the following structure is passed as the first
-** argument to sqlite3VdbeKeyCompare and is used to control the 
+** argument to sqlite3VdbeKeyCompare and is used to control the
 ** comparison of the two index keys.
 */
 struct KeyInfo {
@@ -8972,7 +8972,7 @@ struct UnpackedRecord {
 ** In the Table structure describing Ex1, nCol==3 because there are
 ** three columns in the table.  In the Index structure describing
 ** Ex2, nColumn==2 since 2 of the 3 columns of Ex1 are indexed.
-** The value of aiColumn is {2, 0}.  aiColumn[0]==2 because the 
+** The value of aiColumn is {2, 0}.  aiColumn[0]==2 because the
 ** first column to be indexed (c3) has an index of 2 in Ex1.aCol[].
 ** The second column to be indexed (c1) has an index of 0 in
 ** Ex1.aCol[], hence Ex2.aiColumn[1]==0.
@@ -8980,7 +8980,7 @@ struct UnpackedRecord {
 ** The Index.onError field determines whether or not the indexed columns
 ** must be unique and what to do if they are not.  When Index.onError=OE_None,
 ** it means this is not a unique index.  Otherwise it is a unique index
-** and the value of Index.onError indicate the which conflict resolution 
+** and the value of Index.onError indicate the which conflict resolution
 ** algorithm to employ whenever an attempt is made to insert a non-unique
 ** element.
 */
@@ -9002,7 +9002,7 @@ struct Index {
 };
 
 /*
-** Each sample stored in the sqlite_stat2 table is represented in memory 
+** Each sample stored in the sqlite_stat2 table is represented in memory
 ** using a structure of this type.
 */
 struct IndexSample {
@@ -9097,9 +9097,9 @@ typedef int ynVar;
 ** to represent the greater-than-or-equal-to operator in the expression
 ** tree.
 **
-** If the expression is an SQL literal (TK_INTEGER, TK_FLOAT, TK_BLOB, 
+** If the expression is an SQL literal (TK_INTEGER, TK_FLOAT, TK_BLOB,
 ** or TK_STRING), then Expr.token contains the text of the SQL literal. If
-** the expression is a variable (TK_VARIABLE), then Expr.token contains the 
+** the expression is a variable (TK_VARIABLE), then Expr.token contains the
 ** variable name. Finally, if the expression is an SQL function (TK_FUNCTION),
 ** then Expr.token contains the name of the function.
 **
@@ -9110,7 +9110,7 @@ typedef int ynVar;
 ** a CASE expression or an IN expression of the form "<lhs> IN (<y>, <z>...)".
 ** Expr.x.pSelect is used if the expression is a sub-select or an expression of
 ** the form "<lhs> IN (SELECT ...)". If the EP_xIsSelect bit is set in the
-** Expr.flags mask, then Expr.x.pSelect is valid. Otherwise, Expr.x.pList is 
+** Expr.flags mask, then Expr.x.pSelect is valid. Otherwise, Expr.x.pList is
 ** valid.
 **
 ** An expression of the form ID or ID.ID refers to a column in a table.
@@ -9121,8 +9121,8 @@ typedef int ynVar;
 ** value is also stored in the Expr.iAgg column in the aggregate so that
 ** it can be accessed after all aggregates are computed.
 **
-** If the expression is an unbound variable marker (a question mark 
-** character '?' in the original SQL) then the Expr.iTable holds the index 
+** If the expression is an unbound variable marker (a question mark
+** character '?' in the original SQL) then the Expr.iTable holds the index
 ** number for that variable.
 **
 ** If the expression is a subquery then Expr.iColumn holds an integer
@@ -9161,7 +9161,7 @@ struct Expr {
 
   /* If the EP_TokenOnly flag is set in the Expr.flags mask, then no
   ** space is allocated for the fields below this point. An attempt to
-  ** access them will result in a segfault or malfunction. 
+  ** access them will result in a segfault or malfunction.
   *********************************************************************/
 
   Expr *pLeft;           /* Left subnode */
@@ -9232,7 +9232,7 @@ struct Expr {
 #endif
 
 /*
-** These macros can be used to test, set, or clear bits in the 
+** These macros can be used to test, set, or clear bits in the
 ** Expr.flags field.
 */
 #define ExprHasProperty(E,P)     (((E)->flags&(P))==(P))
@@ -9241,8 +9241,8 @@ struct Expr {
 #define ExprClearProperty(E,P)   (E)->flags&=~(P)
 
 /*
-** Macros to determine the number of bytes required by a normal Expr 
-** struct, an Expr struct with the EP_Reduced flag set in Expr.flags 
+** Macros to determine the number of bytes required by a normal Expr
+** struct, an Expr struct with the EP_Reduced flag set in Expr.flags
 ** and an Expr struct with the EP_TokenOnly flag set.
 */
 #define EXPR_FULLSIZE           sizeof(Expr)           /* Full size */
@@ -9250,7 +9250,7 @@ struct Expr {
 #define EXPR_TOKENONLYSIZE      offsetof(Expr,pLeft)   /* Fewer features */
 
 /*
-** Flags passed to the sqlite3ExprDup() function. See the header comment 
+** Flags passed to the sqlite3ExprDup() function. See the header comment
 ** above sqlite3ExprDup() for details.
 */
 #define EXPRDUP_REDUCE         0x0001  /* Used reduced-size Expr nodes */
@@ -9488,12 +9488,12 @@ struct WhereInfo {
 ** pEList corresponds to the result set of a SELECT and is NULL for
 ** other statements.
 **
-** NameContexts can be nested.  When resolving names, the inner-most 
+** NameContexts can be nested.  When resolving names, the inner-most
 ** context is searched first.  If no match is found, the next outer
 ** context is checked.  If there is still no match, the next context
 ** is checked.  This process continues until either a match is found
 ** or all contexts are check.  When a match is found, the nRef member of
-** the context containing the match is incremented. 
+** the context containing the match is incremented.
 **
 ** Each subquery gets a new NameContext.  The pNext field points to the
 ** NameContext in the parent query.  Thus the process of scanning the
@@ -9598,7 +9598,7 @@ struct SelectDest {
 };
 
 /*
-** During code generation of statements that do inserts into AUTOINCREMENT 
+** During code generation of statements that do inserts into AUTOINCREMENT
 ** tables, the following information is attached to the Table.u.autoInc.p
 ** pointer of each autoincrement table to record some side information that
 ** the code generator needs.  We have to keep per-table autoincrement
@@ -9621,7 +9621,7 @@ struct AutoincInfo {
 #endif
 
 /*
-** At least one instance of the following structure is created for each 
+** At least one instance of the following structure is created for each
 ** trigger that may be fired while parsing an INSERT, UPDATE or DELETE
 ** statement. All such objects are stored in the linked list headed at
 ** Parse.pTriggerPrg and deleted once statement compilation has been
@@ -9634,7 +9634,7 @@ struct AutoincInfo {
 ** values for both pTrigger and orconf.
 **
 ** The TriggerPrg.aColmask[0] variable is set to a mask of old.* columns
-** accessed (or set to 0 for triggers fired as a result of INSERT 
+** accessed (or set to 0 for triggers fired as a result of INSERT
 ** statements). Similarly, the TriggerPrg.aColmask[1] variable is set to
 ** a mask of new.* columns used by the program.
 */
@@ -9656,7 +9656,7 @@ struct TriggerPrg {
 ** is constant but the second part is reset at the beginning and end of
 ** each recursion.
 **
-** The nTableLock and aTableLock variables are only used if the shared-cache 
+** The nTableLock and aTableLock variables are only used if the shared-cache
 ** feature is enabled (if sqlite3Tsd()->useSharedData is true). They are
 ** used to store the set of table-locks required by the statement being
 ** compiled. Function sqlite3TableLock() is used to add entries to the
@@ -9774,10 +9774,10 @@ struct AuthContext {
 
 /*
  * Each trigger present in the database schema is stored as an instance of
- * struct Trigger. 
+ * struct Trigger.
  *
  * Pointers to instances of struct Trigger are stored in two ways.
- * 1. In the "trigHash" hash table (part of the sqlite3* that represents the 
+ * 1. In the "trigHash" hash table (part of the sqlite3* that represents the
  *    database). This allows Trigger structures to be retrieved by name.
  * 2. All triggers associated with a single table form a linked list, using the
  *    pNext member of struct Trigger. A pointer to the first element of the
@@ -9803,7 +9803,7 @@ struct Trigger {
 
 /*
 ** A trigger is either a BEFORE or an AFTER trigger.  The following constants
-** determine which. 
+** determine which.
 **
 ** If there are multiple triggers, you might of some BEFORE and some AFTER.
 ** In that cases, the constants below can be ORed together.
@@ -9813,15 +9813,15 @@ struct Trigger {
 
 /*
  * An instance of struct TriggerStep is used to store a single SQL statement
- * that is a part of a trigger-program. 
+ * that is a part of a trigger-program.
  *
  * Instances of struct TriggerStep are stored in a singly linked list (linked
- * using the "pNext" member) referenced by the "step_list" member of the 
+ * using the "pNext" member) referenced by the "step_list" member of the
  * associated struct Trigger instance. The first element of the linked list is
  * the first step of the trigger-program.
- * 
+ *
  * The "op" member indicates whether this is a "DELETE", "INSERT", "UPDATE" or
- * "SELECT" statement. The meanings of the other members is determined by the 
+ * "SELECT" statement. The meanings of the other members is determined by the
  * value of "op" as follows:
  *
  * (op == TK_INSERT)
@@ -9831,7 +9831,7 @@ struct Trigger {
  * target    -> A token holding the quoted name of the table to insert into.
  * pExprList -> If this is an INSERT INTO ... VALUES ... statement, then
  *              this stores values to be inserted. Otherwise NULL.
- * pIdList   -> If this is an INSERT INTO ... (<column-names>) VALUES ... 
+ * pIdList   -> If this is an INSERT INTO ... (<column-names>) VALUES ...
  *              statement, then this stores the column-names to be
  *              inserted into.
  *
@@ -9839,7 +9839,7 @@ struct Trigger {
  * target    -> A token holding the quoted name of the table to delete from.
  * pWhere    -> The WHERE clause of the DELETE statement if one is specified.
  *              Otherwise NULL.
- * 
+ *
  * (op == TK_UPDATE)
  * target    -> A token holding the quoted name of the table to update rows of.
  * pWhere    -> The WHERE clause of the UPDATE statement if one is specified.
@@ -9847,7 +9847,7 @@ struct Trigger {
  * pExprList -> A list of the columns to update and the expressions to update
  *              them to. See sqlite3Update() documentation of "pChanges"
  *              argument.
- * 
+ *
  */
 struct TriggerStep {
   u8 op;               /* One of TK_DELETE, TK_UPDATE, TK_INSERT, TK_SELECT */
@@ -9865,7 +9865,7 @@ struct TriggerStep {
 /*
 ** The following structure contains information used by the sqliteFix...
 ** routines as they walk the parse tree to make database references
-** explicit.  
+** explicit.
 */
 typedef struct DbFixer DbFixer;
 struct DbFixer {
@@ -10076,7 +10076,7 @@ SQLITE_PRIVATE int sqlite3MemoryAlarm(void (*)(void*, sqlite3_int64, int), void*
 #ifdef SQLITE_USE_ALLOCA
 # define sqlite3StackAllocRaw(D,N)   alloca(N)
 # define sqlite3StackAllocZero(D,N)  memset(alloca(N), 0, N)
-# define sqlite3StackFree(D,P)       
+# define sqlite3StackFree(D,P)
 #else
 # define sqlite3StackAllocRaw(D,N)   sqlite3DbMallocRaw(D,N)
 # define sqlite3StackAllocZero(D,N)  sqlite3DbMallocZero(D,N)
@@ -10370,7 +10370,7 @@ SQLITE_PRIVATE int sqlite3Utf8Read(const u8*, const u8**);
 ** Routines to read and write variable-length integers.  These used to
 ** be defined locally, but now we use the varint routines in the util.c
 ** file.  Code should use the MACRO forms below, as the Varint32 versions
-** are coded to assume the single byte case is already handled (which 
+** are coded to assume the single byte case is already handled (which
 ** the MACRO form does).
 */
 SQLITE_PRIVATE int sqlite3PutVarint(unsigned char*, u64);
@@ -10423,7 +10423,7 @@ SQLITE_PRIVATE void sqlite3VdbeSetChanges(sqlite3 *, int);
 
 SQLITE_PRIVATE const void *sqlite3ValueText(sqlite3_value*, u8);
 SQLITE_PRIVATE int sqlite3ValueBytes(sqlite3_value*, u8);
-SQLITE_PRIVATE void sqlite3ValueSetStr(sqlite3_value*, int, const void *,u8, 
+SQLITE_PRIVATE void sqlite3ValueSetStr(sqlite3_value*, int, const void *,u8,
                         void(*)(void*));
 SQLITE_PRIVATE void sqlite3ValueFree(sqlite3_value*);
 SQLITE_PRIVATE sqlite3_value *sqlite3ValueNew(sqlite3 *);
@@ -10472,7 +10472,7 @@ SQLITE_PRIVATE void sqlite3SchemaFree(void *);
 SQLITE_PRIVATE Schema *sqlite3SchemaGet(sqlite3 *, Btree *);
 SQLITE_PRIVATE int sqlite3SchemaToIndex(sqlite3 *db, Schema *);
 SQLITE_PRIVATE KeyInfo *sqlite3IndexKeyinfo(Parse *, Index *);
-SQLITE_PRIVATE int sqlite3CreateFunc(sqlite3 *, const char *, int, int, void *, 
+SQLITE_PRIVATE int sqlite3CreateFunc(sqlite3 *, const char *, int, int, void *,
   void (*)(sqlite3_context*,int,sqlite3_value **),
   void (*)(sqlite3_context*,int,sqlite3_value **), void (*)(sqlite3_context*));
 SQLITE_PRIVATE int sqlite3ApiExit(sqlite3 *db, int);
@@ -10521,7 +10521,7 @@ SQLITE_PRIVATE   int sqlite3Utf8To8(unsigned char*);
 #  define sqlite3VtabRollback(X)
 #  define sqlite3VtabCommit(X)
 #  define sqlite3VtabInSync(db) 0
-#  define sqlite3VtabLock(X) 
+#  define sqlite3VtabLock(X)
 #  define sqlite3VtabUnlock(X)
 #  define sqlite3VtabUnlockList(X)
 #else
@@ -10557,7 +10557,7 @@ SQLITE_PRIVATE VTable *sqlite3GetVTable(sqlite3*, Table*);
 ** no-op macros if OMIT_FOREIGN_KEY is defined. In this case no foreign
 ** key functionality is available. If OMIT_TRIGGER is defined but
 ** OMIT_FOREIGN_KEY is not, only some of the functions are no-oped. In
-** this case foreign keys are parsed, but no other functionality is 
+** this case foreign keys are parsed, but no other functionality is
 ** provided (enforcement of FK constraints requires the triggers sub-system).
 */
 #if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
@@ -10647,7 +10647,7 @@ SQLITE_PRIVATE   void sqlite3ParserTrace(FILE*, char *);
 /*
 ** If the SQLITE_ENABLE IOTRACE exists then the global variable
 ** sqlite3IoTrace is a pointer to a printf-like routine used to
-** print I/O tracing messages. 
+** print I/O tracing messages.
 */
 #ifdef SQLITE_ENABLE_IOTRACE
 # define IOTRACE(A)  if( sqlite3IoTrace ){ sqlite3IoTrace A; }
@@ -10678,7 +10678,7 @@ SQLITE_PRIVATE void (*sqlite3IoTrace)(const char*,...);
 */
 
 /* An array to map all upper-case characters into their corresponding
-** lower-case character. 
+** lower-case character.
 **
 ** SQLite only considers US-ASCII (or EBCDIC) characters.  We do not
 ** handle case conversions for the UTF character set since the tables
@@ -10744,7 +10744,7 @@ SQLITE_PRIVATE const unsigned char sqlite3UpperToLower[] = {
 ** Standard function tolower() is implemented using the sqlite3UpperToLower[]
 ** array. tolower() is used more often than toupper() by SQLite.
 **
-** Bit 0x40 is set if the character non-alphanumeric and can be used in an 
+** Bit 0x40 is set if the character non-alphanumeric and can be used in an
 ** SQLite identifier.  Identifiers are alphanumerics, "_", "$", and any
 ** non-ASCII UTF character. Hence the test for whether or not a character is
 ** part of an identifier is 0x46.
@@ -10863,7 +10863,7 @@ SQLITE_PRIVATE int sqlite3PendingByte = 0x40000000;
 ** Properties of opcodes.  The OPFLG_INITIALIZER macro is
 ** created by mkopcodeh.awk during compilation.  Data is obtained
 ** from the comments following the "case OP_xxxx:" statements in
-** the vdbe.c file.  
+** the vdbe.c file.
 */
 SQLITE_PRIVATE const unsigned char sqlite3OpcodeProperty[] = OPFLG_INITIALIZER;
 
@@ -10889,7 +10889,7 @@ SQLITE_PRIVATE const unsigned char sqlite3OpcodeProperty[] = OPFLG_INITIALIZER;
 
 
 /*
-** An array of names of all compile-time options.  This array should 
+** An array of names of all compile-time options.  This array should
 ** be sorted A-Z.
 **
 ** This array looks large, but in a typical installation actually uses
@@ -11390,7 +11390,7 @@ SQLITE_API int sqlite3_db_status(
 **
 *************************************************************************
 ** This file contains the C functions that implement date and time
-** functions for SQLite.  
+** functions for SQLite.
 **
 ** There is only one exported symbol in this file - the function
 ** sqlite3RegisterDateTimeFunctions() found at the bottom of the file.
@@ -11399,7 +11399,7 @@ SQLITE_API int sqlite3_db_status(
 ** SQLite processes all times and dates as Julian Day numbers.  The
 ** dates and times are stored as the number of days since noon
 ** in Greenwich on November 24, 4714 B.C. according to the Gregorian
-** calendar system. 
+** calendar system.
 **
 ** 1970-01-01 00:00:00 is JD 2440587.5
 ** 2000-01-01 00:00:00 is JD 2451544.5
@@ -11429,14 +11429,14 @@ SQLITE_API int sqlite3_db_status(
 
 /*
 ** On recent Windows platforms, the localtime_s() function is available
-** as part of the "Secure CRT". It is essentially equivalent to 
-** localtime_r() available under most POSIX platforms, except that the 
+** as part of the "Secure CRT". It is essentially equivalent to
+** localtime_r() available under most POSIX platforms, except that the
 ** order of the parameters is reversed.
 **
 ** See http://msdn.microsoft.com/en-us/library/a442x3ye(VS.80).aspx.
 **
 ** If the user has not indicated to use localtime_r() or localtime_s()
-** already, check for an MSVC build environment that provides 
+** already, check for an MSVC build environment that provides
 ** localtime_s().
 */
 #if !defined(HAVE_LOCALTIME_R) && !defined(HAVE_LOCALTIME_S) && \
@@ -11705,7 +11705,7 @@ static void setDateTimeToCurrent(sqlite3_context *context, DateTime *p){
 ** The following are acceptable forms for the input string:
 **
 **      YYYY-MM-DD HH:MM:SS.FFF  +/-HH:MM
-**      DDDD.DD 
+**      DDDD.DD
 **      now
 **
 ** In the first form, the +/-HH:MM is always optional.  The fractional
@@ -11715,8 +11715,8 @@ static void setDateTimeToCurrent(sqlite3_context *context, DateTime *p){
 ** as there is a year and date.
 */
 static int parseDateOrTime(
-  sqlite3_context *context, 
-  const char *zDate, 
+  sqlite3_context *context,
+  const char *zDate,
   DateTime *p
 ){
   int isRealNum;    /* Return from sqlite3IsNumber().  Not used */
@@ -12092,9 +12092,9 @@ static int parseModifier(const char *zMod, DateTime *p){
 ** then assume a default value of "now" for argv[0].
 */
 static int isDate(
-  sqlite3_context *context, 
-  int argc, 
-  sqlite3_value **argv, 
+  sqlite3_context *context,
+  int argc,
+  sqlite3_value **argv,
   DateTime *p
 ){
   int i;
@@ -12509,7 +12509,7 @@ SQLITE_PRIVATE void sqlite3RegisterDateTimeFunctions(void){
 ** So we test the effects of a malloc() failing and the sqlite3OsXXX()
 ** function returning SQLITE_IOERR_NOMEM using the DO_OS_MALLOC_TEST macro.
 **
-** The following functions are instrumented for malloc() failure 
+** The following functions are instrumented for malloc() failure
 ** testing:
 **
 **     sqlite3OsOpen()
@@ -12589,10 +12589,10 @@ SQLITE_PRIVATE int sqlite3OsDeviceCharacteristics(sqlite3_file *id){
 ** VFS methods.
 */
 SQLITE_PRIVATE int sqlite3OsOpen(
-  sqlite3_vfs *pVfs, 
-  const char *zPath, 
-  sqlite3_file *pFile, 
-  int flags, 
+  sqlite3_vfs *pVfs,
+  const char *zPath,
+  sqlite3_file *pFile,
+  int flags,
   int *pFlagsOut
 ){
   int rc;
@@ -12609,18 +12609,18 @@ SQLITE_PRIVATE int sqlite3OsDelete(sqlite3_vfs *pVfs, const char *zPath, int dir
   return pVfs->xDelete(pVfs, zPath, dirSync);
 }
 SQLITE_PRIVATE int sqlite3OsAccess(
-  sqlite3_vfs *pVfs, 
-  const char *zPath, 
-  int flags, 
+  sqlite3_vfs *pVfs,
+  const char *zPath,
+  int flags,
   int *pResOut
 ){
   DO_OS_MALLOC_TEST(0);
   return pVfs->xAccess(pVfs, zPath, flags, pResOut);
 }
 SQLITE_PRIVATE int sqlite3OsFullPathname(
-  sqlite3_vfs *pVfs, 
-  const char *zPath, 
-  int nPathOut, 
+  sqlite3_vfs *pVfs,
+  const char *zPath,
+  int nPathOut,
   char *zPathOut
 ){
   zPathOut[0] = 0;
@@ -12651,9 +12651,9 @@ SQLITE_PRIVATE int sqlite3OsCurrentTime(sqlite3_vfs *pVfs, double *pTimeOut){
 }
 
 SQLITE_PRIVATE int sqlite3OsOpenMalloc(
-  sqlite3_vfs *pVfs, 
-  const char *zFile, 
-  sqlite3_file **ppFile, 
+  sqlite3_vfs *pVfs,
+  const char *zFile,
+  sqlite3_file **ppFile,
   int flags,
   int *pOutFlags
 ){
@@ -12795,17 +12795,17 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs *pVfs){
 **
 *************************************************************************
 **
-** This file contains code to support the concept of "benign" 
+** This file contains code to support the concept of "benign"
 ** malloc failures (when the xMalloc() or xRealloc() method of the
 ** sqlite3_mem_methods structure fails to allocate a block of memory
-** and returns 0). 
+** and returns 0).
 **
 ** Most malloc failures are non-benign. After they occur, SQLite
 ** abandons the current operation and returns an error code (usually
 ** SQLITE_NOMEM) to the user. However, sometimes a fault is not necessarily
-** fatal. For example, if a malloc fails while resizing a hash table, this 
-** is completely recoverable simply by not carrying out the resize. The 
-** hash table will continue to function normally.  So a malloc failure 
+** fatal. For example, if a malloc fails while resizing a hash table, this
+** is completely recoverable simply by not carrying out the resize. The
+** hash table will continue to function normally.  So a malloc failure
 ** during a hash table resize is a benign fault.
 */
 
@@ -13164,7 +13164,7 @@ struct MemBlockHdr {
 ** when this module is combined with other in the amalgamation.
 */
 static struct {
-  
+
   /*
   ** Mutex to control access to the memory allocation subsystem.
   */
@@ -13175,7 +13175,7 @@ static struct {
   */
   struct MemBlockHdr *pFirst;
   struct MemBlockHdr *pLast;
-  
+
   /*
   ** The number of levels of backtrace to save in new allocations.
   */
@@ -13188,7 +13188,7 @@ static struct {
   int nTitle;        /* Bytes of zTitle to save.  Includes '\0' and padding */
   char zTitle[100];  /* The title text */
 
-  /* 
+  /*
   ** sqlite3MallocDisallow() increments the following counter.
   ** sqlite3MallocAllow() decrements it.
   */
@@ -13247,7 +13247,7 @@ static struct MemBlockHdr *sqlite3MemsysGetHeader(void *pAllocation){
   pU8 = (u8*)pAllocation;
   assert( pInt[nReserve/sizeof(int)]==(int)REARGUARD );
   /* This checks any of the "extra" bytes allocated due
-  ** to rounding up to an 8 byte boundary to ensure 
+  ** to rounding up to an 8 byte boundary to ensure
   ** they haven't been overwritten.
   */
   while( nReserve-- > p->iSize ) assert( pU8[nReserve]==0x65 );
@@ -13375,7 +13375,7 @@ static void *sqlite3MemMalloc(int nByte){
     p = (void*)pInt;
   }
   sqlite3_mutex_leave(mem.mutex);
-  return p; 
+  return p;
 }
 
 /*
@@ -13385,7 +13385,7 @@ static void sqlite3MemFree(void *pPrior){
   struct MemBlockHdr *pHdr;
   void **pBt;
   char *z;
-  assert( sqlite3GlobalConfig.bMemstat || sqlite3GlobalConfig.bCoreMutex==0 
+  assert( sqlite3GlobalConfig.bMemstat || sqlite3GlobalConfig.bCoreMutex==0
        || mem.mutex!=0 );
   pHdr = sqlite3MemsysGetHeader(pPrior);
   pBt = (void**)pHdr;
@@ -13411,15 +13411,15 @@ static void sqlite3MemFree(void *pPrior){
   randomFill(z, sizeof(void*)*pHdr->nBacktraceSlots + sizeof(*pHdr) +
                 pHdr->iSize + sizeof(int) + pHdr->nTitle);
   free(z);
-  sqlite3_mutex_leave(mem.mutex);  
+  sqlite3_mutex_leave(mem.mutex);
 }
 
 /*
 ** Change the size of an existing memory allocation.
 **
 ** For this debugging implementation, we *always* make a copy of the
-** allocation into a new place in memory.  In this way, if the 
-** higher level code is using pointer to the old allocation, it is 
+** allocation into a new place in memory.  In this way, if the
+** higher level code is using pointer to the old allocation, it is
 ** much more likely to break and we are much more liking to find
 ** the error.
 */
@@ -13496,7 +13496,7 @@ SQLITE_PRIVATE void sqlite3MemdebugSync(){
 }
 
 /*
-** Open the file indicated and write a log of all unfreed memory 
+** Open the file indicated and write a log of all unfreed memory
 ** allocations into that log.
 */
 SQLITE_PRIVATE void sqlite3MemdebugDump(const char *zFilename){
@@ -13513,7 +13513,7 @@ SQLITE_PRIVATE void sqlite3MemdebugDump(const char *zFilename){
   for(pHdr=mem.pFirst; pHdr; pHdr=pHdr->pNext){
     char *z = (char*)pHdr;
     z -= pHdr->nBacktraceSlots*sizeof(void*) + pHdr->nTitle;
-    fprintf(out, "**** %lld bytes at %p from %s ****\n", 
+    fprintf(out, "**** %lld bytes at %p from %s ****\n",
             pHdr->iSize, &pHdr[1], pHdr->nTitle ? z : "???");
     if( pHdr->nBacktrace ){
       fflush(out);
@@ -13526,7 +13526,7 @@ SQLITE_PRIVATE void sqlite3MemdebugDump(const char *zFilename){
   fprintf(out, "COUNTS:\n");
   for(i=0; i<NCSIZE-1; i++){
     if( mem.nAlloc[i] ){
-      fprintf(out, "   %5d: %10d %10d %10d\n", 
+      fprintf(out, "   %5d: %10d %10d %10d\n",
             i*8, mem.nAlloc[i], mem.nCurrent[i], mem.mxCurrent[i]);
     }
   }
@@ -13567,12 +13567,12 @@ SQLITE_PRIVATE int sqlite3MemdebugMallocCount(){
 **
 *************************************************************************
 ** This file contains the C functions that implement a memory
-** allocation subsystem for use by SQLite. 
+** allocation subsystem for use by SQLite.
 **
 ** This version of the memory allocation subsystem omits all
 ** use of malloc(). The SQLite user supplies a block of memory
 ** before calling sqlite3_initialize() from which allocations
-** are made and returned by the xMalloc() and xRealloc() 
+** are made and returned by the xMalloc() and xRealloc()
 ** implementations. Once sqlite3_initialize() has been called,
 ** the amount of memory available to SQLite is fixed and cannot
 ** be changed.
@@ -13602,8 +13602,8 @@ SQLITE_PRIVATE int sqlite3MemdebugMallocCount(){
 #define N_HASH  61
 
 /*
-** A memory allocation (also called a "chunk") consists of two or 
-** more blocks where each block is 8 bytes.  The first 8 bytes are 
+** A memory allocation (also called a "chunk") consists of two or
+** more blocks where each block is 8 bytes.  The first 8 bytes are
 ** a header that is not returned to the user.
 **
 ** A chunk is two or more blocks that is either checked out or
@@ -13626,10 +13626,10 @@ SQLITE_PRIVATE int sqlite3MemdebugMallocCount(){
 **
 ** The second block of free chunks is of the form u.list.  The
 ** two fields form a double-linked list of chunks of related sizes.
-** Pointers to the head of the list are stored in mem3.aiSmall[] 
+** Pointers to the head of the list are stored in mem3.aiSmall[]
 ** for smaller chunks and mem3.aiHash[] for larger chunks.
 **
-** The second block of a chunk is user data if the chunk is checked 
+** The second block of a chunk is user data if the chunk is checked
 ** out.  If a chunk is checked out, the user data may extend into
 ** the u.hdr.prevSize value of the following chunk.
 */
@@ -13665,12 +13665,12 @@ static SQLITE_WSD struct Mem3Global {
   ** True if we are evaluating an out-of-memory callback.
   */
   int alarmBusy;
-  
+
   /*
   ** Mutex to control access to the memory allocation subsystem.
   */
   sqlite3_mutex *mutex;
-  
+
   /*
   ** The minimum amount of free space that we have seen.
   */
@@ -13686,7 +13686,7 @@ static SQLITE_WSD struct Mem3Global {
   u32 szMaster;
 
   /*
-  ** Array of lists of free blocks according to the block size 
+  ** Array of lists of free blocks according to the block size
   ** for smaller chunks, or a hash on the block size for larger
   ** chunks.
   */
@@ -13717,7 +13717,7 @@ static void memsys3UnlinkFromList(u32 i, u32 *pRoot){
 }
 
 /*
-** Unlink the chunk at index i from 
+** Unlink the chunk at index i from
 ** whatever list is currently a member of.
 */
 static void memsys3Unlink(u32 i){
@@ -13801,8 +13801,8 @@ static void memsys3OutOfMemory(int nByte){
 
 
 /*
-** Chunk i is a free chunk that has been unlinked.  Adjust its 
-** size parameters for check-out and return a pointer to the 
+** Chunk i is a free chunk that has been unlinked.  Adjust its
+** size parameters for check-out and return a pointer to the
 ** user portion of the chunk.
 */
 static void *memsys3Checkout(u32 i, u32 nBlock){
@@ -13855,12 +13855,12 @@ static void *memsys3FromMaster(u32 nBlock){
 /*
 ** *pRoot is the head of a list of free chunks of the same size
 ** or same size hash.  In other words, *pRoot is an entry in either
-** mem3.aiSmall[] or mem3.aiHash[].  
+** mem3.aiSmall[] or mem3.aiHash[].
 **
 ** This routine examines all entries on the given list and tries
-** to coalesce each entries with adjacent free chunks.  
+** to coalesce each entries with adjacent free chunks.
 **
-** If it sees a chunk that is larger than mem3.iMaster, it replaces 
+** If it sees a chunk that is larger than mem3.iMaster, it replaces
 ** the current mem3.iMaster with the new larger chunk.  In order for
 ** this mem3.iMaster replacement to work, the master chunk must be
 ** linked into the hash tables.  That is not the normal state of
@@ -13951,7 +13951,7 @@ static void *memsys3MallocUnsafe(int nByte){
   }
 
 
-  /* STEP 3:  
+  /* STEP 3:
   ** Loop through the entire memory pool.  Coalesce adjacent free
   ** chunks.  Recompute the master chunk as the largest free chunk.
   ** Then try again to satisfy the allocation by carving a piece off
@@ -14058,7 +14058,7 @@ static void *memsys3Malloc(int nBytes){
   memsys3Enter();
   p = memsys3MallocUnsafe(nBytes);
   memsys3Leave();
-  return (void*)p; 
+  return (void*)p;
 }
 
 /*
@@ -14139,7 +14139,7 @@ static void memsys3Shutdown(void *NotUsed){
 
 
 /*
-** Open the file indicated and write a log of all unfreed memory 
+** Open the file indicated and write a log of all unfreed memory
 ** allocations into that log.
 */
 SQLITE_PRIVATE void sqlite3Memsys3Dump(const char *zFilename){
@@ -14190,7 +14190,7 @@ SQLITE_PRIVATE void sqlite3Memsys3Dump(const char *zFilename){
       fprintf(out, " %p(%d)", &mem3.aPool[j],
               (mem3.aPool[j-1].u.hdr.size4x/4)*8-8);
     }
-    fprintf(out, "\n"); 
+    fprintf(out, "\n");
   }
   for(i=0; i<N_HASH; i++){
     if( mem3.aiHash[i]==0 ) continue;
@@ -14199,7 +14199,7 @@ SQLITE_PRIVATE void sqlite3Memsys3Dump(const char *zFilename){
       fprintf(out, " %p(%d)", &mem3.aPool[j],
               (mem3.aPool[j-1].u.hdr.size4x/4)*8-8);
     }
-    fprintf(out, "\n"); 
+    fprintf(out, "\n");
   }
   fprintf(out, "master=%d\n", mem3.iMaster);
   fprintf(out, "nowUsed=%d\n", mem3.nPool*8 - mem3.szMaster*8);
@@ -14216,7 +14216,7 @@ SQLITE_PRIVATE void sqlite3Memsys3Dump(const char *zFilename){
 }
 
 /*
-** This routine is the only routine in this file with external 
+** This routine is the only routine in this file with external
 ** linkage.
 **
 ** Populate the low-level memory allocation function pointers in
@@ -14256,12 +14256,12 @@ SQLITE_PRIVATE const sqlite3_mem_methods *sqlite3MemGetMemsys3(void){
 **
 *************************************************************************
 ** This file contains the C functions that implement a memory
-** allocation subsystem for use by SQLite. 
+** allocation subsystem for use by SQLite.
 **
 ** This version of the memory allocation subsystem omits all
 ** use of malloc(). The application gives SQLite a block of memory
 ** before calling sqlite3_initialize() from which allocations
-** are made and returned by the xMalloc() and xRealloc() 
+** are made and returned by the xMalloc() and xRealloc()
 ** implementations. Once sqlite3_initialize() has been called,
 ** the amount of memory available to SQLite is fixed and cannot
 ** be changed.
@@ -14281,12 +14281,12 @@ SQLITE_PRIVATE const sqlite3_mem_methods *sqlite3MemGetMemsys3(void){
 ** This algorithm is described in: J. M. Robson. "Bounds for Some Functions
 ** Concerning Dynamic Storage Allocation". Journal of the Association for
 ** Computing Machinery, Volume 21, Number 8, July 1974, pages 491-499.
-** 
+**
 ** Let n be the size of the largest allocation divided by the minimum
 ** allocation size (after rounding all sizes up to a power of 2.)  Let M
 ** be the maximum amount of memory ever outstanding at one time.  Let
 ** N be the total amount of memory available for allocation.  Robson
-** proved that this memory allocator will never breakdown due to 
+** proved that this memory allocator will never breakdown due to
 ** fragmentation as long as the following constraint holds:
 **
 **      N >=  M*(1 + log2(n)/2) - n + 1
@@ -14296,7 +14296,7 @@ SQLITE_PRIVATE const sqlite3_mem_methods *sqlite3MemGetMemsys3(void){
 */
 
 /*
-** This version of the memory allocator is used only when 
+** This version of the memory allocator is used only when
 ** SQLITE_ENABLE_MEMSYS5 is defined.
 */
 #ifdef SQLITE_ENABLE_MEMSYS5
@@ -14341,7 +14341,7 @@ static SQLITE_WSD struct Mem5Global {
   int szAtom;      /* Smallest possible allocation in bytes */
   int nBlock;      /* Number of szAtom sized blocks in zPool */
   u8 *zPool;       /* Memory available to be allocated */
-  
+
   /*
   ** Mutex to control access to the memory allocation subsystem.
   */
@@ -14358,7 +14358,7 @@ static SQLITE_WSD struct Mem5Global {
   u32 maxOut;         /* Maximum instantaneous currentOut */
   u32 maxCount;       /* Maximum instantaneous currentCount */
   u32 maxRequest;     /* Largest allocation (exclusive of internal frag) */
-  
+
   /*
   ** Lists of free blocks.  aiFreelist[0] is a list of free blocks of
   ** size mem5.szAtom.  aiFreelist[1] holds blocks of size szAtom*2.
@@ -14456,7 +14456,7 @@ static int memsys5Size(void *p){
 
 /*
 ** Find the first entry on the freelist iLogsize.  Unlink that
-** entry and return its index. 
+** entry and return its index.
 */
 static int memsys5UnlinkFirst(int iLogsize){
   int i;
@@ -14549,7 +14549,7 @@ static void memsys5FreeUnsafe(void *pOld){
   u32 size, iLogsize;
   int iBlock;
 
-  /* Set iBlock to the index of the block pointed to by pOld in 
+  /* Set iBlock to the index of the block pointed to by pOld in
   ** the array of mem5.szAtom byte blocks pointed to by mem5.zPool.
   */
   iBlock = ((u8 *)pOld-mem5.zPool)/mem5.szAtom;
@@ -14608,7 +14608,7 @@ static void *memsys5Malloc(int nBytes){
     p = memsys5MallocUnsafe(nBytes);
     memsys5Leave();
   }
-  return (void*)p; 
+  return (void*)p;
 }
 
 /*
@@ -14621,14 +14621,14 @@ static void memsys5Free(void *pPrior){
   assert( pPrior!=0 );
   memsys5Enter();
   memsys5FreeUnsafe(pPrior);
-  memsys5Leave();  
+  memsys5Leave();
 }
 
 /*
 ** Change the size of an existing memory allocation.
 **
 ** The outer layer memory allocator prevents this routine from
-** being called with pPrior==0.  
+** being called with pPrior==0.
 **
 ** nBytes is always a value obtained from a prior call to
 ** memsys5Round().  Hence nBytes is always a non-negative power
@@ -14762,7 +14762,7 @@ static void memsys5Shutdown(void *NotUsed){
 
 #ifdef SQLITE_TEST
 /*
-** Open the file indicated and write a log of all unfreed memory 
+** Open the file indicated and write a log of all unfreed memory
 ** allocations into that log.
 */
 SQLITE_PRIVATE void sqlite3Memsys5Dump(const char *zFilename){
@@ -14804,7 +14804,7 @@ SQLITE_PRIVATE void sqlite3Memsys5Dump(const char *zFilename){
 #endif
 
 /*
-** This routine is the only routine in this file with external 
+** This routine is the only routine in this file with external
 ** linkage. It returns a pointer to a static sqlite3_mem_methods
 ** struct populated with the memsys5 methods.
 */
@@ -14856,12 +14856,12 @@ static SQLITE_WSD int mutexIsInit = 0;
 /*
 ** Initialize the mutex system.
 */
-SQLITE_PRIVATE int sqlite3MutexInit(void){ 
+SQLITE_PRIVATE int sqlite3MutexInit(void){
   int rc = SQLITE_OK;
   if( sqlite3GlobalConfig.bCoreMutex ){
     if( !sqlite3GlobalConfig.mutex.xMutexAlloc ){
       /* If the xMutexAlloc method has not been set, then the user did not
-      ** install a mutex implementation via sqlite3_config() prior to 
+      ** install a mutex implementation via sqlite3_config() prior to
       ** sqlite3_initialize() being called. This block copies pointers to
       ** the default implementation into the sqlite3GlobalConfig structure.
       */
@@ -14951,7 +14951,7 @@ SQLITE_API int sqlite3_mutex_try(sqlite3_mutex *p){
 
 /*
 ** The sqlite3_mutex_leave() routine exits a mutex that was previously
-** entered by the same thread.  The behavior is undefined if the mutex 
+** entered by the same thread.  The behavior is undefined if the mutex
 ** is not currently entered. If a NULL pointer is passed as an argument
 ** this function is a no-op.
 */
@@ -15076,7 +15076,7 @@ static int debugMutexEnd(void){ return SQLITE_OK; }
 /*
 ** The sqlite3_mutex_alloc() routine allocates a new
 ** mutex and returns a pointer to it.  If it returns NULL
-** that means that a mutex could not be allocated. 
+** that means that a mutex could not be allocated.
 */
 static sqlite3_mutex *debugMutexAlloc(int id){
   static sqlite3_mutex aStatic[6];
@@ -15211,7 +15211,7 @@ static int os2MutexEnd(void){ return SQLITE_OK; }
 /*
 ** The sqlite3_mutex_alloc() routine allocates a new
 ** mutex and returns a pointer to it.  If it returns NULL
-** that means that a mutex could not be allocated. 
+** that means that a mutex could not be allocated.
 ** SQLite will unwind its stack and return an error.  The argument
 ** to sqlite3_mutex_alloc() is one of these integer constants:
 **
@@ -15487,7 +15487,7 @@ struct sqlite3_mutex {
 ** there might be race conditions that can cause these routines to
 ** deliver incorrect results.  In particular, if pthread_equal() is
 ** not an atomic operation, then these routines might delivery
-** incorrect results.  On most platforms, pthread_equal() is a 
+** incorrect results.  On most platforms, pthread_equal() is a
 ** comparison of two integers and is therefore atomic.  But we are
 ** told that HPUX is not such a platform.  If so, then these routines
 ** will not always work correctly on HPUX.
@@ -15550,7 +15550,7 @@ static int pthreadMutexEnd(void){ return SQLITE_OK; }
 **
 ** Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
 ** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
-** returns a different mutex on every call.  But for the static 
+** returns a different mutex on every call.  But for the static
 ** mutex types, the same mutex is returned on every call that has
 ** the same type number.
 */
@@ -15636,7 +15636,7 @@ static void pthreadMutexEnter(sqlite3_mutex *p){
   ** is atomic - that it cannot be deceived into thinking self
   ** and p->owner are equal if p->owner changes between two values
   ** that are not equal to self while the comparison is taking place.
-  ** This implementation also assumes a coherent cache - that 
+  ** This implementation also assumes a coherent cache - that
   ** separate processes cannot read different values from the same
   ** address at the same time.  If either of these two conditions
   ** are not met, then the mutexes will fail and problems will result.
@@ -15676,7 +15676,7 @@ static int pthreadMutexTry(sqlite3_mutex *p){
   ** is atomic - that it cannot be deceived into thinking self
   ** and p->owner are equal if p->owner changes between two values
   ** that are not equal to self while the comparison is taking place.
-  ** This implementation also assumes a coherent cache - that 
+  ** This implementation also assumes a coherent cache - that
   ** separate processes cannot read different values from the same
   ** address at the same time.  If either of these two conditions
   ** are not met, then the mutexes will fail and problems will result.
@@ -15817,9 +15817,9 @@ struct sqlite3_mutex {
 ** the LockFileEx() API.
 **
 ** mutexIsNT() is only used for the TryEnterCriticalSection() API call,
-** which is only available if your application was compiled with 
+** which is only available if your application was compiled with
 ** _WIN32_WINNT defined to a value >= 0x0400.  Currently, the only
-** call to TryEnterCriticalSection() is #ifdef'ed out, so #ifdef 
+** call to TryEnterCriticalSection() is #ifdef'ed out, so #ifdef
 ** this out as well.
 */
 #if 0
@@ -15851,7 +15851,7 @@ static int winMutexNotheld2(sqlite3_mutex *p, DWORD tid){
   return p->nRef==0 || p->owner!=tid;
 }
 static int winMutexNotheld(sqlite3_mutex *p){
-  DWORD tid = GetCurrentThreadId(); 
+  DWORD tid = GetCurrentThreadId();
   return winMutexNotheld2(p, tid);
 }
 #endif
@@ -15876,7 +15876,7 @@ static int winMutex_isInit = 0;
 */
 static long winMutex_lock = 0;
 
-static int winMutexInit(void){ 
+static int winMutexInit(void){
   /* The first to increment to 1 does actual initialization */
   if( InterlockedCompareExchange(&winMutex_lock, 1, 0)==0 ){
     int i;
@@ -15890,11 +15890,11 @@ static int winMutexInit(void){
       Sleep(1);
     }
   }
-  return SQLITE_OK; 
+  return SQLITE_OK;
 }
 
-static int winMutexEnd(void){ 
-  /* The first to decrement to 0 does actual shutdown 
+static int winMutexEnd(void){
+  /* The first to decrement to 0 does actual shutdown
   ** (which should be the last to shutdown.) */
   if( InterlockedCompareExchange(&winMutex_lock, 0, 1)==1 ){
     if( winMutex_isInit==1 ){
@@ -15905,7 +15905,7 @@ static int winMutexEnd(void){
       winMutex_isInit = 0;
     }
   }
-  return SQLITE_OK; 
+  return SQLITE_OK;
 }
 
 /*
@@ -15946,7 +15946,7 @@ static int winMutexEnd(void){
 **
 ** Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
 ** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
-** returns a different mutex on every call.  But for the static 
+** returns a different mutex on every call.  But for the static
 ** mutex types, the same mutex is returned on every call that has
 ** the same type number.
 */
@@ -15957,7 +15957,7 @@ static sqlite3_mutex *winMutexAlloc(int iType){
     case SQLITE_MUTEX_FAST:
     case SQLITE_MUTEX_RECURSIVE: {
       p = sqlite3MallocZero( sizeof(*p) );
-      if( p ){  
+      if( p ){
         p->id = iType;
         InitializeCriticalSection(&p->mutex);
       }
@@ -16001,10 +16001,10 @@ static void winMutexFree(sqlite3_mutex *p){
 ** more than once, the behavior is undefined.
 */
 static void winMutexEnter(sqlite3_mutex *p){
-  DWORD tid = GetCurrentThreadId(); 
+  DWORD tid = GetCurrentThreadId();
   assert( p->id==SQLITE_MUTEX_RECURSIVE || winMutexNotheld2(p, tid) );
   EnterCriticalSection(&p->mutex);
-  p->owner = tid; 
+  p->owner = tid;
   p->nRef++;
 #ifdef SQLITE_DEBUG
   if( p->trace ){
@@ -16014,14 +16014,14 @@ static void winMutexEnter(sqlite3_mutex *p){
 }
 static int winMutexTry(sqlite3_mutex *p){
 #ifndef NDEBUG
-  DWORD tid = GetCurrentThreadId(); 
+  DWORD tid = GetCurrentThreadId();
 #endif
   int rc = SQLITE_BUSY;
   assert( p->id==SQLITE_MUTEX_RECURSIVE || winMutexNotheld2(p, tid) );
   /*
   ** The sqlite3_mutex_try() routine is very rarely used, and when it
   ** is used it is merely an optimization.  So it is OK for it to always
-  ** fail.  
+  ** fail.
   **
   ** The TryEnterCriticalSection() interface is only available on WinNT.
   ** And some windows compilers complain if you try to use it without
@@ -16113,7 +16113,7 @@ SQLITE_PRIVATE sqlite3_mutex_methods *sqlite3DefaultMutex(void){
 ** limit.
 */
 static void softHeapLimitEnforcer(
-  void *NotUsed, 
+  void *NotUsed,
   sqlite3_int64 NotUsed2,
   int allocSize
 ){
@@ -16122,7 +16122,7 @@ static void softHeapLimitEnforcer(
 }
 
 /*
-** Set the soft heap-size limit for the library. Passing a zero or 
+** Set the soft heap-size limit for the library. Passing a zero or
 ** negative value indicates no limit.
 */
 SQLITE_API void sqlite3_soft_heap_limit(int n){
@@ -16301,7 +16301,7 @@ SQLITE_API int sqlite3_memory_alarm(
 #endif
 
 /*
-** Trigger the alarm 
+** Trigger the alarm
 */
 static void sqlite3MallocAlarm(int nByte){
   void (*xCallback)(void*,sqlite3_int64,int);
@@ -16416,7 +16416,7 @@ SQLITE_PRIVATE void *sqlite3ScratchMalloc(int n){
 
   if( sqlite3GlobalConfig.szScratch<n ){
     goto scratch_overflow;
-  }else{  
+  }else{
     sqlite3_mutex_enter(mem0.mutex);
     if( mem0.nScratchFree==0 ){
       sqlite3_mutex_leave(mem0.mutex);
@@ -16451,7 +16451,7 @@ scratch_overflow:
 #if SQLITE_THREADSAFE==0 && !defined(NDEBUG)
   scratchAllocOut = p!=0;
 #endif
-  return p;    
+  return p;
 }
 SQLITE_PRIVATE void sqlite3ScratchFree(void *p){
   if( p ){
@@ -16574,7 +16574,7 @@ SQLITE_PRIVATE void *sqlite3Realloc(void *pOld, int nBytes){
   }else if( sqlite3GlobalConfig.bMemstat ){
     sqlite3_mutex_enter(mem0.mutex);
     sqlite3StatusSet(SQLITE_STATUS_MALLOC_SIZE, nBytes);
-    if( sqlite3StatusValue(SQLITE_STATUS_MEMORY_USED)+nNew-nOld >= 
+    if( sqlite3StatusValue(SQLITE_STATUS_MEMORY_USED)+nNew-nOld >=
           mem0.alarmThreshold ){
       sqlite3MallocAlarm(nNew-nOld);
     }
@@ -16608,7 +16608,7 @@ SQLITE_API void *sqlite3_realloc(void *pOld, int n){
 
 /*
 ** Allocate and zero memory.
-*/ 
+*/
 SQLITE_PRIVATE void *sqlite3MallocZero(int n){
   void *p = sqlite3Malloc(n);
   if( p ){
@@ -16723,9 +16723,9 @@ SQLITE_PRIVATE void *sqlite3DbReallocOrFree(sqlite3 *db, void *p, int n){
 }
 
 /*
-** Make a copy of a string in memory obtained from sqliteMalloc(). These 
+** Make a copy of a string in memory obtained from sqliteMalloc(). These
 ** functions call sqlite3MallocRaw() directly instead of sqliteMalloc(). This
-** is because when memory debugging is turned on, these two functions are 
+** is because when memory debugging is turned on, these two functions are
 ** called via macros that record the current file and line number in the
 ** ThreadData structure.
 */
@@ -16775,13 +16775,13 @@ SQLITE_PRIVATE void sqlite3SetString(char **pz, sqlite3 *db, const char *zFormat
 
 
 /*
-** This function must be called before exiting any API function (i.e. 
+** This function must be called before exiting any API function (i.e.
 ** returning control to the user) that has called sqlite3_malloc or
 ** sqlite3_realloc.
 **
 ** The returned value is normally a copy of the second argument to this
 ** function. However, if a malloc() failure has occurred since the previous
-** invocation SQLITE_NOMEM is returned instead. 
+** invocation SQLITE_NOMEM is returned instead.
 **
 ** If the first argument, db, is not NULL and a malloc() error has occurred,
 ** then the connection error-code (the value returned by sqlite3_errcode())
@@ -16789,7 +16789,7 @@ SQLITE_PRIVATE void sqlite3SetString(char **pz, sqlite3 *db, const char *zFormat
 */
 SQLITE_PRIVATE int sqlite3ApiExit(sqlite3* db, int rc){
   /* If the db handle is not NULL, then we must hold the connection handle
-  ** mutex here. Otherwise the read (and possible write) of db->mallocFailed 
+  ** mutex here. Otherwise the read (and possible write) of db->mallocFailed
   ** is unsafe, as is the call to sqlite3Error().
   */
   assert( !db || sqlite3_mutex_held(db->mutex) );
@@ -17082,7 +17082,7 @@ SQLITE_PRIVATE void sqlite3VXPrintf(
       break;
     }
     /* Find out what flags are present */
-    flag_leftjustify = flag_plussign = flag_blanksign = 
+    flag_leftjustify = flag_plussign = flag_blanksign =
      flag_alternateform = flag_altform2 = flag_zeropad = 0;
     done = 0;
     do{
@@ -17968,7 +17968,7 @@ SQLITE_PRIVATE void sqlite3PrngResetState(void){
 **    May you share freely, never taking more than you give.
 **
 *************************************************************************
-** This file contains routines used to translate between UTF-8, 
+** This file contains routines used to translate between UTF-8,
 ** UTF-16, UTF-16BE, and UTF-16LE.
 **
 ** Notes on UTF-8:
@@ -18032,7 +18032,7 @@ typedef unsigned char Bool;
 ** loop over all entries of the Btree.  You can also insert new BTree
 ** entries or retrieve the key or data from the entry that the cursor
 ** is currently pointing to.
-** 
+**
 ** Every cursor that the virtual machine has open is represented by an
 ** instance of the following structure.
 **
@@ -18062,7 +18062,7 @@ struct VdbeCursor {
   sqlite3_vtab_cursor *pVtabCursor;  /* The cursor for a virtual table */
   const sqlite3_module *pModule;     /* Module for cursor pVtabCursor */
 
-  /* Result of last sqlite3BtreeMoveto() done by an OP_NotExists or 
+  /* Result of last sqlite3BtreeMoveto() done by an OP_NotExists or
   ** OP_IsUnique opcode on this cursor. */
   int seekResult;
 
@@ -18087,7 +18087,7 @@ typedef struct VdbeCursor VdbeCursor;
 ** When a sub-program is executed (OP_Program), a structure of this type
 ** is allocated to store the current value of the program counter, as
 ** well as the current memory cell array and various other frame specific
-** values stored in the Vdbe struct. When the sub-program is finished, 
+** values stored in the Vdbe struct. When the sub-program is finished,
 ** these values are copied back to the Vdbe from the VdbeFrame structure,
 ** restoring the state of the VM to as it was before the sub-program
 ** began executing.
@@ -18160,7 +18160,7 @@ struct Mem {
 ** If the MEM_Str flag is set then Mem.z points at a string representation.
 ** Usually this is encoded in the same unicode encoding as the main
 ** database (see below for exceptions). If the MEM_Term flag is also
-** set, then the string is nul terminated. The MEM_Int and MEM_Real 
+** set, then the string is nul terminated. The MEM_Int and MEM_Real
 ** flags may coexist with the MEM_Str flag.
 **
 ** Multiple of these values can appear in Mem.flags.  But only one
@@ -18264,7 +18264,7 @@ struct Set {
 ** set to 2 for xDestroy method calls and 1 for all other methods. This
 ** variable is used for two purposes: to allow xDestroy methods to execute
 ** "DROP TABLE" statements and to prevent some nasty side effects of
-** malloc failure when SQLite is invoked recursively by a virtual table 
+** malloc failure when SQLite is invoked recursively by a virtual table
 ** method function.
 */
 struct Vdbe {
@@ -18571,7 +18571,7 @@ SQLITE_PRIVATE int sqlite3Utf8Read(
 /*
 ** If the TRANSLATE_TRACE macro is defined, the value of each Mem is
 ** printed on stderr on the way into and out of sqlite3VdbeMemTranslate().
-*/ 
+*/
 /* #define TRANSLATE_TRACE 1 */
 
 #ifndef SQLITE_OMIT_UTF16
@@ -18602,7 +18602,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemTranslate(Mem *pMem, u8 desiredEnc){
   }
 #endif
 
-  /* If the translation is between UTF-16 little and big endian, then 
+  /* If the translation is between UTF-16 little and big endian, then
   ** all that is required is to swap the byte order. This case is handled
   ** differently from the others.
   */
@@ -18682,13 +18682,13 @@ SQLITE_PRIVATE int sqlite3VdbeMemTranslate(Mem *pMem, u8 desiredEnc){
     if( pMem->enc==SQLITE_UTF16LE ){
       /* UTF-16 Little-endian -> UTF-8 */
       while( zIn<zTerm ){
-        READ_UTF16LE(zIn, zIn<zTerm, c); 
+        READ_UTF16LE(zIn, zIn<zTerm, c);
         WRITE_UTF8(z, c);
       }
     }else{
       /* UTF-16 Big-endian -> UTF-8 */
       while( zIn<zTerm ){
-        READ_UTF16BE(zIn, zIn<zTerm, c); 
+        READ_UTF16BE(zIn, zIn<zTerm, c);
         WRITE_UTF8(z, c);
       }
     }
@@ -18716,7 +18716,7 @@ translate_out:
 }
 
 /*
-** This routine checks for a byte-order mark at the beginning of the 
+** This routine checks for a byte-order mark at the beginning of the
 ** UTF-16 string stored in *pMem. If one is present, it is removed and
 ** the encoding of the Mem adjusted. This routine does not do any
 ** byte-swapping, it just sets Mem.enc appropriately.
@@ -18739,7 +18739,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemHandleBom(Mem *pMem){
       bom = SQLITE_UTF16LE;
     }
   }
-  
+
   if( bom ){
     rc = sqlite3VdbeMemMakeWriteable(pMem);
     if( rc==SQLITE_OK ){
@@ -18759,7 +18759,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemHandleBom(Mem *pMem){
 ** pZ is a UTF-8 encoded unicode string. If nByte is less than zero,
 ** return the number of unicode characters in pZ up to (but not including)
 ** the first 0x00 byte. If nByte is not less than zero, return the
-** number of unicode characters in the first nByte of pZ (or up to 
+** number of unicode characters in the first nByte of pZ (or up to
 ** the first 0x00, whichever comes first).
 */
 SQLITE_PRIVATE int sqlite3Utf8CharLen(const char *zIn, int nByte){
@@ -18779,7 +18779,7 @@ SQLITE_PRIVATE int sqlite3Utf8CharLen(const char *zIn, int nByte){
   return r;
 }
 
-/* This test function is not currently used by the automated test-suite. 
+/* This test function is not currently used by the automated test-suite.
 ** Hence it is only available in debug builds.
 */
 #if defined(SQLITE_TEST) && defined(SQLITE_DEBUG)
@@ -18839,7 +18839,7 @@ SQLITE_PRIVATE char *sqlite3Utf16to8(sqlite3 *db, const void *z, int nByte, u8 e
 ** is set to the length of the returned string in bytes. The call should
 ** arrange to call sqlite3DbFree() on the returned pointer when it is
 ** no longer required.
-** 
+**
 ** If a malloc failure occurs, NULL is returned and the db.mallocFailed
 ** flag set.
 */
@@ -18868,7 +18868,7 @@ SQLITE_PRIVATE int sqlite3Utf16ByteLen(const void *zIn, int nChar){
   int c;
   unsigned char const *z = zIn;
   int n = 0;
-  
+
   if( SQLITE_UTF16NATIVE==SQLITE_UTF16BE ){
     while( n<nChar ){
       READ_UTF16BE(z, 1, c);
@@ -18993,15 +18993,15 @@ SQLITE_PRIVATE int sqlite3IsNaN(double x){
   **
   **      This option [-ffast-math] should never be turned on by any
   **      -O option since it can result in incorrect output for programs
-  **      which depend on an exact implementation of IEEE or ISO 
+  **      which depend on an exact implementation of IEEE or ISO
   **      rules/specifications for math functions.
   **
   ** Under MSVC, this NaN test may fail if compiled with a floating-
-  ** point precision mode other than /fp:precise.  From the MSDN 
+  ** point precision mode other than /fp:precise.  From the MSDN
   ** documentation:
   **
-  **      The compiler [with /fp:precise] will properly handle comparisons 
-  **      involving NaN. For example, x != x evaluates to true if x is NaN 
+  **      The compiler [with /fp:precise] will properly handle comparisons
+  **      involving NaN. For example, x != x evaluates to true if x is NaN
   **      ...
   */
 #ifdef __FAST_MATH__
@@ -19327,7 +19327,7 @@ SQLITE_PRIVATE int sqlite3AtoF(const char *z, double *pResult){
           result *= 1.0e+308;
         }
       }else{
-        /* 1.0e+22 is the largest power of 10 than can be 
+        /* 1.0e+22 is the largest power of 10 than can be
         ** represented exactly. */
         while( e%22 ) { scale *= 1.0e+1; e -= 1; }
         while( e>0 ) { scale *= 1.0e+22; e -= 22; }
@@ -19553,7 +19553,7 @@ SQLITE_PRIVATE int sqlite3PutVarint(unsigned char *p, u64 v){
       v >>= 7;
     }
     return 9;
-  }    
+  }
   n = 0;
   do{
     buf[n++] = (u8)((v & 0x7f) | 0x80);
@@ -19773,8 +19773,8 @@ SQLITE_PRIVATE u8 sqlite3GetVarint(const unsigned char *p, u64 *v){
 ** If the varint stored in p[0] is larger than can fit in a 32-bit unsigned
 ** integer, then set *v to 0xffffffff.
 **
-** A MACRO version, getVarint32, is provided which inlines the 
-** single-byte case.  All code should use the MACRO version as 
+** A MACRO version, getVarint32, is provided which inlines the
+** single-byte case.  All code should use the MACRO version as
 ** this function assumes the single-byte case has already been handled.
 */
 SQLITE_PRIVATE u8 sqlite3GetVarint32(const unsigned char *p, u32 *v){
@@ -19972,7 +19972,7 @@ SQLITE_PRIVATE void *sqlite3HexToBlob(sqlite3 *db, const char *z, int n){
 ** argument.  The zType is a word like "NULL" or "closed" or "invalid".
 */
 static void logBadConnection(const char *zType){
-  sqlite3_log(SQLITE_MISUSE, 
+  sqlite3_log(SQLITE_MISUSE,
      "API call with %s database connection pointer",
      zType
   );
@@ -20179,7 +20179,7 @@ static HashElem *findElementGivenHash(
     count = pH->count;
   }
   while( count-- && ALWAYS(elem) ){
-    if( elem->nKey==nKey && sqlite3StrNICmp(elem->pKey,pKey,nKey)==0 ){ 
+    if( elem->nKey==nKey && sqlite3StrNICmp(elem->pKey,pKey,nKey)==0 ){
       return elem;
     }
     elem = elem->next;
@@ -20197,7 +20197,7 @@ static void removeElementGivenHash(
 ){
   struct _ht *pEntry;
   if( elem->prev ){
-    elem->prev->next = elem->next; 
+    elem->prev->next = elem->next;
   }else{
     pH->first = elem->next;
   }
@@ -20574,8 +20574,8 @@ SQLITE_PRIVATE int sqlite3OSTrace = 0;
 */
 #ifdef SQLITE_PERFORMANCE_TRACE
 
-/* 
-** hwtime.h contains inline assembler code for implementing 
+/*
+** hwtime.h contains inline assembler code for implementing
 ** high-performance timing routines.
 */
 /************** Include hwtime.h in the middle of os_common.h ****************/
@@ -20633,7 +20633,7 @@ SQLITE_PRIVATE int sqlite3OSTrace = 0;
       __asm__ __volatile__ ("rdtsc" : "=A" (val));
       return val;
   }
+
 #elif (defined(__GNUC__) && defined(__ppc__))
 
   __inline__ sqlite_uint64 sqlite3Hwtime(void){
@@ -21442,8 +21442,8 @@ static int os2Open(
   char *zNameCp;
   char zTmpname[CCHMAXPATH+1];    /* Buffer to hold name of temp file */
 
-  /* If the second argument to this function is NULL, generate a 
-  ** temporary file name to use 
+  /* If the second argument to this function is NULL, generate a
+  ** temporary file name to use
   */
   if( !zName ){
     int rc = getTempname(CCHMAXPATH+1, zTmpname);
@@ -21868,7 +21868,7 @@ SQLITE_API int sqlite3_os_end(void){
 ** Styles 4, 5, and 7 are only available of SQLITE_ENABLE_LOCKING_STYLE
 ** is defined to 1.  The SQLITE_ENABLE_LOCKING_STYLE also enables automatic
 ** selection of the appropriate locking style based on the filesystem
-** where the database is located.  
+** where the database is located.
 */
 #if !defined(SQLITE_ENABLE_LOCKING_STYLE)
 #  if defined(__APPLE__)
@@ -21879,7 +21879,7 @@ SQLITE_API int sqlite3_os_end(void){
 #endif
 
 /*
-** Define the OS_VXWORKS pre-processor macro to 1 if building on 
+** Define the OS_VXWORKS pre-processor macro to 1 if building on
 ** vxworks, or 0 otherwise.
 */
 #ifndef OS_VXWORKS
@@ -21974,7 +21974,7 @@ SQLITE_API int sqlite3_os_end(void){
 #define MAX_PATHNAME 512
 
 /*
-** Only set the lastErrno if the error code is a real error and not 
+** Only set the lastErrno if the error code is a real error and not
 ** a normal expected return code of SQLITE_BUSY or SQLITE_OK
 */
 #define IS_LOCK_ERROR(x)  ((x != SQLITE_OK) && (x != SQLITE_BUSY))
@@ -22028,14 +22028,14 @@ struct unixFile {
   ** whenever any part of the database changes.  An assertion fault will
   ** occur if a file is updated without also updating the transaction
   ** counter.  This test is made to avoid new problems similar to the
-  ** one described by ticket #3584. 
+  ** one described by ticket #3584.
   */
   unsigned char transCntrChng;   /* True if the transaction counter changed */
   unsigned char dbUpdate;        /* True if any part of database file changed */
   unsigned char inNormalWrite;   /* True if in a normal write operation */
 #endif
 #ifdef SQLITE_TEST
-  /* In test mode, increase the size of this structure a bit so that 
+  /* In test mode, increase the size of this structure a bit so that
   ** it is larger than the struct CrashFile defined in test6.c.
   */
   char aPadding[32];
@@ -22110,8 +22110,8 @@ SQLITE_PRIVATE int sqlite3OSTrace = 0;
 */
 #ifdef SQLITE_PERFORMANCE_TRACE
 
-/* 
-** hwtime.h contains inline assembler code for implementing 
+/*
+** hwtime.h contains inline assembler code for implementing
 ** high-performance timing routines.
 */
 /************** Include hwtime.h in the middle of os_common.h ****************/
@@ -22169,7 +22169,7 @@ SQLITE_PRIVATE int sqlite3OSTrace = 0;
       __asm__ __volatile__ ("rdtsc" : "=A" (val));
       return val;
   }
+
 #elif (defined(__GNUC__) && defined(__ppc__))
 
   __inline__ sqlite_uint64 sqlite3Hwtime(void){
@@ -22312,11 +22312,11 @@ SQLITE_API int sqlite3_open_file_count = 0;
 /*
 ** Helper functions to obtain and relinquish the global mutex. The
 ** global mutex is used to protect the unixOpenCnt, unixLockInfo and
-** vxworksFileId objects used by this file, all of which may be 
+** vxworksFileId objects used by this file, all of which may be
 ** shared by multiple threads.
 **
-** Function unixMutexHeld() is used to assert() that the global mutex 
-** is held when required. This function is only used as part of assert() 
+** Function unixMutexHeld() is used to assert() that the global mutex
+** is held when required. This function is only used as part of assert()
 ** statements. e.g.
 **
 **   unixEnterMutex()
@@ -22419,49 +22419,49 @@ static int lockTrace(int fd, int op, struct flock *p){
 ** This routine translates a standard POSIX errno code into something
 ** useful to the clients of the sqlite3 functions.  Specifically, it is
 ** intended to translate a variety of "try again" errors into SQLITE_BUSY
-** and a variety of "please close the file descriptor NOW" errors into 
+** and a variety of "please close the file descriptor NOW" errors into
 ** SQLITE_IOERR
-** 
+**
 ** Errors during initialization of locks, or file system support for locks,
 ** should handle ENOLCK, ENOTSUP, EOPNOTSUPP separately.
 */
 static int sqliteErrorFromPosixError(int posixError, int sqliteIOErr) {
   switch (posixError) {
-  case 0: 
+  case 0:
     return SQLITE_OK;
-    
+
   case EAGAIN:
   case ETIMEDOUT:
   case EBUSY:
   case EINTR:
-  case ENOLCK:  
-    /* random NFS retry error, unless during file system support 
+  case ENOLCK:
+    /* random NFS retry error, unless during file system support
      * introspection, in which it actually means what it says */
     return SQLITE_BUSY;
-    
-  case EACCES: 
+
+  case EACCES:
     /* EACCES is like EAGAIN during locking operations, but not any other time*/
-    if( (sqliteIOErr == SQLITE_IOERR_LOCK) || 
-       (sqliteIOErr == SQLITE_IOERR_UNLOCK) || 
+    if( (sqliteIOErr == SQLITE_IOERR_LOCK) ||
+       (sqliteIOErr == SQLITE_IOERR_UNLOCK) ||
        (sqliteIOErr == SQLITE_IOERR_RDLOCK) ||
        (sqliteIOErr == SQLITE_IOERR_CHECKRESERVEDLOCK) ){
       return SQLITE_BUSY;
     }
     /* else fall through */
-  case EPERM: 
+  case EPERM:
     return SQLITE_PERM;
-    
+
   case EDEADLK:
     return SQLITE_IOERR_BLOCKED;
-    
+
 #if EOPNOTSUPP!=ENOTSUP
-  case EOPNOTSUPP: 
-    /* something went terribly awry, unless during file system support 
+  case EOPNOTSUPP:
+    /* something went terribly awry, unless during file system support
      * introspection, in which it actually means what it says */
 #endif
 #ifdef ENOTSUP
-  case ENOTSUP: 
-    /* invalid fd, unless during file system support introspection, in which 
+  case ENOTSUP:
+    /* invalid fd, unless during file system support introspection, in which
      * it actually means what it says */
 #endif
   case EIO:
@@ -22474,8 +22474,8 @@ static int sqliteErrorFromPosixError(int posixError, int sqliteIOErr) {
   case ESTALE:
   case ENOSYS:
     /* these should force the client to close the file and reconnect */
-    
-  default: 
+
+  default:
     return sqliteIOErr;
   }
 }
@@ -22491,7 +22491,7 @@ static int sqliteErrorFromPosixError(int posixError, int sqliteIOErr) {
 **
 ** A pointer to an instance of the following structure can be used as a
 ** unique file ID in VxWorks.  Each instance of this structure contains
-** a copy of the canonical filename.  There is also a reference count.  
+** a copy of the canonical filename.  There is also a reference count.
 ** The structure is reclaimed when the number of pointers to it drops to
 ** zero.
 **
@@ -22507,7 +22507,7 @@ struct vxworksFileId {
 };
 
 #if OS_VXWORKS
-/* 
+/*
 ** All unique filenames are held on a linked list headed by this
 ** variable:
 */
@@ -22579,7 +22579,7 @@ static struct vxworksFileId *vxworksFindFileId(const char *zAbsoluteName){
   */
   unixEnterMutex();
   for(pCandidate=vxworksFileList; pCandidate; pCandidate=pCandidate->pNext){
-    if( pCandidate->nName==n 
+    if( pCandidate->nName==n
      && memcmp(pCandidate->zCanonicalName, pNew->zCanonicalName, n)==0
     ){
        sqlite3_free(pNew);
@@ -22672,7 +22672,7 @@ static void vxworksReleaseFileId(struct vxworksFileId *pId){
 ** cnt>0 means there are cnt shared locks on the file.
 **
 ** Any attempt to lock or unlock a file first checks the locking
-** structure.  The fcntl() system call is only invoked to set a 
+** structure.  The fcntl() system call is only invoked to set a
 ** POSIX lock if the internal lock structure transitions between
 ** a locked and an unlocked state.
 **
@@ -22725,7 +22725,7 @@ static void vxworksReleaseFileId(struct vxworksFileId *pId){
 ** another as long as we are running on a system that supports threads
 ** overriding each others locks (which is now the most common behavior)
 ** or if no locks are held.  But the unixFile.pLock field needs to be
-** recomputed because its key includes the thread-id.  See the 
+** recomputed because its key includes the thread-id.  See the
 ** transferOwnership() function below for additional information
 */
 #if SQLITE_THREADSAFE && defined(__linux__)
@@ -22868,9 +22868,9 @@ struct threadTestData {
 ** by the main thread in testThreadLockingBehavior() conflicts with a
 ** hypothetical write-lock obtained by this thread on the same file.
 **
-** The write-lock is not actually acquired, as this is not possible if 
+** The write-lock is not actually acquired, as this is not possible if
 ** the file is open in read-only mode (see ticket #3472).
-*/ 
+*/
 static void *threadLockingTest(void *pArg){
   struct threadTestData *pData = (struct threadTestData*)pArg;
   pData->result = fcntl(pData->fd, F_GETLK, &pData->lock);
@@ -22882,7 +22882,7 @@ static void *threadLockingTest(void *pArg){
 #if SQLITE_THREADSAFE && defined(__linux__)
 /*
 ** This procedure attempts to determine whether or not threads
-** can override each others locks then sets the 
+** can override each others locks then sets the
 ** threadsOverrideEachOthersLocks variable appropriately.
 */
 static void testThreadLockingBehavior(int fd_orig){
@@ -23199,7 +23199,7 @@ static int unixCheckReservedLock(sqlite3_file *id, int *pResOut){
     }
   }
 #endif
-  
+
   unixLeaveMutex();
   OSTRACE4("TEST WR-LOCK %d %d %d (unix)\n", pFile->h, rc, reserved);
 
@@ -23249,7 +23249,7 @@ static int unixLock(sqlite3_file *id, int locktype){
   **
   ** A process may only obtain a RESERVED lock after it has a SHARED lock.
   ** A RESERVED lock is implemented by grabbing a write-lock on the
-  ** 'reserved byte'. 
+  ** 'reserved byte'.
   **
   ** A process may only obtain a PENDING lock after it has obtained a
   ** SHARED lock. A PENDING lock is implemented by obtaining a write-lock
@@ -23263,7 +23263,7 @@ static int unixLock(sqlite3_file *id, int locktype){
   ** implemented by obtaining a write-lock on the entire 'shared byte
   ** range'. Since all other locks require a read-lock on one of the bytes
   ** within this range, this ensures that no other locks are held on the
-  ** database. 
+  ** database.
   **
   ** The reason a single byte cannot be used instead of the 'shared byte
   ** range' is that some versions of windows do not support read-locks. By
@@ -23317,7 +23317,7 @@ static int unixLock(sqlite3_file *id, int locktype){
   /* If some thread using this PID has a lock via a different unixFile*
   ** handle that precludes the requested lock, return BUSY.
   */
-  if( (pFile->locktype!=pLock->locktype && 
+  if( (pFile->locktype!=pLock->locktype &&
           (pLock->locktype>=PENDING_LOCK || locktype>SHARED_LOCK))
   ){
     rc = SQLITE_BUSY;
@@ -23328,7 +23328,7 @@ static int unixLock(sqlite3_file *id, int locktype){
   ** has a SHARED or RESERVED lock, then increment reference counts and
   ** return SQLITE_OK.
   */
-  if( locktype==SHARED_LOCK && 
+  if( locktype==SHARED_LOCK &&
       (pLock->locktype==SHARED_LOCK || pLock->locktype==RESERVED_LOCK) ){
     assert( locktype==SHARED_LOCK );
     assert( pFile->locktype==0 );
@@ -23346,7 +23346,7 @@ static int unixLock(sqlite3_file *id, int locktype){
   */
   lock.l_len = 1L;
   lock.l_whence = SEEK_SET;
-  if( locktype==SHARED_LOCK 
+  if( locktype==SHARED_LOCK
       || (locktype==EXCLUSIVE_LOCK && pFile->locktype<PENDING_LOCK)
   ){
     lock.l_type = (locktype==SHARED_LOCK?F_RDLCK:F_WRLCK);
@@ -23383,8 +23383,8 @@ static int unixLock(sqlite3_file *id, int locktype){
     if( fcntl(pFile->h, F_SETLK, &lock)!=0 ){
       if( s != -1 ){
         /* This could happen with a network mount */
-        tErrno = errno; 
-        rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_UNLOCK); 
+        tErrno = errno;
+        rc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_UNLOCK);
         if( IS_LOCK_ERROR(rc) ){
           pFile->lastErrno = tErrno;
         }
@@ -23432,7 +23432,7 @@ static int unixLock(sqlite3_file *id, int locktype){
       }
     }
   }
-  
+
 
 #ifndef NDEBUG
   /* Set up the transaction-counter change checking flags when
@@ -23461,7 +23461,7 @@ static int unixLock(sqlite3_file *id, int locktype){
 
 end_lock:
   unixLeaveMutex();
-  OSTRACE4("LOCK    %d %s %s (unix)\n", pFile->h, locktypeName(locktype), 
+  OSTRACE4("LOCK    %d %s %s (unix)\n", pFile->h, locktypeName(locktype),
       rc==SQLITE_OK ? "ok" : "failed");
   return rc;
 }
@@ -23472,9 +23472,9 @@ end_lock:
 ** cleared and SQLITE_OK returned.
 **
 ** Otherwise, if an error occurs, then successfully closed file descriptor
-** entries are removed from the list, and SQLITE_IOERR_CLOSE returned. 
+** entries are removed from the list, and SQLITE_IOERR_CLOSE returned.
 ** not deleted and SQLITE_IOERR_CLOSE returned.
-*/ 
+*/
 static int closePendingFds(unixFile *pFile){
   int rc = SQLITE_OK;
   struct unixOpenCnt *pOpen = pFile->pOpen;
@@ -23515,11 +23515,11 @@ static void setPendingFd(unixFile *pFile){
 **
 ** If the locking level of the file descriptor is already at or below
 ** the requested locking level, this routine is a no-op.
-** 
+**
 ** If handleNFSUnlock is true, then on downgrading an EXCLUSIVE_LOCK to SHARED
 ** the byte range is divided into 2 parts and the first part is unlocked then
-** set to a read lock, then the other part is simply unlocked.  This works 
-** around a bug in BSD NFS lockd (also seen on MacOSX 10.3+) that fails to 
+** set to a read lock, then the other part is simply unlocked.  This works
+** around a bug in BSD NFS lockd (also seen on MacOSX 10.3+) that fails to
 ** remove the write lock on a region when a read lock is set.
 */
 static int _posixUnlock(sqlite3_file *id, int locktype, int handleNFSUnlock){
@@ -23568,7 +23568,7 @@ static int _posixUnlock(sqlite3_file *id, int locktype, int handleNFSUnlock){
 
     /* downgrading to a shared lock on NFS involves clearing the write lock
     ** before establishing the readlock - to avoid a race condition we downgrade
-    ** the lock in 2 blocks, so that part of the range will be covered by a 
+    ** the lock in 2 blocks, so that part of the range will be covered by a
     ** write lock until the rest is covered by a read lock:
     **  1:   [WWWWW]
     **  2:   [....W]
@@ -23578,7 +23578,7 @@ static int _posixUnlock(sqlite3_file *id, int locktype, int handleNFSUnlock){
     if( locktype==SHARED_LOCK ){
       if( handleNFSUnlock ){
         off_t divSize = SHARED_SIZE - 1;
-        
+
         lock.l_type = F_UNLCK;
         lock.l_whence = SEEK_SET;
         lock.l_start = SHARED_FIRST;
@@ -23687,7 +23687,7 @@ static int _posixUnlock(sqlite3_file *id, int locktype, int handleNFSUnlock){
       }
     }
   }
-       
+
 end_unlock:
   unixLeaveMutex();
   if( rc==SQLITE_OK ) pFile->locktype = locktype;
@@ -23706,7 +23706,7 @@ static int unixUnlock(sqlite3_file *id, int locktype){
 }
 
 /*
-** This function performs the parts of the "close file" operation 
+** This function performs the parts of the "close file" operation
 ** common to all locking schemes. It closes the directory and file
 ** handles, if they are valid, and sets all fields of the unixFile
 ** structure to 0.
@@ -23763,7 +23763,7 @@ static int unixClose(sqlite3_file *id){
     if( pFile->pOpen && pFile->pOpen->nLock ){
       /* If there are outstanding locks, do not actually close the file just
       ** yet because that would clear those locks.  Instead, add the file
-      ** descriptor to pOpen->pUnused list.  It will be automatically closed 
+      ** descriptor to pOpen->pUnused list.  It will be automatically closed
       ** when the last lock is cleared.
       */
       setPendingFd(pFile);
@@ -23864,7 +23864,7 @@ static int dotlockCheckReservedLock(sqlite3_file *id, int *pResOut) {
   unixFile *pFile = (unixFile*)id;
 
   SimulateIOError( return SQLITE_IOERR_CHECKRESERVEDLOCK; );
-  
+
   assert( pFile );
 
   /* Check if a thread in this process holds such a lock */
@@ -23927,7 +23927,7 @@ static int dotlockLock(sqlite3_file *id, int locktype) {
 #endif
     return SQLITE_OK;
   }
-  
+
   /* grab an exclusive lock */
   fd = open(zLockFile,O_RDONLY|O_CREAT|O_EXCL,0600);
   if( fd<0 ){
@@ -23942,12 +23942,12 @@ static int dotlockLock(sqlite3_file *id, int locktype) {
       }
     }
     return rc;
-  } 
+  }
   if( close(fd) ){
     pFile->lastErrno = errno;
     rc = SQLITE_IOERR_CLOSE;
   }
-  
+
   /* got it, set the type and return ok */
   pFile->locktype = locktype;
   return rc;
@@ -23970,7 +23970,7 @@ static int dotlockUnlock(sqlite3_file *id, int locktype) {
   OSTRACE5("UNLOCK  %d %d was %d pid=%d (dotlock)\n", pFile->h, locktype,
           pFile->locktype, getpid());
   assert( locktype<=SHARED_LOCK );
-  
+
   /* no-op if possible */
   if( pFile->locktype==locktype ){
     return SQLITE_OK;
@@ -23983,7 +23983,7 @@ static int dotlockUnlock(sqlite3_file *id, int locktype) {
     pFile->locktype = SHARED_LOCK;
     return SQLITE_OK;
   }
-  
+
   /* To fully unlock the database, delete the lock file */
   assert( locktype==NO_LOCK );
   if( unlink(zLockFile) ){
@@ -23995,7 +23995,7 @@ static int dotlockUnlock(sqlite3_file *id, int locktype) {
     if( IS_LOCK_ERROR(rc) ){
       pFile->lastErrno = tErrno;
     }
-    return rc; 
+    return rc;
   }
   pFile->locktype = NO_LOCK;
   return SQLITE_OK;
@@ -24044,16 +24044,16 @@ static int flockCheckReservedLock(sqlite3_file *id, int *pResOut){
   int rc = SQLITE_OK;
   int reserved = 0;
   unixFile *pFile = (unixFile*)id;
-  
+
   SimulateIOError( return SQLITE_IOERR_CHECKRESERVEDLOCK; );
-  
+
   assert( pFile );
-  
+
   /* Check if a thread in this process holds such a lock */
   if( pFile->locktype>SHARED_LOCK ){
     reserved = 1;
   }
-  
+
   /* Otherwise see if some other process holds it. */
   if( !reserved ){
     /* attempt to get the lock */
@@ -24064,7 +24064,7 @@ static int flockCheckReservedLock(sqlite3_file *id, int *pResOut){
       if ( lrc ) {
         int tErrno = errno;
         /* unlock failed with an error */
-        lrc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_UNLOCK); 
+        lrc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_UNLOCK);
         if( IS_LOCK_ERROR(lrc) ){
           pFile->lastErrno = tErrno;
           rc = lrc;
@@ -24074,7 +24074,7 @@ static int flockCheckReservedLock(sqlite3_file *id, int *pResOut){
       int tErrno = errno;
       reserved = 1;
       /* someone else might have it reserved */
-      lrc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_LOCK); 
+      lrc = sqliteErrorFromPosixError(tErrno, SQLITE_IOERR_LOCK);
       if( IS_LOCK_ERROR(lrc) ){
         pFile->lastErrno = tErrno;
         rc = lrc;
@@ -24128,15 +24128,15 @@ static int flockLock(sqlite3_file *id, int locktype) {
 
   assert( pFile );
 
-  /* if we already have a lock, it is exclusive.  
+  /* if we already have a lock, it is exclusive.
   ** Just adjust level and punt on outta here. */
   if (pFile->locktype > NO_LOCK) {
     pFile->locktype = locktype;
     return SQLITE_OK;
   }
-  
+
   /* grab an exclusive lock */
-  
+
   if (flock(pFile->h, LOCK_EX | LOCK_NB)) {
     int tErrno = errno;
     /* didn't get, must be busy */
@@ -24148,7 +24148,7 @@ static int flockLock(sqlite3_file *id, int locktype) {
     /* got it, set the type and return ok */
     pFile->locktype = locktype;
   }
-  OSTRACE4("LOCK    %d %s %s (flock)\n", pFile->h, locktypeName(locktype), 
+  OSTRACE4("LOCK    %d %s %s (flock)\n", pFile->h, locktypeName(locktype),
            rc==SQLITE_OK ? "ok" : "failed");
 #ifdef SQLITE_IGNORE_FLOCK_LOCK_ERRORS
   if( (rc & SQLITE_IOERR) == SQLITE_IOERR ){
@@ -24168,23 +24168,23 @@ static int flockLock(sqlite3_file *id, int locktype) {
 */
 static int flockUnlock(sqlite3_file *id, int locktype) {
   unixFile *pFile = (unixFile*)id;
-  
+
   assert( pFile );
   OSTRACE5("UNLOCK  %d %d was %d pid=%d (flock)\n", pFile->h, locktype,
            pFile->locktype, getpid());
   assert( locktype<=SHARED_LOCK );
-  
+
   /* no-op if possible */
   if( pFile->locktype==locktype ){
     return SQLITE_OK;
   }
-  
+
   /* shared can just be set because we always have an exclusive */
   if (locktype==SHARED_LOCK) {
     pFile->locktype = locktype;
     return SQLITE_OK;
   }
-  
+
   /* no, really, unlock. */
   int rc = flock(pFile->h, LOCK_UN);
   if (rc) {
@@ -24198,7 +24198,7 @@ static int flockUnlock(sqlite3_file *id, int locktype) {
       r = SQLITE_BUSY;
     }
 #endif /* SQLITE_IGNORE_FLOCK_LOCK_ERRORS */
-    
+
     return r;
   } else {
     pFile->locktype = NO_LOCK;
@@ -24245,14 +24245,14 @@ static int semCheckReservedLock(sqlite3_file *id, int *pResOut) {
   unixFile *pFile = (unixFile*)id;
 
   SimulateIOError( return SQLITE_IOERR_CHECKRESERVEDLOCK; );
-  
+
   assert( pFile );
 
   /* Check if a thread in this process holds such a lock */
   if( pFile->locktype>SHARED_LOCK ){
     reserved = 1;
   }
-  
+
   /* Otherwise see if some other process holds it. */
   if( !reserved ){
     sem_t *pSem = pFile->pOpen->pSem;
@@ -24313,14 +24313,14 @@ static int semLock(sqlite3_file *id, int locktype) {
   sem_t *pSem = pFile->pOpen->pSem;
   int rc = SQLITE_OK;
 
-  /* if we already have a lock, it is exclusive.  
+  /* if we already have a lock, it is exclusive.
   ** Just adjust level and punt on outta here. */
   if (pFile->locktype > NO_LOCK) {
     pFile->locktype = locktype;
     rc = SQLITE_OK;
     goto sem_end_lock;
   }
-  
+
   /* lock semaphore now but bail out when already locked. */
   if( sem_trywait(pSem)==-1 ){
     rc = SQLITE_BUSY;
@@ -24350,18 +24350,18 @@ static int semUnlock(sqlite3_file *id, int locktype) {
   OSTRACE5("UNLOCK  %d %d was %d pid=%d (sem)\n", pFile->h, locktype,
           pFile->locktype, getpid());
   assert( locktype<=SHARED_LOCK );
-  
+
   /* no-op if possible */
   if( pFile->locktype==locktype ){
     return SQLITE_OK;
   }
-  
+
   /* shared can just be set because we always have an exclusive */
   if (locktype==SHARED_LOCK) {
     pFile->locktype = locktype;
     return SQLITE_OK;
   }
-  
+
   /* no, really unlock. */
   if ( sem_post(pSem)==-1 ) {
     int rc, tErrno = errno;
@@ -24369,7 +24369,7 @@ static int semUnlock(sqlite3_file *id, int locktype) {
     if( IS_LOCK_ERROR(rc) ){
       pFile->lastErrno = tErrno;
     }
-    return rc; 
+    return rc;
   }
   pFile->locktype = NO_LOCK;
   return SQLITE_OK;
@@ -24435,7 +24435,7 @@ struct ByteRangeLockPB2
 /*
 ** This is a utility for setting or clearing a bit-range lock on an
 ** AFP filesystem.
-** 
+**
 ** Return SQLITE_OK on success, SQLITE_BUSY on failure.
 */
 static int afpSetLock(
@@ -24447,14 +24447,14 @@ static int afpSetLock(
 ){
   struct ByteRangeLockPB2 pb;
   int err;
-  
+
   pb.unLockFlag = setLockFlag ? 0 : 1;
   pb.startEndFlag = 0;
   pb.offset = offset;
-  pb.length = length; 
+  pb.length = length;
   pb.fd = pFile->h;
-  
-  OSTRACE6("AFPSETLOCK [%s] for %d%s in range %llx:%llx\n", 
+
+  OSTRACE6("AFPSETLOCK [%s] for %d%s in range %llx:%llx\n",
     (setLockFlag?"ON":"OFF"), pFile->h, (pb.fd==-1?"[testval-1]":""),
     offset, length);
   err = fsctl(path, afpfsByteRangeLock2FSCTL, &pb, 0);
@@ -24488,9 +24488,9 @@ static int afpCheckReservedLock(sqlite3_file *id, int *pResOut){
   int rc = SQLITE_OK;
   int reserved = 0;
   unixFile *pFile = (unixFile*)id;
-  
+
   SimulateIOError( return SQLITE_IOERR_CHECKRESERVEDLOCK; );
-  
+
   assert( pFile );
   afpLockingContext *context = (afpLockingContext *) pFile->lockingContext;
   if( context->reserved ){
@@ -24498,17 +24498,17 @@ static int afpCheckReservedLock(sqlite3_file *id, int *pResOut){
     return SQLITE_OK;
   }
   unixEnterMutex(); /* Because pFile->pLock is shared across threads */
-  
+
   /* Check if a thread in this process holds such a lock */
   if( pFile->pLock->locktype>SHARED_LOCK ){
     reserved = 1;
   }
-  
+
   /* Otherwise see if some other process holds it.
    */
   if( !reserved ){
     /* lock the RESERVED byte */
-    int lrc = afpSetLock(context->dbPath, pFile, RESERVED_BYTE, 1,1);  
+    int lrc = afpSetLock(context->dbPath, pFile, RESERVED_BYTE, 1,1);
     if( SQLITE_OK==lrc ){
       /* if we succeeded in taking the reserved lock, unlock it to restore
       ** the original state */
@@ -24521,10 +24521,10 @@ static int afpCheckReservedLock(sqlite3_file *id, int *pResOut){
       rc=lrc;
     }
   }
-  
+
   unixLeaveMutex();
   OSTRACE4("TEST WR-LOCK %d %d %d (afp)\n", pFile->h, rc, reserved);
-  
+
   *pResOut = reserved;
   return rc;
 }
@@ -24558,7 +24558,7 @@ static int afpLock(sqlite3_file *id, int locktype){
   unixFile *pFile = (unixFile*)id;
   struct unixLockInfo *pLock = pFile->pLock;
   afpLockingContext *context = (afpLockingContext *) pFile->lockingContext;
-  
+
   assert( pFile );
   OSTRACE7("LOCK    %d %s was %s(%s,%d) pid=%d (afp)\n", pFile->h,
            locktypeName(locktype), locktypeName(pFile->locktype),
@@ -24582,7 +24582,7 @@ static int afpLock(sqlite3_file *id, int locktype){
   assert( pFile->locktype!=NO_LOCK || locktype==SHARED_LOCK );
   assert( locktype!=PENDING_LOCK );
   assert( locktype!=RESERVED_LOCK || pFile->locktype==SHARED_LOCK );
-  
+
   /* This mutex is needed because pFile->pLock is shared across threads
   */
   unixEnterMutex();
@@ -24599,18 +24599,18 @@ static int afpLock(sqlite3_file *id, int locktype){
   /* If some thread using this PID has a lock via a different unixFile*
   ** handle that precludes the requested lock, return BUSY.
   */
-  if( (pFile->locktype!=pLock->locktype && 
+  if( (pFile->locktype!=pLock->locktype &&
        (pLock->locktype>=PENDING_LOCK || locktype>SHARED_LOCK))
      ){
     rc = SQLITE_BUSY;
     goto afp_end_lock;
   }
-  
+
   /* If a SHARED lock is requested, and some thread using this PID already
   ** has a SHARED or RESERVED lock, then increment reference counts and
   ** return SQLITE_OK.
   */
-  if( locktype==SHARED_LOCK && 
+  if( locktype==SHARED_LOCK &&
      (pLock->locktype==SHARED_LOCK || pLock->locktype==RESERVED_LOCK) ){
     assert( locktype==SHARED_LOCK );
     assert( pFile->locktype==0 );
@@ -24620,12 +24620,12 @@ static int afpLock(sqlite3_file *id, int locktype){
     pFile->pOpen->nLock++;
     goto afp_end_lock;
   }
-    
+
   /* A PENDING lock is needed before acquiring a SHARED lock and before
   ** acquiring an EXCLUSIVE lock.  For the SHARED lock, the PENDING will
   ** be released.
   */
-  if( locktype==SHARED_LOCK 
+  if( locktype==SHARED_LOCK
       || (locktype==EXCLUSIVE_LOCK && pFile->locktype<PENDING_LOCK)
   ){
     int failed;
@@ -24635,30 +24635,30 @@ static int afpLock(sqlite3_file *id, int locktype){
       goto afp_end_lock;
     }
   }
-  
+
   /* If control gets to this point, then actually go ahead and make
   ** operating system calls for the specified lock.
   */
   if( locktype==SHARED_LOCK ){
     int lrc1, lrc2, lrc1Errno;
     long lk, mask;
-    
+
     assert( pLock->cnt==0 );
     assert( pLock->locktype==0 );
-        
+
     mask = (sizeof(long)==8) ? LARGEST_INT64 : 0x7fffffff;
     /* Now get the read-lock SHARED_LOCK */
     /* note that the quality of the randomness doesn't matter that much */
-    lk = random(); 
+    lk = random();
     pLock->sharedByte = (lk & mask)%(SHARED_SIZE - 1);
-    lrc1 = afpSetLock(context->dbPath, pFile, 
+    lrc1 = afpSetLock(context->dbPath, pFile,
           SHARED_FIRST+pLock->sharedByte, 1, 1);
     if( IS_LOCK_ERROR(lrc1) ){
       lrc1Errno = pFile->lastErrno;
     }
     /* Drop the temporary PENDING lock */
     lrc2 = afpSetLock(context->dbPath, pFile, PENDING_BYTE, 1, 0);
-    
+
     if( IS_LOCK_ERROR(lrc1) ) {
       pFile->lastErrno = lrc1Errno;
       rc = lrc1;
@@ -24693,34 +24693,34 @@ static int afpLock(sqlite3_file *id, int locktype){
     }
     if (!failed && locktype == EXCLUSIVE_LOCK) {
       /* Acquire an EXCLUSIVE lock */
-        
-      /* Remove the shared lock before trying the range.  we'll need to 
+
+      /* Remove the shared lock before trying the range.  we'll need to
       ** reestablish the shared lock if we can't get the  afpUnlock
       */
       if( !(failed = afpSetLock(context->dbPath, pFile, SHARED_FIRST +
                          pLock->sharedByte, 1, 0)) ){
         int failed2 = SQLITE_OK;
         /* now attemmpt to get the exclusive lock range */
-        failed = afpSetLock(context->dbPath, pFile, SHARED_FIRST, 
+        failed = afpSetLock(context->dbPath, pFile, SHARED_FIRST,
                                SHARED_SIZE, 1);
-        if( failed && (failed2 = afpSetLock(context->dbPath, pFile, 
+        if( failed && (failed2 = afpSetLock(context->dbPath, pFile,
                        SHARED_FIRST + pLock->sharedByte, 1, 1)) ){
           /* Can't reestablish the shared lock.  Sqlite can't deal, this is
           ** a critical I/O error
           */
-          rc = ((failed & SQLITE_IOERR) == SQLITE_IOERR) ? failed2 : 
+          rc = ((failed & SQLITE_IOERR) == SQLITE_IOERR) ? failed2 :
                SQLITE_IOERR_LOCK;
           goto afp_end_lock;
-        } 
+        }
       }else{
-        rc = failed; 
+        rc = failed;
       }
     }
     if( failed ){
       rc = failed;
     }
   }
-  
+
   if( rc==SQLITE_OK ){
     pFile->locktype = locktype;
     pLock->locktype = locktype;
@@ -24728,10 +24728,10 @@ static int afpLock(sqlite3_file *id, int locktype){
     pFile->locktype = PENDING_LOCK;
     pLock->locktype = PENDING_LOCK;
   }
-  
+
 afp_end_lock:
   unixLeaveMutex();
-  OSTRACE4("LOCK    %d %s %s (afp)\n", pFile->h, locktypeName(locktype), 
+  OSTRACE4("LOCK    %d %s %s (afp)\n", pFile->h, locktypeName(locktype),
          rc==SQLITE_OK ? "ok" : "failed");
   return rc;
 }
@@ -24772,7 +24772,7 @@ static int afpUnlock(sqlite3_file *id, int locktype) {
     SimulateIOErrorBenign(1);
     SimulateIOError( h=(-1) )
     SimulateIOErrorBenign(0);
-    
+
 #ifndef NDEBUG
     /* When reducing a lock such that other processes can start
     ** reading the database file again, make sure that the
@@ -24787,7 +24787,7 @@ static int afpUnlock(sqlite3_file *id, int locktype) {
            || pFile->transCntrChng==1 );
     pFile->inNormalWrite = 0;
 #endif
-    
+
     if( pFile->locktype==EXCLUSIVE_LOCK ){
       rc = afpSetLock(context->dbPath, pFile, SHARED_FIRST, SHARED_SIZE, 0);
       if( rc==SQLITE_OK && (locktype==SHARED_LOCK || pLock->cnt>1) ){
@@ -24800,11 +24800,11 @@ static int afpUnlock(sqlite3_file *id, int locktype) {
     }
     if( rc==SQLITE_OK && pFile->locktype>=PENDING_LOCK ){
       rc = afpSetLock(context->dbPath, pFile, PENDING_BYTE, 1, 0);
-    } 
+    }
     if( rc==SQLITE_OK && pFile->locktype>=RESERVED_LOCK && context->reserved ){
       rc = afpSetLock(context->dbPath, pFile, RESERVED_BYTE, 1, 0);
-      if( !rc ){ 
-        context->reserved = 0; 
+      if( !rc ){
+        context->reserved = 0;
       }
     }
     if( rc==SQLITE_OK && (locktype==SHARED_LOCK || pLock->cnt>1)){
@@ -24833,7 +24833,7 @@ static int afpUnlock(sqlite3_file *id, int locktype) {
     }
     if( rc==SQLITE_OK ){
       struct unixOpenCnt *pOpen = pFile->pOpen;
-        
+
       pOpen->nLock--;
       assert( pOpen->nLock>=0 );
       if( pOpen->nLock==0 ){
@@ -24841,14 +24841,14 @@ static int afpUnlock(sqlite3_file *id, int locktype) {
       }
     }
   }
-  
+
   unixLeaveMutex();
   if( rc==SQLITE_OK ) pFile->locktype = locktype;
   return rc;
 }
 
 /*
-** Close a file & cleanup AFP specific locking context 
+** Close a file & cleanup AFP specific locking context
 */
 static int afpClose(sqlite3_file *id) {
   int rc = SQLITE_OK;
@@ -24902,7 +24902,7 @@ static int nfsUnlock(sqlite3_file *id, int locktype){
 /*
 ** The code above is the NFS lock implementation.  The code is specific
 ** to MacOSX and does not work on other unix platforms.  No alternative
-** is available.  
+** is available.
 **
 ********************* End of the NFS lock implementation **********************
 ******************************************************************************/
@@ -24910,7 +24910,7 @@ static int nfsUnlock(sqlite3_file *id, int locktype){
 /******************************************************************************
 **************** Non-locking sqlite3_file methods *****************************
 **
-** The next division contains implementations for all methods of the 
+** The next division contains implementations for all methods of the
 ** sqlite3_file object other than the locking methods.  The locking
 ** methods were defined in divisions above (one locking method per
 ** division).  Those methods that are common to all locking modes
@@ -24918,7 +24918,7 @@ static int nfsUnlock(sqlite3_file *id, int locktype){
 */
 
 /*
-** Seek to the offset passed as the second argument, then read cnt 
+** Seek to the offset passed as the second argument, then read cnt
 ** bytes into pBuf. Return the number of bytes actually read.
 **
 ** NB:  If you define USE_PREAD or USE_PREAD64, then it might also
@@ -24949,7 +24949,7 @@ static int seekAndRead(unixFile *id, sqlite3_int64 offset, void *pBuf, int cnt){
     if( newOffset == -1 ){
       ((unixFile*)id)->lastErrno = errno;
     }else{
-      ((unixFile*)id)->lastErrno = 0;                  
+      ((unixFile*)id)->lastErrno = 0;
     }
     return -1;
   }
@@ -24969,8 +24969,8 @@ static int seekAndRead(unixFile *id, sqlite3_int64 offset, void *pBuf, int cnt){
 ** wrong.
 */
 static int unixRead(
-  sqlite3_file *id, 
-  void *pBuf, 
+  sqlite3_file *id,
+  void *pBuf,
   int amt,
   sqlite3_int64 offset
 ){
@@ -24982,7 +24982,7 @@ static int unixRead(
   ** file), the bytes in the locking range should never be read or written. */
   assert( pFile->pUnused==0
        || offset>=PENDING_BYTE+512
-       || offset+amt<=PENDING_BYTE 
+       || offset+amt<=PENDING_BYTE
   );
 
   got = seekAndRead(pFile, offset, pBuf, amt);
@@ -25022,7 +25022,7 @@ static int seekAndWrite(unixFile *id, i64 offset, const void *pBuf, int cnt){
     if( newOffset == -1 ){
       ((unixFile*)id)->lastErrno = errno;
     }else{
-      ((unixFile*)id)->lastErrno = 0;                  
+      ((unixFile*)id)->lastErrno = 0;
     }
     return -1;
   }
@@ -25043,10 +25043,10 @@ static int seekAndWrite(unixFile *id, i64 offset, const void *pBuf, int cnt){
 ** or some other error code on failure.
 */
 static int unixWrite(
-  sqlite3_file *id, 
-  const void *pBuf, 
+  sqlite3_file *id,
+  const void *pBuf,
   int amt,
-  sqlite3_int64 offset 
+  sqlite3_int64 offset
 ){
   unixFile *pFile = (unixFile*)id;
   int wrote = 0;
@@ -25057,7 +25057,7 @@ static int unixWrite(
   ** file), the bytes in the locking range should never be read or written. */
   assert( pFile->pUnused==0
        || offset>=PENDING_BYTE+512
-       || offset+amt<=PENDING_BYTE 
+       || offset+amt<=PENDING_BYTE
   );
 
 #ifndef NDEBUG
@@ -25145,8 +25145,8 @@ SQLITE_API int sqlite3_fullsync_count = 0;
 **
 ** SQLite sets the dataOnly flag if the size of the file is unchanged.
 ** The idea behind dataOnly is that it should only write the file content
-** to disk, not the inode.  We only set dataOnly if the file size is 
-** unchanged since the file size is part of the inode.  However, 
+** to disk, not the inode.  We only set dataOnly if the file size is
+** unchanged since the file size is part of the inode.  However,
 ** Ted Ts'o tells us that fdatasync() will also write the inode if the
 ** file size has changed.  The only real difference between fdatasync()
 ** and fsync(), Ted tells us, is that fdatasync() will not flush the
@@ -25160,7 +25160,7 @@ static int full_fsync(int fd, int fullSync, int dataOnly){
   int rc;
 
   /* The following "ifdef/elif/else/" block has the same structure as
-  ** the one below. It is replicated here solely to avoid cluttering 
+  ** the one below. It is replicated here solely to avoid cluttering
   ** up the real code with the UNUSED_PARAMETER() macros.
   */
 #ifdef SQLITE_NO_SYNC
@@ -25174,7 +25174,7 @@ static int full_fsync(int fd, int fullSync, int dataOnly){
   UNUSED_PARAMETER(dataOnly);
 #endif
 
-  /* Record the number of times that we do a normal fsync() and 
+  /* Record the number of times that we do a normal fsync() and
   ** FULLSYNC.  This is used during testing to verify that this procedure
   ** gets called with the correct arguments.
   */
@@ -25195,11 +25195,11 @@ static int full_fsync(int fd, int fullSync, int dataOnly){
     rc = 1;
   }
   /* If the FULLFSYNC failed, fall back to attempting an fsync().
-  ** It shouldn't be possible for fullfsync to fail on the local 
+  ** It shouldn't be possible for fullfsync to fail on the local
   ** file system (on OSX), so failure indicates that FULLFSYNC
-  ** isn't supported for this file system. So, attempt an fsync 
-  ** and (for now) ignore the overhead of a superfluous fcntl call.  
-  ** It'd be better to detect fullfsync support once and avoid 
+  ** isn't supported for this file system. So, attempt an fsync
+  ** and (for now) ignore the overhead of a superfluous fcntl call.
+  ** It'd be better to detect fullfsync support once and avoid
   ** the fcntl call every time sync is called.
   */
   if( rc ) rc = fsync(fd);
@@ -25209,7 +25209,7 @@ static int full_fsync(int fd, int fullSync, int dataOnly){
   ** so currently we default to the macro that redefines fdatasync to fsync
   */
   rc = fsync(fd);
-#else 
+#else
   rc = fdatasync(fd);
 #if OS_VXWORKS
   if( rc==-1 && errno==ENOTSUP ){
@@ -25580,8 +25580,8 @@ IOMETHODS(
 #endif
 
 #if defined(__APPLE__) && SQLITE_ENABLE_LOCKING_STYLE
-/* 
-** This "finder" function attempts to determine the best locking strategy 
+/*
+** This "finder" function attempts to determine the best locking strategy
 ** for the database file "filePath".  It then returns the sqlite3_io_methods
 ** object that implements that strategy.
 **
@@ -25623,8 +25623,8 @@ static const sqlite3_io_methods *autolockIoFinderImpl(
   }
 
   /* Default case. Handles, amongst others, "nfs".
-  ** Test byte-range lock using fcntl(). If the call succeeds, 
-  ** assume that the file-system supports POSIX style locks. 
+  ** Test byte-range lock using fcntl(). If the call succeeds,
+  ** assume that the file-system supports POSIX style locks.
   */
   lockInfo.l_len = 1;
   lockInfo.l_start = 0;
@@ -25640,14 +25640,14 @@ static const sqlite3_io_methods *autolockIoFinderImpl(
     return &dotlockIoMethods;
   }
 }
-static const sqlite3_io_methods 
+static const sqlite3_io_methods
   *(*const autolockIoFinder)(const char*,unixFile*) = autolockIoFinderImpl;
 
 #endif /* defined(__APPLE__) && SQLITE_ENABLE_LOCKING_STYLE */
 
 #if OS_VXWORKS && SQLITE_ENABLE_LOCKING_STYLE
-/* 
-** This "finder" function attempts to determine the best locking strategy 
+/*
+** This "finder" function attempts to determine the best locking strategy
 ** for the database file "filePath".  It then returns the sqlite3_io_methods
 ** object that implements that strategy.
 **
@@ -25678,7 +25678,7 @@ static const sqlite3_io_methods *autolockIoFinderImpl(
     return &semIoMethods;
   }
 }
-static const sqlite3_io_methods 
+static const sqlite3_io_methods
   *(*const autolockIoFinder)(const char*,unixFile*) = autolockIoFinderImpl;
 
 #endif /* OS_VXWORKS && SQLITE_ENABLE_LOCKING_STYLE */
@@ -25715,12 +25715,12 @@ static int fillInUnixFile(
   assert( pNew->pLock==NULL );
   assert( pNew->pOpen==NULL );
 
-  /* Parameter isDelete is only used on vxworks. Express this explicitly 
+  /* Parameter isDelete is only used on vxworks. Express this explicitly
   ** here to prevent compiler warnings about unused parameters.
   */
   UNUSED_PARAMETER(isDelete);
 
-  OSTRACE3("OPEN    %-3d %s\n", h, zFilename);    
+  OSTRACE3("OPEN    %-3d %s\n", h, zFilename);
   pNew->h = h;
   pNew->dirfd = dirfd;
   SET_THREADID(pNew);
@@ -25801,14 +25801,14 @@ static int fillInUnixFile(
         close(h);
         h = -1;
       }
-      unixLeaveMutex();        
+      unixLeaveMutex();
     }
   }
 #endif
 
   else if( pLockingStyle == &dotlockIoMethods ){
     /* Dotfile locking uses the file path so it needs to be included in
-    ** the dotlockLockingContext 
+    ** the dotlockLockingContext
     */
     char *zLockFile;
     int nFilename;
@@ -25845,7 +25845,7 @@ static int fillInUnixFile(
     unixLeaveMutex();
   }
 #endif
-  
+
   pNew->lastErrno = 0;
 #if OS_VXWORKS
   if( rc!=SQLITE_OK ){
@@ -25921,7 +25921,7 @@ static int getTempname(int nBuf, char *zBuf){
 
   /* It's odd to simulate an io-error here, but really this is just
   ** using the io-error infrastructure to test that SQLite handles this
-  ** function failing. 
+  ** function failing.
   */
   SimulateIOError( return SQLITE_IOERR );
 
@@ -25929,7 +25929,7 @@ static int getTempname(int nBuf, char *zBuf){
   if (NULL == azDirs[1]) {
     azDirs[1] = getenv("TMPDIR");
   }
-  
+
   for(i=0; i<sizeof(azDirs)/sizeof(azDirs[0]); i++){
     if( azDirs[i]==0 ) continue;
     if( stat(azDirs[i], &buf) ) continue;
@@ -25939,7 +25939,7 @@ static int getTempname(int nBuf, char *zBuf){
     break;
   }
 
-  /* Check that the output buffer is large enough for the temporary file 
+  /* Check that the output buffer is large enough for the temporary file
   ** name. If it is not, return SQLITE_ERROR.
   */
   if( (strlen(zDir) + strlen(SQLITE_TEMP_FILE_PREFIX) + 17) >= (size_t)nBuf ){
@@ -25968,7 +25968,7 @@ static int proxyTransformUnixFile(unixFile*, const char*);
 #endif
 
 /*
-** Search for an unused file descriptor that was opened on the database 
+** Search for an unused file descriptor that was opened on the database
 ** file (not a journal or master-journal file) identified by pathname
 ** zPath with SQLITE_OPEN_XXX flags matching those passed as the second
 ** argument to this function.
@@ -25977,7 +25977,7 @@ static int proxyTransformUnixFile(unixFile*, const char*);
 ** but the associated file descriptor could not be closed because some
 ** other file descriptor open on the same file is holding a file-lock.
 ** Refer to comments in the unixClose() function and the lengthy comment
-** describing "Posix Advisory Locking" at the start of this file for 
+** describing "Posix Advisory Locking" at the start of this file for
 ** further details. Also, ticket #4018.
 **
 ** If a suitable file descriptor is found, then it is returned. If no
@@ -25988,8 +25988,8 @@ static UnixUnusedFd *findReusableFd(const char *zPath, int flags){
 
   /* Do not search for an unused file descriptor on vxworks. Not because
   ** vxworks would not benefit from the change (it might, we're not sure),
-  ** but because no way to test it is currently available. It is better 
-  ** not to risk breaking vxworks support for the sake of such an obscure 
+  ** but because no way to test it is currently available. It is better
+  ** not to risk breaking vxworks support for the sake of such an obscure
   ** feature.  */
 #if !OS_VXWORKS
   struct stat sStat;                   /* Results of stat() call */
@@ -26027,7 +26027,7 @@ static UnixUnusedFd *findReusableFd(const char *zPath, int flags){
 
 /*
 ** Open the file zPath.
-** 
+**
 ** Previously, the SQLite OS layer used three functions in place of this
 ** one:
 **
@@ -26038,13 +26038,13 @@ static UnixUnusedFd *findReusableFd(const char *zPath, int flags){
 ** These calls correspond to the following combinations of flags:
 **
 **     ReadWrite() ->     (READWRITE | CREATE)
-**     ReadOnly()  ->     (READONLY) 
+**     ReadOnly()  ->     (READONLY)
 **     OpenExclusive() -> (READWRITE | CREATE | EXCLUSIVE)
 **
 ** The old OpenExclusive() accepted a boolean argument - "delFlag". If
 ** true, the file was configured to be automatically deleted when the
-** file handle closed. To achieve the same effect using this new 
-** interface, add the DELETEONCLOSE flag to those specified above for 
+** file handle closed. To achieve the same effect using this new
+** interface, add the DELETEONCLOSE flag to those specified above for
 ** OpenExclusive().
 */
 static int unixOpen(
@@ -26075,7 +26075,7 @@ static int unixOpen(
   ** a file-descriptor on the directory too. The first time unixSync()
   ** is called the directory file descriptor will be fsync()ed and close()d.
   */
-  int isOpenDirectory = (isCreate && 
+  int isOpenDirectory = (isCreate &&
       (eType==SQLITE_OPEN_MASTER_JOURNAL || eType==SQLITE_OPEN_MAIN_JOURNAL)
   );
 
@@ -26085,9 +26085,9 @@ static int unixOpen(
   char zTmpname[MAX_PATHNAME+1];
   const char *zName = zPath;
 
-  /* Check the following statements are true: 
+  /* Check the following statements are true:
   **
-  **   (a) Exactly one of the READWRITE and READONLY flags must be set, and 
+  **   (a) Exactly one of the READWRITE and READONLY flags must be set, and
   **   (b) if CREATE is set, then READWRITE must also be set, and
   **   (c) if EXCLUSIVE is set, then CREATE must also be set.
   **   (d) if DELETEONCLOSE is set, then CREATE must also be set.
@@ -26104,9 +26104,9 @@ static int unixOpen(
   assert( (!isDelete && zName) || eType!=SQLITE_OPEN_MASTER_JOURNAL );
 
   /* Assert that the upper layer has set one of the "file-type" flags. */
-  assert( eType==SQLITE_OPEN_MAIN_DB      || eType==SQLITE_OPEN_TEMP_DB 
-       || eType==SQLITE_OPEN_MAIN_JOURNAL || eType==SQLITE_OPEN_TEMP_JOURNAL 
-       || eType==SQLITE_OPEN_SUBJOURNAL   || eType==SQLITE_OPEN_MASTER_JOURNAL 
+  assert( eType==SQLITE_OPEN_MAIN_DB      || eType==SQLITE_OPEN_TEMP_DB
+       || eType==SQLITE_OPEN_MAIN_JOURNAL || eType==SQLITE_OPEN_TEMP_JOURNAL
+       || eType==SQLITE_OPEN_SUBJOURNAL   || eType==SQLITE_OPEN_MASTER_JOURNAL
        || eType==SQLITE_OPEN_TRANSIENT_DB
   );
 
@@ -26136,7 +26136,7 @@ static int unixOpen(
 
   /* Determine the value of the flags parameter passed to POSIX function
   ** open(). These must be calculated even if open() is not called, as
-  ** they may be stored as part of the file handle and used by the 
+  ** they may be stored as part of the file handle and used by the
   ** 'conch file' locking functions later on.  */
   if( isReadonly )  openFlags |= O_RDONLY;
   if( isReadWrite ) openFlags |= O_RDWR;
@@ -26203,7 +26203,7 @@ static int unixOpen(
 
   noLock = eType!=SQLITE_OPEN_MAIN_DB;
 
-  
+
 #if defined(__APPLE__) || SQLITE_ENABLE_LOCKING_STYLE
   struct statfs fsInfo;
   if( fstatfs(fd, &fsInfo) == -1 ){
@@ -26216,7 +26216,7 @@ static int unixOpen(
     ((unixFile*)pFile)->fsFlags |= SQLITE_FSFLAGS_IS_MSDOS;
   }
 #endif
-  
+
 #if SQLITE_ENABLE_LOCKING_STYLE
 #if SQLITE_PREFER_PROXY_LOCKING
   isAutoProxy = 1;
@@ -26225,7 +26225,7 @@ static int unixOpen(
     char *envforce = getenv("SQLITE_FORCE_PROXY_LOCKING");
     int useProxy = 0;
 
-    /* SQLITE_FORCE_PROXY_LOCKING==1 means force always use proxy, 0 means 
+    /* SQLITE_FORCE_PROXY_LOCKING==1 means force always use proxy, 0 means
     ** never use proxy, NULL means use proxy for non-local files only.  */
     if( envforce!=NULL ){
       useProxy = atoi(envforce)>0;
@@ -26254,9 +26254,9 @@ static int unixOpen(
       if( rc==SQLITE_OK ){
         rc = proxyTransformUnixFile((unixFile*)pFile, ":auto:");
         if( rc!=SQLITE_OK ){
-          /* Use unixClose to clean up the resources added in fillInUnixFile 
-          ** and clear all the structure's references.  Specifically, 
-          ** pFile->pMethods will be NULL so sqlite3OsClose will be a no-op 
+          /* Use unixClose to clean up the resources added in fillInUnixFile
+          ** and clear all the structure's references.  Specifically,
+          ** pFile->pMethods will be NULL so sqlite3OsClose will be a no-op
           */
           unixClose(pFile);
           return rc;
@@ -26266,7 +26266,7 @@ static int unixOpen(
     }
   }
 #endif
-  
+
   rc = fillInUnixFile(pVfs, fd, dirfd, pFile, zPath, noLock, isDelete);
 open_finished:
   if( rc!=SQLITE_OK ){
@@ -26352,9 +26352,9 @@ static int unixAccess(
 /*
 ** Turn a relative pathname into a full pathname. The relative path
 ** is stored as a nul-terminated string in the buffer pointed to by
-** zPath. 
+** zPath.
 **
-** zOut points to a buffer of at least sqlite3_vfs.mxPathname bytes 
+** zOut points to a buffer of at least sqlite3_vfs.mxPathname bytes
 ** (in this case, MAX_PATHNAME bytes). The full-path is written to
 ** this buffer before returning.
 */
@@ -26419,7 +26419,7 @@ static void unixDlError(sqlite3_vfs *NotUsed, int nBuf, char *zBufOut){
   unixLeaveMutex();
 }
 static void (*unixDlSym(sqlite3_vfs *NotUsed, void *p, const char*zSym))(void){
-  /* 
+  /*
   ** GCC with -pedantic-errors says that C90 does not allow a void* to be
   ** cast into a pointer to a function.  And yet the library dlsym() routine
   ** returns a void* which is really a pointer to a function.  So how do we
@@ -26429,7 +26429,7 @@ static void (*unixDlSym(sqlite3_vfs *NotUsed, void *p, const char*zSym))(void){
   ** parameters void* and const char* and returning a pointer to a function.
   ** We initialize x by assigning it a pointer to the dlsym() function.
   ** (That assignment requires a cast.)  Then we call the function that
-  ** x points to.  
+  ** x points to.
   **
   ** This work-around is unlikely to work correctly on any system where
   ** you really cannot cast a function pointer into void*.  But then, on the
@@ -26607,7 +26607,7 @@ static int unixGetLastError(sqlite3_vfs *NotUsed, int NotUsed2, char *NotUsed3){
 ** address in the shared range is taken for a SHARED lock, the entire
 ** shared range is taken for an EXCLUSIVE lock):
 **
-**      PENDING_BYTE        0x40000000                 
+**      PENDING_BYTE        0x40000000
 **      RESERVED_BYTE       0x40000001
 **      SHARED_RANGE        0x40000002 -> 0x40000200
 **
@@ -26625,7 +26625,7 @@ static int unixGetLastError(sqlite3_vfs *NotUsed, int NotUsed2, char *NotUsed3){
 ** To address the performance and cache coherency issues, proxy file locking
 ** changes the way database access is controlled by limiting access to a
 ** single host at a time and moving file locks off of the database file
-** and onto a proxy file on the local file system.  
+** and onto a proxy file on the local file system.
 **
 **
 ** Using proxy locks
@@ -26650,19 +26650,19 @@ static int unixGetLastError(sqlite3_vfs *NotUsed, int NotUsed2, char *NotUsed3){
 ** actual proxy file name is generated from the name and path of the
 ** database file.  For example:
 **
-**       For database path "/Users/me/foo.db" 
+**       For database path "/Users/me/foo.db"
 **       The lock path will be "<tmpdir>/sqliteplocks/_Users_me_foo.db:auto:")
 **
 ** Once a lock proxy is configured for a database connection, it can not
 ** be removed, however it may be switched to a different proxy path via
 ** the above APIs (assuming the conch file is not being held by another
-** connection or process). 
+** connection or process).
 **
 **
 ** How proxy locking works
 ** -----------------------
 **
-** Proxy file locking relies primarily on two new supporting files: 
+** Proxy file locking relies primarily on two new supporting files:
 **
 **   *  conch file to limit access to the database file to a single host
 **      at a time
@@ -26689,11 +26689,11 @@ static int unixGetLastError(sqlite3_vfs *NotUsed, int NotUsed2, char *NotUsed3){
 ** host (the conch ensures that they all use the same local lock file).
 **
 ** Requesting the lock proxy does not immediately take the conch, it is
-** only taken when the first request to lock database file is made.  
+** only taken when the first request to lock database file is made.
 ** This matches the semantics of the traditional locking behavior, where
 ** opening a connection to a database file does not take a lock on it.
-** The shared lock and an open file descriptor are maintained until 
-** the connection to the database is closed. 
+** The shared lock and an open file descriptor are maintained until
+** the connection to the database is closed.
 **
 ** The proxy file and the lock file are never deleted so they only need
 ** to be created the first time they are used.
@@ -26707,7 +26707,7 @@ static int unixGetLastError(sqlite3_vfs *NotUsed, int NotUsed2, char *NotUsed3){
 **       automatically configured for proxy locking, lock files are
 **       named automatically using the same logic as
 **       PRAGMA lock_proxy_file=":auto:"
-**    
+**
 **  SQLITE_PROXY_DEBUG
 **
 **       Enables the logging of error messages during host id file
@@ -26722,8 +26722,8 @@ static int unixGetLastError(sqlite3_vfs *NotUsed, int NotUsed2, char *NotUsed3){
 **
 **       Permissions to use when creating a directory for storing the
 **       lock proxy files, only used when LOCKPROXYDIR is not set.
-**    
-**    
+**
+**
 ** As mentioned above, when compiled with SQLITE_PREFER_PROXY_LOCKING,
 ** setting the environment variable SQLITE_FORCE_PROXY_LOCKING to 1 will
 ** force proxy locking to be used for every database file opened, and 0
@@ -26733,12 +26733,12 @@ static int unixGetLastError(sqlite3_vfs *NotUsed, int NotUsed2, char *NotUsed3){
 */
 
 /*
-** Proxy locking is only available on MacOSX 
+** Proxy locking is only available on MacOSX
 */
 #if defined(__APPLE__) && SQLITE_ENABLE_LOCKING_STYLE
 
 /*
-** The proxyLockingContext has the path and file structures for the remote 
+** The proxyLockingContext has the path and file structures for the remote
 ** and local proxy files in it
 */
 typedef struct proxyLockingContext proxyLockingContext;
@@ -26753,10 +26753,10 @@ struct proxyLockingContext {
   sqlite3_io_methods const *pOldMethod;     /* Original I/O methods for close */
 };
 
-/* 
-** The proxy lock file path for the database at dbPath is written into lPath, 
+/*
+** The proxy lock file path for the database at dbPath is written into lPath,
 ** which must point to valid, writable memory large enough for a maxLen length
-** file path. 
+** file path.
 */
 static int proxyGetLockPath(const char *dbPath, char *lPath, size_t maxLen){
   int len;
@@ -26773,7 +26773,7 @@ static int proxyGetLockPath(const char *dbPath, char *lPath, size_t maxLen){
                lPath, errno, getpid());
       return SQLITE_IOERR_LOCK;
     }
-    len = strlcat(lPath, "sqliteplocks", maxLen);    
+    len = strlcat(lPath, "sqliteplocks", maxLen);
   }
 # else
   len = strlcpy(lPath, "/tmp/", maxLen);
@@ -26783,7 +26783,7 @@ static int proxyGetLockPath(const char *dbPath, char *lPath, size_t maxLen){
   if( lPath[len-1]!='/' ){
     len = strlcat(lPath, "/", maxLen);
   }
-  
+
   /* transform the db path to a unique cache name */
   dbLen = (int)strlen(dbPath);
   for( i=0; i<dbLen && (i+len+7)<maxLen; i++){
@@ -26796,14 +26796,14 @@ static int proxyGetLockPath(const char *dbPath, char *lPath, size_t maxLen){
   return SQLITE_OK;
 }
 
-/* 
+/*
  ** Creates the lock file and any missing directories in lockPath
  */
 static int proxyCreateLockPath(const char *lockPath){
   int i, len;
   char buf[MAXPATHLEN];
   int start = 0;
-  
+
   assert(lockPath!=NULL);
   /* try to create all the intermediate directories */
   len = (int)strlen(lockPath);
@@ -26811,7 +26811,7 @@ static int proxyCreateLockPath(const char *lockPath){
   for( i=1; i<len; i++ ){
     if( lockPath[i] == '/' && (i - start > 0) ){
       /* only mkdir if leaf dir != "." or "/" or ".." */
-      if( i-start>2 || (i-start==1 && buf[start] != '.' && buf[start] != '/') 
+      if( i-start>2 || (i-start==1 && buf[start] != '.' && buf[start] != '/')
          || (i-start==2 && buf[start] != '.' && buf[start+1] != '.') ){
         buf[i]='\0';
         if( mkdir(buf, SQLITE_DEFAULT_PROXYDIR_PERMISSIONS) ){
@@ -26889,13 +26889,13 @@ static int proxyCreateUnixFile(
     switch (terrno) {
       case EACCES:
         return SQLITE_PERM;
-      case EIO: 
+      case EIO:
         return SQLITE_IOERR_LOCK; /* even though it is the conch */
       default:
         return SQLITE_CANTOPEN_BKPT;
     }
   }
-  
+
   pNew = (unixFile *)sqlite3_malloc(sizeof(*pNew));
   if( pNew==NULL ){
     rc = SQLITE_NOMEM;
@@ -26907,13 +26907,13 @@ static int proxyCreateUnixFile(
   pUnused->fd = fd;
   pUnused->flags = openFlags;
   pNew->pUnused = pUnused;
-  
+
   rc = fillInUnixFile(&dummyVfs, fd, dirfd, (sqlite3_file*)pNew, path, 0, 0);
   if( rc==SQLITE_OK ){
     *ppFile = pNew;
     return SQLITE_OK;
   }
-end_create_proxy:    
+end_create_proxy:
   close(fd); /* silently leak fd if error, we're already in error */
   sqlite3_free(pNew);
   sqlite3_free(pUnused);
@@ -26927,12 +26927,12 @@ SQLITE_API int sqlite3_hostid_num = 0;
 
 #define PROXY_HOSTIDLEN    16  /* conch file host id length */
 
-/* get the host ID via gethostuuid(), pHostID must point to PROXY_HOSTIDLEN 
+/* get the host ID via gethostuuid(), pHostID must point to PROXY_HOSTIDLEN
 ** bytes of writable memory.
 */
 static int proxyGetHostID(unsigned char *pHostID, int *pError){
   struct timespec timeout = {1, 0}; /* 1 sec timeout */
-  
+
   assert(PROXY_HOSTIDLEN == sizeof(uuid_t));
   memset(pHostID, 0, PROXY_HOSTIDLEN);
   if( gethostuuid(pHostID, &timeout) ){
@@ -26948,7 +26948,7 @@ static int proxyGetHostID(unsigned char *pHostID, int *pError){
     pHostID[0] = (char)(pHostID[0] + (char)(sqlite3_hostid_num & 0xFF));
   }
 #endif
-  
+
   return SQLITE_OK;
 }
 
@@ -26959,14 +26959,14 @@ static int proxyGetHostID(unsigned char *pHostID, int *pError){
 #define PROXY_PATHINDEX    (PROXY_HEADERLEN+PROXY_HOSTIDLEN)
 #define PROXY_MAXCONCHLEN  (PROXY_HEADERLEN+PROXY_HOSTIDLEN+MAXPATHLEN)
 
-/* 
-** Takes an open conch file, copies the contents to a new path and then moves 
+/*
+** Takes an open conch file, copies the contents to a new path and then moves
 ** it back.  The newly created file's file descriptor is assigned to the
-** conch file structure and finally the original conch file descriptor is 
+** conch file structure and finally the original conch file descriptor is
 ** closed.  Returns zero if successful.
 */
 static int proxyBreakConchLock(unixFile *pFile, uuid_t myHostID){
-  proxyLockingContext *pCtx = (proxyLockingContext *)pFile->lockingContext; 
+  proxyLockingContext *pCtx = (proxyLockingContext *)pFile->lockingContext;
   unixFile *conchFile = pCtx->conchFile;
   char tPath[MAXPATHLEN];
   char buf[PROXY_MAXCONCHLEN];
@@ -26979,7 +26979,7 @@ static int proxyBreakConchLock(unixFile *pFile, uuid_t myHostID){
 
   /* create a new path by replace the trailing '-conch' with '-break' */
   pathLen = strlcpy(tPath, cPath, MAXPATHLEN);
-  if( pathLen>MAXPATHLEN || pathLen<6 || 
+  if( pathLen>MAXPATHLEN || pathLen<6 ||
      (strlcpy(&tPath[pathLen-5], "break", 6) != 5) ){
     sprintf(errmsg, "path error (len %d)", (int)pathLen);
     goto end_breaklock;
@@ -27021,23 +27021,23 @@ end_breaklock:
   return rc;
 }
 
-/* Take the requested lock on the conch file and break a stale lock if the 
+/* Take the requested lock on the conch file and break a stale lock if the
 ** host id matches.
 */
 static int proxyConchLock(unixFile *pFile, uuid_t myHostID, int lockType){
-  proxyLockingContext *pCtx = (proxyLockingContext *)pFile->lockingContext; 
+  proxyLockingContext *pCtx = (proxyLockingContext *)pFile->lockingContext;
   unixFile *conchFile = pCtx->conchFile;
   int rc = SQLITE_OK;
   int nTries = 0;
   struct timespec conchModTime;
-  
+
   do {
     rc = conchFile->pMethod->xLock((sqlite3_file*)conchFile, lockType);
     nTries ++;
     if( rc==SQLITE_BUSY ){
       /* If the lock failed (busy):
-       * 1st try: get the mod time of the conch, wait 0.5s and try again. 
-       * 2nd try: fail if the mod time changed or host id is different, wait 
+       * 1st try: get the mod time of the conch, wait 0.5s and try again.
+       * 2nd try: fail if the mod time changed or host id is different, wait
        *           10 sec and try again
        * 3rd try: break the lock unless the mod time has changed.
        */
@@ -27046,20 +27046,20 @@ static int proxyConchLock(unixFile *pFile, uuid_t myHostID, int lockType){
         pFile->lastErrno = errno;
         return SQLITE_IOERR_LOCK;
       }
-      
+
       if( nTries==1 ){
         conchModTime = buf.st_mtimespec;
         usleep(500000); /* wait 0.5 sec and try the lock again*/
-        continue;  
+        continue;
       }
 
       assert( nTries>1 );
-      if( conchModTime.tv_sec != buf.st_mtimespec.tv_sec || 
+      if( conchModTime.tv_sec != buf.st_mtimespec.tv_sec ||
          conchModTime.tv_nsec != buf.st_mtimespec.tv_nsec ){
         return SQLITE_BUSY;
       }
-      
-      if( nTries==2 ){  
+
+      if( nTries==2 ){
         char tBuf[PROXY_MAXCONCHLEN];
         int len = pread(conchFile->h, tBuf, PROXY_MAXCONCHLEN, 0);
         if( len<0 ){
@@ -27076,14 +27076,14 @@ static int proxyConchLock(unixFile *pFile, uuid_t myHostID, int lockType){
           return SQLITE_BUSY;
         }
         usleep(10000000); /* wait 10 sec and try the lock again */
-        continue; 
+        continue;
       }
-      
+
       assert( nTries==3 );
       if( 0==proxyBreakConchLock(pFile, myHostID) ){
         rc = SQLITE_OK;
         if( lockType==EXCLUSIVE_LOCK ){
-          rc = conchFile->pMethod->xLock((sqlite3_file*)conchFile, SHARED_LOCK);          
+          rc = conchFile->pMethod->xLock((sqlite3_file*)conchFile, SHARED_LOCK);
         }
         if( !rc ){
           rc = conchFile->pMethod->xLock((sqlite3_file*)conchFile, lockType);
@@ -27091,19 +27091,19 @@ static int proxyConchLock(unixFile *pFile, uuid_t myHostID, int lockType){
       }
     }
   } while( rc==SQLITE_BUSY && nTries<3 );
-  
+
   return rc;
 }
 
-/* Takes the conch by taking a shared lock and read the contents conch, if 
-** lockPath is non-NULL, the host ID and lock file path must match.  A NULL 
-** lockPath means that the lockPath in the conch file will be used if the 
-** host IDs match, or a new lock path will be generated automatically 
+/* Takes the conch by taking a shared lock and read the contents conch, if
+** lockPath is non-NULL, the host ID and lock file path must match.  A NULL
+** lockPath means that the lockPath in the conch file will be used if the
+** host IDs match, or a new lock path will be generated automatically
 ** and written to the conch file.
 */
 static int proxyTakeConch(unixFile *pFile){
-  proxyLockingContext *pCtx = (proxyLockingContext *)pFile->lockingContext; 
-  
+  proxyLockingContext *pCtx = (proxyLockingContext *)pFile->lockingContext;
+
   if( pCtx->conchHeld!=0 ){
     return SQLITE_OK;
   }else{
@@ -27119,7 +27119,7 @@ static int proxyTakeConch(unixFile *pFile){
     int readLen = 0;
     int tryOldLockPath = 0;
     int forceNewLockPath = 0;
-    
+
     OSTRACE4("TAKECONCH  %d for %s pid=%d\n", conchFile->h,
              (pCtx->lockProxyPath ? pCtx->lockProxyPath : ":auto:"), getpid());
 
@@ -27139,21 +27139,21 @@ static int proxyTakeConch(unixFile *pFile){
       pFile->lastErrno = conchFile->lastErrno;
       rc = SQLITE_IOERR_READ;
       goto end_takeconch;
-    }else if( readLen<=(PROXY_HEADERLEN+PROXY_HOSTIDLEN) || 
+    }else if( readLen<=(PROXY_HEADERLEN+PROXY_HOSTIDLEN) ||
              readBuf[0]!=(char)PROXY_CONCHVERSION ){
-      /* a short read or version format mismatch means we need to create a new 
-      ** conch file. 
+      /* a short read or version format mismatch means we need to create a new
+      ** conch file.
       */
       createConch = 1;
     }
     /* if the host id matches and the lock path already exists in the conch
-    ** we'll try to use the path there, if we can't open that path, we'll 
-    ** retry with a new auto-generated path 
+    ** we'll try to use the path there, if we can't open that path, we'll
+    ** retry with a new auto-generated path
     */
     do { /* in case we need to try again for an :auto: named lock file */
 
       if( !createConch && !forceNewLockPath ){
-        hostIdMatch = !memcmp(&readBuf[PROXY_HEADERLEN], myHostID, 
+        hostIdMatch = !memcmp(&readBuf[PROXY_HEADERLEN], myHostID,
                                   PROXY_HOSTIDLEN);
         /* if the conch has data compare the contents */
         if( !pCtx->lockProxyPath ){
@@ -27162,7 +27162,7 @@ static int proxyTakeConch(unixFile *pFile){
            */
           if( hostIdMatch ){
             size_t pathLen = (readLen - PROXY_PATHINDEX);
-            
+
             if( pathLen>=MAXPATHLEN ){
               pathLen=MAXPATHLEN-1;
             }
@@ -27178,23 +27178,23 @@ static int proxyTakeConch(unixFile *pFile){
                            readLen-PROXY_PATHINDEX)
         ){
           /* conch host and lock path match */
-          goto end_takeconch; 
+          goto end_takeconch;
         }
       }
-      
+
       /* if the conch isn't writable and doesn't match, we can't take it */
       if( (conchFile->openFlags&O_RDWR) == 0 ){
         rc = SQLITE_BUSY;
         goto end_takeconch;
       }
-      
+
       /* either the conch didn't match or we need to create a new one */
       if( !pCtx->lockProxyPath ){
         proxyGetLockPath(pCtx->dbPath, lockPath, MAXPATHLEN);
         tempLockPath = lockPath;
         /* create a copy of the lock path _only_ if the conch is taken */
       }
-      
+
       /* update conch with host and path (this will fail if other process
       ** has a shared lock already), if the host id matches, use the big
       ** stick.
@@ -27205,7 +27205,7 @@ static int proxyTakeConch(unixFile *pFile){
           /* We are trying for an exclusive lock but another thread in this
            ** same process is still holding a shared lock. */
           rc = SQLITE_BUSY;
-        } else {          
+        } else {
           rc = proxyConchLock(pFile, myHostID, EXCLUSIVE_LOCK);
         }
       }else{
@@ -27214,7 +27214,7 @@ static int proxyTakeConch(unixFile *pFile){
       if( rc==SQLITE_OK ){
         char writeBuffer[PROXY_MAXCONCHLEN];
         int writeSize = 0;
-        
+
         writeBuffer[0] = (char)PROXY_CONCHVERSION;
         memcpy(&writeBuffer[PROXY_HEADERLEN], myHostID, PROXY_HOSTIDLEN);
         if( pCtx->lockProxyPath!=NULL ){
@@ -27226,8 +27226,8 @@ static int proxyTakeConch(unixFile *pFile){
         ftruncate(conchFile->h, writeSize);
         rc = unixWrite((sqlite3_file *)conchFile, writeBuffer, writeSize, 0);
         fsync(conchFile->h);
-        /* If we created a new conch file (not just updated the contents of a 
-         ** valid conch file), try to match the permissions of the database 
+        /* If we created a new conch file (not just updated the contents of a
+         ** valid conch file), try to match the permissions of the database
          */
         if( rc==SQLITE_OK && createConch ){
           struct stat buf;
@@ -27248,14 +27248,14 @@ static int proxyTakeConch(unixFile *pFile){
             }
           }else{
             int code = errno;
-            fprintf(stderr, "STAT FAILED[%d] with %d %s\n", 
+            fprintf(stderr, "STAT FAILED[%d] with %d %s\n",
                     err, code, strerror(code));
 #endif
           }
         }
       }
       conchFile->pMethod->xUnlock((sqlite3_file*)conchFile, SHARED_LOCK);
-      
+
     end_takeconch:
       OSTRACE2("TRANSPROXY: CLOSE  %d\n", pFile->h);
       if( rc==SQLITE_OK && pFile->openFlags ){
@@ -27285,7 +27285,7 @@ static int proxyTakeConch(unixFile *pFile){
         rc = proxyCreateUnixFile(path, &pCtx->lockProxy, 1);
         if( rc!=SQLITE_OK && rc!=SQLITE_NOMEM && tryOldLockPath ){
           /* we couldn't create the proxy lock file with the old lock file path
-           ** so try again via auto-naming 
+           ** so try again via auto-naming
            */
           forceNewLockPath = 1;
           tryOldLockPath = 0;
@@ -27305,7 +27305,7 @@ static int proxyTakeConch(unixFile *pFile){
       }
       if( rc==SQLITE_OK ){
         pCtx->conchHeld = 1;
-        
+
         if( pCtx->lockProxy->pMethod == &afpIoMethods ){
           afpLockingContext *afpCtx;
           afpCtx = (afpLockingContext *)pCtx->lockProxy->lockingContext;
@@ -27331,7 +27331,7 @@ static int proxyReleaseConch(unixFile *pFile){
   pCtx = (proxyLockingContext *)pFile->lockingContext;
   conchFile = pCtx->conchFile;
   OSTRACE4("RELEASECONCH  %d for %s pid=%d\n", conchFile->h,
-           (pCtx->lockProxyPath ? pCtx->lockProxyPath : ":auto:"), 
+           (pCtx->lockProxyPath ? pCtx->lockProxyPath : ":auto:"),
            getpid());
   if( pCtx->conchHeld>0 ){
     rc = conchFile->pMethod->xUnlock((sqlite3_file*)conchFile, NO_LOCK);
@@ -27359,13 +27359,13 @@ static int proxyCreateConchPathname(char *dbPath, char **pConchPath){
   char *conchPath;              /* buffer in which to construct conch name */
 
   /* Allocate space for the conch filename and initialize the name to
-  ** the name of the original database file. */  
+  ** the name of the original database file. */
   *pConchPath = conchPath = (char *)sqlite3_malloc(len + 8);
   if( conchPath==0 ){
     return SQLITE_NOMEM;
   }
   memcpy(conchPath, dbPath, len+1);
-  
+
   /* now insert a "." before the last / character */
   for( i=(len-1); i>=0; i-- ){
     if( conchPath[i]=='/' ){
@@ -27388,7 +27388,7 @@ static int proxyCreateConchPathname(char *dbPath, char **pConchPath){
 
 
 /* Takes a fully configured proxy locking-style unix file and switches
-** the local lock file path 
+** the local lock file path
 */
 static int switchLockProxyPath(unixFile *pFile, const char *path) {
   proxyLockingContext *pCtx = (proxyLockingContext*)pFile->lockingContext;
@@ -27397,7 +27397,7 @@ static int switchLockProxyPath(unixFile *pFile, const char *path) {
 
   if( pFile->locktype!=NO_LOCK ){
     return SQLITE_BUSY;
-  }  
+  }
 
   /* nothing to do if the path is NULL, :auto: or matches the existing path */
   if( !path || path[0]=='\0' || !strcmp(path, ":auto:") ||
@@ -27415,7 +27415,7 @@ static int switchLockProxyPath(unixFile *pFile, const char *path) {
     sqlite3_free(oldPath);
     pCtx->lockProxyPath = sqlite3DbStrDup(0, path);
   }
-  
+
   return rc;
 }
 
@@ -27429,7 +27429,7 @@ static int switchLockProxyPath(unixFile *pFile, const char *path) {
 static int proxyGetDbPathForUnixFile(unixFile *pFile, char *dbPath){
 #if defined(__APPLE__)
   if( pFile->pMethod == &afpIoMethods ){
-    /* afp style keeps a reference to the db path in the filePath field 
+    /* afp style keeps a reference to the db path in the filePath field
     ** of the struct */
     assert( (int)strlen((char*)pFile->lockingContext)<=MAXPATHLEN );
     strlcpy(dbPath, ((afpLockingContext *)pFile->lockingContext)->dbPath, MAXPATHLEN);
@@ -27449,9 +27449,9 @@ static int proxyGetDbPathForUnixFile(unixFile *pFile, char *dbPath){
 }
 
 /*
-** Takes an already filled in unix file and alters it so all file locking 
+** Takes an already filled in unix file and alters it so all file locking
 ** will be performed on the local proxy lock file.  The following fields
-** are preserved in the locking context so that they can be restored and 
+** are preserved in the locking context so that they can be restored and
 ** the unix structure properly cleaned up at close time:
 **  ->lockingContext
 **  ->pMethod
@@ -27461,7 +27461,7 @@ static int proxyTransformUnixFile(unixFile *pFile, const char *path) {
   char dbPath[MAXPATHLEN+1];       /* Name of the database file */
   char *lockPath=NULL;
   int rc = SQLITE_OK;
-  
+
   if( pFile->locktype!=NO_LOCK ){
     return SQLITE_BUSY;
   }
@@ -27471,7 +27471,7 @@ static int proxyTransformUnixFile(unixFile *pFile, const char *path) {
   }else{
     lockPath=(char *)path;
   }
-  
+
   OSTRACE4("TRANSPROXY  %d for %s pid=%d\n", pFile->h,
            (lockPath ? lockPath : ":auto:"), getpid());
 
@@ -27505,7 +27505,7 @@ static int proxyTransformUnixFile(unixFile *pFile, const char *path) {
         rc = SQLITE_OK;
       }
     }
-  }  
+  }
   if( rc==SQLITE_OK && lockPath ){
     pCtx->lockProxyPath = sqlite3DbStrDup(0, lockPath);
   }
@@ -27517,7 +27517,7 @@ static int proxyTransformUnixFile(unixFile *pFile, const char *path) {
     }
   }
   if( rc==SQLITE_OK ){
-    /* all memory is allocated, proxys are created and assigned, 
+    /* all memory is allocated, proxys are created and assigned,
     ** switch the locking context and pMethod then return.
     */
     pCtx->oldLockingContext = pFile->lockingContext;
@@ -27525,12 +27525,12 @@ static int proxyTransformUnixFile(unixFile *pFile, const char *path) {
     pCtx->pOldMethod = pFile->pMethod;
     pFile->pMethod = &proxyIoMethods;
   }else{
-    if( pCtx->conchFile ){ 
+    if( pCtx->conchFile ){
       pCtx->conchFile->pMethod->xClose((sqlite3_file *)pCtx->conchFile);
       sqlite3_free(pCtx->conchFile);
     }
     sqlite3_free(pCtx->lockProxyPath);
-    sqlite3_free(pCtx->conchFilePath); 
+    sqlite3_free(pCtx->conchFilePath);
     sqlite3_free(pCtx);
   }
   OSTRACE3("TRANSPROXY  %d %s\n", pFile->h,
@@ -27575,9 +27575,9 @@ static int proxyFileControl(sqlite3_file *id, int op, void *pArg){
       }else{
         const char *proxyPath = (const char *)pArg;
         if( isProxyStyle ){
-          proxyLockingContext *pCtx = 
+          proxyLockingContext *pCtx =
             (proxyLockingContext*)pFile->lockingContext;
-          if( !strcmp(pArg, ":auto:") 
+          if( !strcmp(pArg, ":auto:")
            || (pCtx->lockProxyPath &&
                !strncmp(pCtx->lockProxyPath, proxyPath, MAXPATHLEN))
           ){
@@ -27702,7 +27702,7 @@ static int proxyClose(sqlite3_file *id) {
     unixFile *lockProxy = pCtx->lockProxy;
     unixFile *conchFile = pCtx->conchFile;
     int rc = SQLITE_OK;
-    
+
     if( lockProxy ){
       rc = lockProxy->pMethod->xUnlock((sqlite3_file*)lockProxy, NO_LOCK);
       if( rc ) return rc;
@@ -27739,7 +27739,7 @@ static int proxyClose(sqlite3_file *id) {
 ** The proxy locking style is intended for use with AFP filesystems.
 ** And since AFP is only supported on MacOSX, the proxy locking is also
 ** restricted to MacOSX.
-** 
+**
 **
 ******************* End of the proxy lock implementation **********************
 ******************************************************************************/
@@ -27757,8 +27757,8 @@ static int proxyClose(sqlite3_file *id) {
 ** necessarily been initialized when this routine is called, and so they
 ** should not be used.
 */
-SQLITE_API int sqlite3_os_init(void){ 
-  /* 
+SQLITE_API int sqlite3_os_init(void){
+  /*
   ** The following macro defines an initializer for an sqlite3_vfs object.
   ** The name of the VFS is NAME.  The pAppData is a pointer to a pointer
   ** to the "finder" function.  (pAppData is a pointer to a pointer because
@@ -27774,7 +27774,7 @@ SQLITE_API int sqlite3_os_init(void){
   **
   ** Most finders simply return a pointer to a fixed sqlite3_io_methods
   ** object.  But the "autolockIoFinder" available on MacOSX does a little
-  ** more than that; it looks at the filesystem type that hosts the 
+  ** more than that; it looks at the filesystem type that hosts the
   ** database file and tries to choose an locking method appropriate for
   ** that filesystem time.
   */
@@ -27835,7 +27835,7 @@ SQLITE_API int sqlite3_os_init(void){
   for(i=0; i<(sizeof(aVfs)/sizeof(sqlite3_vfs)); i++){
     sqlite3_vfs_register(&aVfs[i], i==0);
   }
-  return SQLITE_OK; 
+  return SQLITE_OK;
 }
 
 /*
@@ -27845,10 +27845,10 @@ SQLITE_API int sqlite3_os_init(void){
 ** to release dynamically allocated objects.  But not on unix.
 ** This routine is a no-op for unix.
 */
-SQLITE_API int sqlite3_os_end(void){ 
-  return SQLITE_OK; 
+SQLITE_API int sqlite3_os_end(void){
+  return SQLITE_OK;
 }
+
 #endif /* SQLITE_OS_UNIX */
 
 /************** End of os_unix.c *********************************************/
@@ -27972,8 +27972,8 @@ SQLITE_PRIVATE int sqlite3OSTrace = 0;
 */
 #ifdef SQLITE_PERFORMANCE_TRACE
 
-/* 
-** hwtime.h contains inline assembler code for implementing 
+/*
+** hwtime.h contains inline assembler code for implementing
 ** high-performance timing routines.
 */
 /************** Include hwtime.h in the middle of os_common.h ****************/
@@ -28031,7 +28031,7 @@ SQLITE_PRIVATE int sqlite3OSTrace = 0;
       __asm__ __volatile__ ("rdtsc" : "=A" (val));
       return val;
   }
+
 #elif (defined(__GNUC__) && defined(__ppc__))
 
   __inline__ sqlite_uint64 sqlite3Hwtime(void){
@@ -28137,7 +28137,7 @@ SQLITE_API int sqlite3_open_file_count = 0;
 ** Some microsoft compilers lack this definition.
 */
 #ifndef INVALID_FILE_ATTRIBUTES
-# define INVALID_FILE_ATTRIBUTES ((DWORD)-1) 
+# define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
 #endif
 
 /*
@@ -28176,7 +28176,7 @@ struct winFile {
   DWORD sectorSize;       /* Sector size of the device file is on */
 #if SQLITE_OS_WINCE
   WCHAR *zDeleteOnClose;  /* Name of file to delete when closing */
-  HANDLE hMutex;          /* Mutex used to control access to shared lock */  
+  HANDLE hMutex;          /* Mutex used to control access to shared lock */
   HANDLE hShared;         /* Shared memory segment used for locking */
   winceLock local;        /* Locks obtained by this instance of winFile */
   winceLock *shared;      /* Global shared lock memory for the file  */
@@ -28235,7 +28235,7 @@ static int sqlite3_os_type = 0;
 #endif /* SQLITE_OS_WINCE */
 
 /*
-** Convert a UTF-8 string to microsoft unicode (UTF-16?). 
+** Convert a UTF-8 string to microsoft unicode (UTF-16?).
 **
 ** Space to hold the returned string is obtained from malloc.
 */
@@ -28281,7 +28281,7 @@ static char *unicodeToUtf8(const WCHAR *zWideFilename){
 /*
 ** Convert an ansi string to microsoft unicode, based on the
 ** current codepage settings for file apis.
-** 
+**
 ** Space to hold the returned string is obtained
 ** from malloc.
 */
@@ -28347,7 +28347,7 @@ SQLITE_API char *sqlite3_win32_mbcs_to_utf8(const char *zFilename){
 }
 
 /*
-** Convert UTF-8 to multibyte character string.  Space to hold the 
+** Convert UTF-8 to multibyte character string.  Space to hold the
 ** returned string is obtained from malloc().
 */
 static char *utf8ToMbcs(const char *zFilename){
@@ -28445,17 +28445,17 @@ static BOOL winceCreateLock(const char *zFilename, winFile *pFile){
 
   /* Acquire the mutex before continuing */
   winceMutexAcquire(pFile->hMutex);
-  
-  /* Since the names of named mutexes, semaphores, file mappings etc are 
+
+  /* Since the names of named mutexes, semaphores, file mappings etc are
   ** case-sensitive, take advantage of that by uppercasing the mutex name
   ** and using that as the shared filemapping name.
   */
   CharUpperW(zName);
   pFile->hShared = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL,
                                        PAGE_READWRITE, 0, sizeof(winceLock),
-                                       zName);  
+                                       zName);
 
-  /* Set a flag that indicates we're the first to create the memory so it 
+  /* Set a flag that indicates we're the first to create the memory so it
   ** must be zero-initialized */
   if (GetLastError() == ERROR_ALREADY_EXISTS){
     bInit = FALSE;
@@ -28465,7 +28465,7 @@ static BOOL winceCreateLock(const char *zFilename, winFile *pFile){
 
   /* If we succeeded in making the shared memory handle, map it. */
   if (pFile->hShared){
-    pFile->shared = (winceLock*)MapViewOfFile(pFile->hShared, 
+    pFile->shared = (winceLock*)MapViewOfFile(pFile->hShared,
              FILE_MAP_READ|FILE_MAP_WRITE, 0, 0, sizeof(winceLock));
     /* If mapping failed, close the shared memory handle and erase it */
     if (!pFile->shared){
@@ -28482,7 +28482,7 @@ static BOOL winceCreateLock(const char *zFilename, winFile *pFile){
     pFile->hMutex = NULL;
     return FALSE;
   }
-  
+
   /* Initialize the shared memory if we're supposed to */
   if (bInit) {
     ZeroMemory(pFile->shared, sizeof(winceLock));
@@ -28520,13 +28520,13 @@ static void winceDestroyLock(winFile *pFile){
     CloseHandle(pFile->hShared);
 
     /* Done with the mutex */
-    winceMutexRelease(pFile->hMutex);    
+    winceMutexRelease(pFile->hMutex);
     CloseHandle(pFile->hMutex);
     pFile->hMutex = NULL;
   }
 }
 
-/* 
+/*
 ** An implementation of the LockFile() API of windows for wince
 */
 static BOOL winceLockFile(
@@ -28712,7 +28712,7 @@ static int winClose(sqlite3_file *id){
     int cnt = 0;
     while(
            DeleteFileW(pFile->zDeleteOnClose)==0
-        && GetFileAttributesW(pFile->zDeleteOnClose)!=0xffffffff 
+        && GetFileAttributesW(pFile->zDeleteOnClose)!=0xffffffff
         && cnt++ < WINCE_DELETION_ATTEMPTS
     ){
        Sleep(100);  /* Wait a little before trying again */
@@ -28925,7 +28925,7 @@ static int getReadLock(winFile *pFile){
     ovlp.hEvent = 0;
     res = LockFileEx(pFile->h, LOCKFILE_FAIL_IMMEDIATELY,
                      0, SHARED_SIZE, 0, &ovlp);
-/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed. 
+/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed.
 */
 #if SQLITE_OS_WINCE==0
   }else{
@@ -28948,7 +28948,7 @@ static int unlockReadLock(winFile *pFile){
   int res;
   if( isNT() ){
     res = UnlockFile(pFile->h, SHARED_FIRST, 0, SHARED_SIZE, 0);
-/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed. 
+/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed.
 */
 #if SQLITE_OS_WINCE==0
   }else{
@@ -29247,7 +29247,7 @@ static void *convertUtf8Filename(const char *zFilename){
   void *zConverted = 0;
   if( isNT() ){
     zConverted = utf8ToUnicode(zFilename);
-/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed. 
+/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed.
 */
 #if SQLITE_OS_WINCE==0
   }else{
@@ -29282,7 +29282,7 @@ static int getTempname(int nBuf, char *zBuf){
     }else{
       return SQLITE_NOMEM;
     }
-/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed. 
+/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed.
 ** Since the ASCII version of these Windows API do not exist for WINCE,
 ** it's important to not reference them for WINCE builds.
 */
@@ -29311,7 +29311,7 @@ static int getTempname(int nBuf, char *zBuf){
   }
   zBuf[j] = 0;
   OSTRACE2("TEMP FILENAME: %s\n", zBuf);
-  return SQLITE_OK; 
+  return SQLITE_OK;
 }
 
 /*
@@ -29343,7 +29343,7 @@ static int getLastErrorMsg(int nBuf, char *zBuf){
       /* free the system buffer allocated by FormatMessage */
       LocalFree(zTempWide);
     }
-/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed. 
+/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed.
 ** Since the ASCII version of these Windows API do not exist for WINCE,
 ** it's important to not reference them for WINCE builds.
 */
@@ -29402,8 +29402,8 @@ static int winOpen(
   assert( id!=0 );
   UNUSED_PARAMETER(pVfs);
 
-  /* If the second argument to this function is NULL, generate a 
-  ** temporary file name to use 
+  /* If the second argument to this function is NULL, generate a
+  ** temporary file name to use
   */
   if( !zUtf8Name ){
     int rc = getTempname(MAX_PATH+1, zTmpname);
@@ -29424,8 +29424,8 @@ static int winOpen(
   }else{
     dwDesiredAccess = GENERIC_READ;
   }
-  /* SQLITE_OPEN_EXCLUSIVE is used to make sure that a new file is 
-  ** created. SQLite doesn't use it to indicate "exclusive access" 
+  /* SQLITE_OPEN_EXCLUSIVE is used to make sure that a new file is
+  ** created. SQLite doesn't use it to indicate "exclusive access"
   ** as it is usually understood.
   */
   assert(!(flags & SQLITE_OPEN_EXCLUSIVE) || (flags & SQLITE_OPEN_CREATE));
@@ -29467,7 +29467,7 @@ static int winOpen(
        dwFlagsAndAttributes,
        NULL
     );
-/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed. 
+/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed.
 ** Since the ASCII version of these Windows API do not exist for WINCE,
 ** it's important to not reference them for WINCE builds.
 */
@@ -29486,7 +29486,7 @@ static int winOpen(
   if( h==INVALID_HANDLE_VALUE ){
     free(zConverted);
     if( flags & SQLITE_OPEN_READWRITE ){
-      return winOpen(pVfs, zName, id, 
+      return winOpen(pVfs, zName, id,
              ((flags|SQLITE_OPEN_READONLY)&~SQLITE_OPEN_READWRITE), pOutFlags);
     }else{
       return SQLITE_CANTOPEN_BKPT;
@@ -29559,7 +29559,7 @@ static int winDelete(
                || ((error = GetLastError()) == ERROR_ACCESS_DENIED))
            && (++cnt < MX_DELETION_ATTEMPTS)
            && (Sleep(100), 1) );
-/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed. 
+/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed.
 ** Since the ASCII version of these Windows API do not exist for WINCE,
 ** it's important to not reference them for WINCE builds.
 */
@@ -29575,7 +29575,7 @@ static int winDelete(
   }
   free(zConverted);
   OSTRACE2("DELETE \"%s\"\n", zFilename);
-  return (   (rc == INVALID_FILE_ATTRIBUTES) 
+  return (   (rc == INVALID_FILE_ATTRIBUTES)
           && (error == ERROR_FILE_NOT_FOUND)) ? SQLITE_OK : SQLITE_IOERR_DELETE;
 }
 
@@ -29597,7 +29597,7 @@ static int winAccess(
   }
   if( isNT() ){
     attr = GetFileAttributesW((WCHAR*)zConverted);
-/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed. 
+/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed.
 ** Since the ASCII version of these Windows API do not exist for WINCE,
 ** it's important to not reference them for WINCE builds.
 */
@@ -29634,7 +29634,7 @@ static int winFullPathname(
   int nFull,                    /* Size of output buffer in bytes */
   char *zFull                   /* Output buffer */
 ){
-  
+
 #if defined(__CYGWIN__)
   UNUSED_PARAMETER(nFull);
   cygwin_conv_to_full_win32_path(zRelative, zFull);
@@ -29666,7 +29666,7 @@ static int winFullPathname(
     free(zConverted);
     zOut = unicodeToUtf8(zTemp);
     free(zTemp);
-/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed. 
+/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed.
 ** Since the ASCII version of these Windows API do not exist for WINCE,
 ** it's important to not reference them for WINCE builds.
 */
@@ -29760,7 +29760,7 @@ static int getSectorSize(
     }
   }
 #endif
-  return (int) bytesPerSector; 
+  return (int) bytesPerSector;
 }
 
 #ifndef SQLITE_OMIT_LOAD_EXTENSION
@@ -29781,7 +29781,7 @@ static void *winDlOpen(sqlite3_vfs *pVfs, const char *zFilename){
   }
   if( isNT() ){
     h = LoadLibraryW((WCHAR*)zConverted);
-/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed. 
+/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed.
 ** Since the ASCII version of these Windows API do not exist for WINCE,
 ** it's important to not reference them for WINCE builds.
 */
@@ -29881,22 +29881,22 @@ SQLITE_API int sqlite3_current_time = 0;
 */
 int winCurrentTime(sqlite3_vfs *pVfs, double *prNow){
   FILETIME ft;
-  /* FILETIME structure is a 64-bit value representing the number of 
-     100-nanosecond intervals since January 1, 1601 (= JD 2305813.5). 
+  /* FILETIME structure is a 64-bit value representing the number of
+     100-nanosecond intervals since January 1, 1601 (= JD 2305813.5).
   */
   sqlite3_int64 timeW;   /* Whole days */
   sqlite3_int64 timeF;   /* Fractional Days */
 
   /* Number of 100-nanosecond intervals in a single day */
-  static const sqlite3_int64 ntuPerDay = 
+  static const sqlite3_int64 ntuPerDay =
       10000000*(sqlite3_int64)86400;
 
   /* Number of 100-nanosecond intervals in half of a day */
-  static const sqlite3_int64 ntuPerHalfDay = 
+  static const sqlite3_int64 ntuPerHalfDay =
       10000000*(sqlite3_int64)43200;
 
   /* 2^32 - to avoid use of LL and warnings in gcc */
-  static const sqlite3_int64 max32BitValue = 
+  static const sqlite3_int64 max32BitValue =
       (sqlite3_int64)2000000000 + (sqlite3_int64)2000000000 + (sqlite3_int64)294967296;
 
 #if SQLITE_OS_WINCE
@@ -29972,7 +29972,7 @@ SQLITE_API int sqlite3_os_init(void){
     0,                 /* pNext */
     "win32",           /* zName */
     0,                 /* pAppData */
+
     winOpen,           /* xOpen */
     winDelete,         /* xDelete */
     winAccess,         /* xAccess */
@@ -29988,9 +29988,9 @@ SQLITE_API int sqlite3_os_init(void){
   };
 
   sqlite3_vfs_register(&winVfs, 1);
-  return SQLITE_OK; 
+  return SQLITE_OK;
 }
-SQLITE_API int sqlite3_os_end(void){ 
+SQLITE_API int sqlite3_os_end(void){
   return SQLITE_OK;
 }
 
@@ -30017,8 +30017,8 @@ SQLITE_API int sqlite3_os_end(void){
 ** property.  Usually only a few pages are meet either condition.
 ** So the bitmap is usually sparse and has low cardinality.
 ** But sometimes (for example when during a DROP of a large table) most
-** or all of the pages in a database can get journalled.  In those cases, 
-** the bitmap becomes dense with high cardinality.  The algorithm needs 
+** or all of the pages in a database can get journalled.  In those cases,
+** the bitmap becomes dense with high cardinality.  The algorithm needs
 ** to handle both cases well.
 **
 ** The size of the bitmap is fixed when the object is created.
@@ -30038,12 +30038,12 @@ SQLITE_API int sqlite3_os_end(void){
 /* Size of the Bitvec structure in bytes. */
 #define BITVEC_SZ        (sizeof(void*)*128)  /* 512 on 32bit.  1024 on 64bit */
 
-/* Round the union size down to the nearest pointer boundary, since that's how 
+/* Round the union size down to the nearest pointer boundary, since that's how
 ** it will be aligned within the Bitvec struct. */
 #define BITVEC_USIZE     (((BITVEC_SZ-(3*sizeof(u32)))/sizeof(Bitvec*))*sizeof(Bitvec*))
 
-/* Type of the array "element" for the bitmap representation. 
-** Should be a power of 2, and ideally, evenly divide into BITVEC_USIZE. 
+/* Type of the array "element" for the bitmap representation.
+** Should be a power of 2, and ideally, evenly divide into BITVEC_USIZE.
 ** Setting this to the "natural word" size of your CPU may improve
 ** performance. */
 #define BITVEC_TELEM     u8
@@ -30056,12 +30056,12 @@ SQLITE_API int sqlite3_os_end(void){
 
 /* Number of u32 values in hash table. */
 #define BITVEC_NINT      (BITVEC_USIZE/sizeof(u32))
-/* Maximum number of entries in hash table before 
+/* Maximum number of entries in hash table before
 ** sub-dividing and re-hashing. */
 #define BITVEC_MXHASH    (BITVEC_NINT/2)
 /* Hashing function for the aHash representation.
-** Empirical testing showed that the *37 multiplier 
-** (an arbitrary prime)in the hash function provided 
+** Empirical testing showed that the *37 multiplier
+** (an arbitrary prime)in the hash function provided
 ** no fewer collisions than the no-op *1. */
 #define BITVEC_HASH(X)   (((X)*1)%BITVEC_NINT)
 
@@ -30107,7 +30107,7 @@ struct Bitvec {
 
 /*
 ** Create a new bitmap object able to handle bits between 0 and iSize,
-** inclusive.  Return a pointer to the new object.  Return NULL if 
+** inclusive.  Return a pointer to the new object.  Return NULL if
 ** malloc fails.
 */
 SQLITE_PRIVATE Bitvec *sqlite3BitvecCreate(u32 iSize){
@@ -30361,7 +30361,7 @@ SQLITE_PRIVATE int sqlite3BitvecBuiltinTest(int sz, int *aOp){
         break;
       }
       case 3:
-      case 4: 
+      case 4:
       default: {
         nx = 2;
         sqlite3_randomness(sizeof(i), &i);
@@ -30546,7 +30546,7 @@ static void pcacheUnpin(PgHdr *p){
 
 /*************************************************** General Interfaces ******
 **
-** Initialize and shutdown the page cache subsystem. Neither of these 
+** Initialize and shutdown the page cache subsystem. Neither of these
 ** functions are threadsafe.
 */
 SQLITE_PRIVATE int sqlite3PcacheInitialize(void){
@@ -30568,8 +30568,8 @@ SQLITE_PRIVATE int sqlite3PcacheSize(void){ return sizeof(PCache); }
 
 /*
 ** Create a new PCache object. Storage space to hold the object
-** has already been allocated and is passed in as the p pointer. 
-** The caller discovers how much space needs to be allocated by 
+** has already been allocated and is passed in as the p pointer.
+** The caller discovers how much space needs to be allocated by
 ** calling sqlite3PcacheSize().
 */
 SQLITE_PRIVATE void sqlite3PcacheOpen(
@@ -30642,14 +30642,14 @@ SQLITE_PRIVATE int sqlite3PcacheFetch(
   if( !pPage && eCreate==1 ){
     PgHdr *pPg;
 
-    /* Find a dirty page to write-out and recycle. First try to find a 
+    /* Find a dirty page to write-out and recycle. First try to find a
     ** page that does not require a journal-sync (one with PGHDR_NEED_SYNC
-    ** cleared), but if that is not possible settle for any other 
+    ** cleared), but if that is not possible settle for any other
     ** unreferenced dirty page.
     */
     expensive_assert( pcacheCheckSynced(pCache) );
-    for(pPg=pCache->pSynced; 
-        pPg && (pPg->nRef || (pPg->flags&PGHDR_NEED_SYNC)); 
+    for(pPg=pCache->pSynced;
+        pPg && (pPg->nRef || (pPg->flags&PGHDR_NEED_SYNC));
         pPg=pPg->pDirtyPrev
     );
     pCache->pSynced = pPg;
@@ -30787,7 +30787,7 @@ SQLITE_PRIVATE void sqlite3PcacheClearSyncFlags(PCache *pCache){
 }
 
 /*
-** Change the page number of page p to newPgno. 
+** Change the page number of page p to newPgno.
 */
 SQLITE_PRIVATE void sqlite3PcacheMove(PgHdr *p, Pgno newPgno){
   PCache *pCache = p->pCache;
@@ -30838,7 +30838,7 @@ SQLITE_PRIVATE void sqlite3PcacheClose(PCache *pCache){
   }
 }
 
-/* 
+/*
 ** Discard the contents of the cache.
 */
 SQLITE_PRIVATE void sqlite3PcacheClear(PCache *pCache){
@@ -30926,7 +30926,7 @@ SQLITE_PRIVATE PgHdr *sqlite3PcacheDirtyList(PCache *pCache){
   return pcacheSortDirtyList(pCache->pDirty);
 }
 
-/* 
+/*
 ** Return the total number of referenced pages held by the cache.
 */
 SQLITE_PRIVATE int sqlite3PcacheRefCount(PCache *pCache){
@@ -30940,7 +30940,7 @@ SQLITE_PRIVATE int sqlite3PcachePageRefcount(PgHdr *p){
   return p->nRef;
 }
 
-/* 
+/*
 ** Return the total number of pages in the cache.
 */
 SQLITE_PRIVATE int sqlite3PcachePagecount(PCache *pCache){
@@ -31010,12 +31010,12 @@ typedef struct PCache1 PCache1;
 typedef struct PgHdr1 PgHdr1;
 typedef struct PgFreeslot PgFreeslot;
 
-/* Pointers to structures of this type are cast and returned as 
+/* Pointers to structures of this type are cast and returned as
 ** opaque sqlite3_pcache* handles
 */
 struct PCache1 {
   /* Cache configuration parameters. Page size (szPage) and the purgeable
-  ** flag (bPurgeable) are set when the cache is created. nMax may be 
+  ** flag (bPurgeable) are set when the cache is created. nMax may be
   ** modified at any time by a call to the pcache1CacheSize() method.
   ** The global mutex must be held when accessing nMax.
   */
@@ -31025,7 +31025,7 @@ struct PCache1 {
   unsigned int nMax;                  /* Configured "cache_size" value */
 
   /* Hash table of all pages. The following variables may only be accessed
-  ** when the accessor is holding the global mutex (see pcache1EnterMutex() 
+  ** when the accessor is holding the global mutex (see pcache1EnterMutex()
   ** and pcache1LeaveMutex()).
   */
   unsigned int nRecyclable;           /* Number of pages in the LRU list */
@@ -31037,9 +31037,9 @@ struct PCache1 {
 };
 
 /*
-** Each cache entry is represented by an instance of the following 
-** structure. A buffer of PgHdr1.pCache->szPage bytes is allocated 
-** directly before this structure in memory (see the PGHDR1_TO_PAGE() 
+** Each cache entry is represented by an instance of the following
+** structure. A buffer of PgHdr1.pCache->szPage bytes is allocated
+** directly before this structure in memory (see the PGHDR1_TO_PAGE()
 ** macro below).
 */
 struct PgHdr1 {
@@ -31108,7 +31108,7 @@ static SQLITE_WSD struct PCacheGlobal {
 /******** Page Allocation/SQLITE_CONFIG_PCACHE Related Functions **************/
 
 /*
-** This function is called during initialization if a static buffer is 
+** This function is called during initialization if a static buffer is
 ** supplied to use for the page-cache by passing the SQLITE_CONFIG_PAGECACHE
 ** verb to sqlite3_config(). Parameter pBuf points to an allocation large
 ** enough to contain 'n' buffers of 'sz' bytes each.
@@ -31132,8 +31132,8 @@ SQLITE_PRIVATE void sqlite3PCacheBufferSetup(void *pBuf, int sz, int n){
 
 /*
 ** Malloc function used within this file to allocate space from the buffer
-** configured using sqlite3_config(SQLITE_CONFIG_PAGECACHE) option. If no 
-** such buffer exists or there is no space left in it, this function falls 
+** configured using sqlite3_config(SQLITE_CONFIG_PAGECACHE) option. If no
+** such buffer exists or there is no space left in it, this function falls
 ** back to sqlite3Malloc().
 */
 static void *pcache1Alloc(int nByte){
@@ -31148,8 +31148,8 @@ static void *pcache1Alloc(int nByte){
   }else{
 
     /* Allocate a new buffer using sqlite3Malloc. Before doing so, exit the
-    ** global pcache mutex and unlock the pager-cache object pCache. This is 
-    ** so that if the attempt to allocate a new buffer causes the the 
+    ** global pcache mutex and unlock the pager-cache object pCache. This is
+    ** so that if the attempt to allocate a new buffer causes the the
     ** configured soft-heap-limit to be breached, it will be possible to
     ** reclaim memory from this pager-cache.
     */
@@ -31286,7 +31286,7 @@ static int pcache1ResizeHash(PCache1 *p){
 }
 
 /*
-** This function is used internally to remove the page pPage from the 
+** This function is used internally to remove the page pPage from the
 ** global LRU list, if is part of it. If pPage is not part of the global
 ** LRU list, then this function is a no-op.
 **
@@ -31315,7 +31315,7 @@ static void pcache1PinPage(PgHdr1 *pPage){
 
 
 /*
-** Remove the page supplied as an argument from the hash table 
+** Remove the page supplied as an argument from the hash table
 ** (PCache1.apHash structure) that it is currently stored in.
 **
 ** The global mutex must be held when this function is called.
@@ -31347,21 +31347,21 @@ static void pcache1EnforceMaxPage(void){
 }
 
 /*
-** Discard all pages from cache pCache with a page number (key value) 
-** greater than or equal to iLimit. Any pinned pages that meet this 
+** Discard all pages from cache pCache with a page number (key value)
+** greater than or equal to iLimit. Any pinned pages that meet this
 ** criteria are unpinned before they are discarded.
 **
 ** The global mutex must be held when this function is called.
 */
 static void pcache1TruncateUnsafe(
-  PCache1 *pCache, 
-  unsigned int iLimit 
+  PCache1 *pCache,
+  unsigned int iLimit
 ){
   TESTONLY( unsigned int nPage = 0; )      /* Used to assert pCache->nPage is correct */
   unsigned int h;
   assert( sqlite3_mutex_held(pcache1.mutex) );
   for(h=0; h<pCache->nHash; h++){
-    PgHdr1 **pp = &pCache->apHash[h]; 
+    PgHdr1 **pp = &pCache->apHash[h];
     PgHdr1 *pPage;
     while( (pPage = *pp)!=0 ){
       if( pPage->iKey>=iLimit ){
@@ -31397,7 +31397,7 @@ static int pcache1Init(void *NotUsed){
 
 /*
 ** Implementation of the sqlite3_pcache.xShutdown method.
-** Note that the static mutex allocated in xInit does 
+** Note that the static mutex allocated in xInit does
 ** not need to be freed.
 */
 static void pcache1Shutdown(void *NotUsed){
@@ -31430,7 +31430,7 @@ static sqlite3_pcache *pcache1Create(int szPage, int bPurgeable){
 }
 
 /*
-** Implementation of the sqlite3_pcache.xCachesize method. 
+** Implementation of the sqlite3_pcache.xCachesize method.
 **
 ** Configure the cache_size limit for a cache.
 */
@@ -31446,7 +31446,7 @@ static void pcache1Cachesize(sqlite3_pcache *p, int nMax){
 }
 
 /*
-** Implementation of the sqlite3_pcache.xPagecount method. 
+** Implementation of the sqlite3_pcache.xPagecount method.
 */
 static int pcache1Pagecount(sqlite3_pcache *p){
   int n;
@@ -31457,13 +31457,13 @@ static int pcache1Pagecount(sqlite3_pcache *p){
 }
 
 /*
-** Implementation of the sqlite3_pcache.xFetch method. 
+** Implementation of the sqlite3_pcache.xFetch method.
 **
 ** Fetch a page by key value.
 **
 ** Whether or not a new page may be allocated by this function depends on
 ** the value of the createFlag argument.  0 means do not allocate a new
-** page.  1 means allocate a new page if space is easily available.  2 
+** page.  1 means allocate a new page if space is easily available.  2
 ** means to try really hard to allocate a new page.
 **
 ** For a non-purgeable cache (a cache used as the storage for an in-memory
@@ -31474,7 +31474,7 @@ static int pcache1Pagecount(sqlite3_pcache *p){
 ** There are three different approaches to obtaining space for a page,
 ** depending on the value of parameter createFlag (which may be 0, 1 or 2).
 **
-**   1. Regardless of the value of createFlag, the cache is searched for a 
+**   1. Regardless of the value of createFlag, the cache is searched for a
 **      copy of the requested page. If one is found, it is returned.
 **
 **   2. If createFlag==0 and the page is not already in the cache, NULL is
@@ -31486,13 +31486,13 @@ static int pcache1Pagecount(sqlite3_pcache *p){
 **       (a) the number of pages pinned by the cache is greater than
 **           PCache1.nMax, or
 **       (b) the number of pages pinned by the cache is greater than
-**           the sum of nMax for all purgeable caches, less the sum of 
-**           nMin for all other purgeable caches. 
+**           the sum of nMax for all purgeable caches, less the sum of
+**           nMin for all other purgeable caches.
 **
 **   4. If none of the first three conditions apply and the cache is marked
 **      as purgeable, and if one of the following is true:
 **
-**       (a) The number of pages allocated for the cache is already 
+**       (a) The number of pages allocated for the cache is already
 **           PCache1.nMax, or
 **
 **       (b) The number of pages allocated for all purgeable caches is
@@ -31501,7 +31501,7 @@ static int pcache1Pagecount(sqlite3_pcache *p){
 **
 **      then attempt to recycle a page from the LRU list. If it is the right
 **      size, return the recycled buffer. Otherwise, free the buffer and
-**      proceed to step 5. 
+**      proceed to step 5.
 **
 **   5. Otherwise, allocate and return a new page buffer.
 */
@@ -31553,8 +31553,8 @@ static void *pcache1Fetch(sqlite3_pcache *p, unsigned int iKey, int createFlag){
     }
   }
 
-  /* Step 5. If a usable page buffer has still not been found, 
-  ** attempt to allocate a new one. 
+  /* Step 5. If a usable page buffer has still not been found,
+  ** attempt to allocate a new one.
   */
   if( !pPage ){
     pPage = pcache1AllocPage(pCache);
@@ -31590,11 +31590,11 @@ fetch_out:
 static void pcache1Unpin(sqlite3_pcache *p, void *pPg, int reuseUnlikely){
   PCache1 *pCache = (PCache1 *)p;
   PgHdr1 *pPage = PAGE_TO_PGHDR1(pCache, pPg);
+
   assert( pPage->pCache==pCache );
   pcache1EnterMutex();
 
-  /* It is an error to call this function if the page is already 
+  /* It is an error to call this function if the page is already
   ** part of the global LRU list.
   */
   assert( pPage->pLruPrev==0 && pPage->pLruNext==0 );
@@ -31605,7 +31605,7 @@ static void pcache1Unpin(sqlite3_pcache *p, void *pPg, int reuseUnlikely){
     pcache1FreePage(pPage);
   }else{
     /* Add the page to the global LRU list. Normally, the page is added to
-    ** the head of the list (last page to be recycled). However, if the 
+    ** the head of the list (last page to be recycled). However, if the
     ** reuseUnlikely flag passed to this function is true, the page is added
     ** to the tail of the list (first page to be recycled).
     */
@@ -31624,7 +31624,7 @@ static void pcache1Unpin(sqlite3_pcache *p, void *pPg, int reuseUnlikely){
 }
 
 /*
-** Implementation of the sqlite3_pcache.xRekey method. 
+** Implementation of the sqlite3_pcache.xRekey method.
 */
 static void pcache1Rekey(
   sqlite3_pcache *p,
@@ -31635,7 +31635,7 @@ static void pcache1Rekey(
   PCache1 *pCache = (PCache1 *)p;
   PgHdr1 *pPage = PAGE_TO_PGHDR1(pCache, pPg);
   PgHdr1 **pp;
-  unsigned int h; 
+  unsigned int h;
   assert( pPage->iKey==iOld );
   assert( pPage->pCache==pCache );
 
@@ -31660,7 +31660,7 @@ static void pcache1Rekey(
 }
 
 /*
-** Implementation of the sqlite3_pcache.xTruncate method. 
+** Implementation of the sqlite3_pcache.xTruncate method.
 **
 ** Discard all unpinned pages in the cache with a page number equal to
 ** or greater than parameter iLimit. Any pinned pages with a page number
@@ -31677,7 +31677,7 @@ static void pcache1Truncate(sqlite3_pcache *p, unsigned int iLimit){
 }
 
 /*
-** Implementation of the sqlite3_pcache.xDestroy method. 
+** Implementation of the sqlite3_pcache.xDestroy method.
 **
 ** Destroy a cache allocated using pcache1Create().
 */
@@ -31722,7 +31722,7 @@ SQLITE_PRIVATE void sqlite3PCacheSetDefault(void){
 ** by the current thread may be sqlite3_free()ed.
 **
 ** nReq is the number of bytes of memory required. Once this much has
-** been released, the function returns. The return value is the total number 
+** been released, the function returns. The return value is the total number
 ** of bytes of memory released.
 */
 SQLITE_PRIVATE int sqlite3PcacheReleaseMemory(int nReq){
@@ -31804,7 +31804,7 @@ SQLITE_PRIVATE void sqlite3PcacheStats(
 ** extracts the least value from the RowSet.
 **
 ** The INSERT primitive might allocate additional memory.  Memory is
-** allocated in chunks so most INSERTs do no allocation.  There is an 
+** allocated in chunks so most INSERTs do no allocation.  There is an
 ** upper bound on the size of allocated memory.  No memory is freed
 ** until DESTROY.
 **
@@ -31845,7 +31845,7 @@ SQLITE_PRIVATE void sqlite3PcacheStats(
 /*
 ** Each entry in a RowSet is an instance of the following object.
 */
-struct RowSetEntry {            
+struct RowSetEntry {
   i64 v;                        /* ROWID value for this entry */
   struct RowSetEntry *pRight;   /* Right subtree (larger entries) or list */
   struct RowSetEntry *pLeft;    /* Left subtree (smaller entries) */
@@ -31887,7 +31887,7 @@ struct RowSet {
 **
 ** It must be the case that N is sufficient to make a Rowset.  If not
 ** an assertion fault occurs.
-** 
+**
 ** If N is larger than the minimum, use the surplus as an initial
 ** allocation of entries available to be filled.
 */
@@ -31967,7 +31967,7 @@ SQLITE_PRIVATE void sqlite3RowSetInsert(RowSet *p, i64 rowid){
 /*
 ** Merge two lists of RowSetEntry objects.  Remove duplicates.
 **
-** The input lists are connected via pRight pointers and are 
+** The input lists are connected via pRight pointers and are
 ** assumed to each already be in sorted order.
 */
 static struct RowSetEntry *rowSetMerge(
@@ -32005,7 +32005,7 @@ static struct RowSetEntry *rowSetMerge(
 
 /*
 ** Sort all elements on the pEntry list of the RowSet into ascending order.
-*/ 
+*/
 static void rowSetSort(RowSet *p){
   unsigned int i;
   struct RowSetEntry *pEntry;
@@ -32145,7 +32145,7 @@ static void rowSetToList(RowSet *p){
 ** 0 if the RowSet is already empty.
 **
 ** After this routine has been called, the sqlite3RowSetInsert()
-** routine may not be called again.  
+** routine may not be called again.
 */
 SQLITE_PRIVATE int sqlite3RowSetNext(RowSet *p, i64 *pRowid){
   rowSetToList(p);
@@ -32203,7 +32203,7 @@ SQLITE_PRIVATE int sqlite3RowSetTest(RowSet *pRowSet, u8 iBatch, sqlite3_int64 i
 **
 *************************************************************************
 ** This is the implementation of the page cache subsystem or "pager".
-** 
+**
 ** The pager is used to access a database disk file.  It implements
 ** atomic commit and rollback through the use of a journal file that
 ** is separate from the database file.  The pager also implements file
@@ -32226,7 +32226,7 @@ int sqlite3PagerTrace=1;  /* True to enable tracing */
 
 /*
 ** The following two macros are used within the PAGERTRACE() macros above
-** to print out file-descriptors. 
+** to print out file-descriptors.
 **
 ** PAGERID() takes a pointer to a Pager struct as its argument. The
 ** associated file-descriptor is returned. FILEHANDLEID() takes an sqlite3_file
@@ -32239,7 +32239,7 @@ int sqlite3PagerTrace=1;  /* True to enable tracing */
 ** The page cache as a whole is always in one of the following
 ** states:
 **
-**   PAGER_UNLOCK        The page cache is not currently reading or 
+**   PAGER_UNLOCK        The page cache is not currently reading or
 **                       writing the database file.  There is no
 **                       data held in memory.  This is the initial
 **                       state.
@@ -32265,7 +32265,7 @@ int sqlite3PagerTrace=1;  /* True to enable tracing */
 **                       after all dirty pages have been written to the
 **                       database file and the file has been synced to
 **                       disk. All that remains to do is to remove or
-**                       truncate the journal file and the transaction 
+**                       truncate the journal file and the transaction
 **                       will be committed.
 **
 ** The page cache comes up in PAGER_UNLOCK.  The first time a
@@ -32304,7 +32304,7 @@ int sqlite3PagerTrace=1;  /* True to enable tracing */
 #endif
 
 /*
-** The maximum allowed sector size. 64KiB. If the xSectorsize() method 
+** The maximum allowed sector size. 64KiB. If the xSectorsize() method
 ** returns a value larger than this, then MAX_SECTOR_SIZE is used instead.
 ** This could conceivably cause corruption following a power failure on
 ** such a system. This is currently an undocumented limit.
@@ -32319,7 +32319,7 @@ int sqlite3PagerTrace=1;  /* True to enable tracing */
 **
 ** When a savepoint is created, the PagerSavepoint.iHdrOffset field is
 ** set to 0. If a journal-header is written into the main journal while
-** the savepoint is active, then iHdrOffset is set to the byte offset 
+** the savepoint is active, then iHdrOffset is set to the byte offset
 ** immediately following the last journal record written into the main
 ** journal before the journal-header. This is required during savepoint
 ** rollback (see pagerPlaybackSavepoint()).
@@ -32364,18 +32364,18 @@ struct PagerSavepoint {
 **
 ** changeCountDone
 **
-**   This boolean variable is used to make sure that the change-counter 
-**   (the 4-byte header field at byte offset 24 of the database file) is 
-**   not updated more often than necessary. 
+**   This boolean variable is used to make sure that the change-counter
+**   (the 4-byte header field at byte offset 24 of the database file) is
+**   not updated more often than necessary.
 **
-**   It is set to true when the change-counter field is updated, which 
+**   It is set to true when the change-counter field is updated, which
 **   can only happen if an exclusive lock is held on the database file.
-**   It is cleared (set to false) whenever an exclusive lock is 
+**   It is cleared (set to false) whenever an exclusive lock is
 **   relinquished on the database file. Each time a transaction is committed,
 **   The changeCountDone flag is inspected. If it is true, the work of
 **   updating the change-counter is omitted for the current transaction.
 **
-**   This mechanism means that when running in exclusive mode, a connection 
+**   This mechanism means that when running in exclusive mode, a connection
 **   need only update the change-counter once, for the first transaction
 **   committed.
 **
@@ -32389,15 +32389,15 @@ struct PagerSavepoint {
 **
 ** journalStarted
 **
-**   This flag is set whenever the the main journal is synced. 
+**   This flag is set whenever the the main journal is synced.
 **
-**   The point of this flag is that it must be set after the 
+**   The point of this flag is that it must be set after the
 **   first journal header in a journal file has been synced to disk.
-**   After this has happened, new pages appended to the database 
+**   After this has happened, new pages appended to the database
 **   do not need the PGHDR_NEED_SYNC flag set, as they do not need
 **   to wait for a journal sync before they can be written out to
 **   the database file (see function pager_write()).
-**   
+**
 ** setMaster
 **
 **   This variable is used to ensure that the master journal file name
@@ -32409,7 +32409,7 @@ struct PagerSavepoint {
 **   then attempts to upgrade to an exclusive lock. If this attempt
 **   fails, then SQLITE_BUSY may be returned to the user and the user
 **   may attempt to commit the transaction again later (calling
-**   CommitPhaseOne() again). This flag is used to ensure that the 
+**   CommitPhaseOne() again). This flag is used to ensure that the
 **   master journal name is only written to the journal file the first
 **   time CommitPhaseOne() is called.
 **
@@ -32445,12 +32445,12 @@ struct Pager {
   /* The following block contains those class members that are dynamically
   ** modified during normal operations. The other variables in this structure
   ** are either constant throughout the lifetime of the pager, or else
-  ** used to store configuration parameters that affect the way the pager 
+  ** used to store configuration parameters that affect the way the pager
   ** operates.
   **
   ** The 'state' variable is described in more detail along with the
   ** descriptions of the values it may take - PAGER_UNLOCK etc. Many of the
-  ** other variables in this block are described in the comment directly 
+  ** other variables in this block are described in the comment directly
   ** above this class definition.
   */
   u8 state;                   /* PAGER_UNLOCK, _SHARED, _RESERVED, etc. */
@@ -32556,7 +32556,7 @@ static const unsigned char aJournalMagic[] = {
 #define JOURNAL_PG_SZ(pPager)  ((pPager->pageSize) + 8)
 
 /*
-** The journal header size for this pager. This is usually the same 
+** The journal header size for this pager. This is usually the same
 ** size as a single disk sector. See also setSectorSize().
 */
 #define JOURNAL_HDR_SZ(pPager) (pPager->sectorSize)
@@ -32578,7 +32578,7 @@ static const unsigned char aJournalMagic[] = {
 */
 #define PAGER_MAX_PGNO 2147483647
 
-#ifndef NDEBUG 
+#ifndef NDEBUG
 /*
 ** Usage:
 **
@@ -32765,8 +32765,8 @@ static void checkPage(PgHdr *pPg){
 
 /*
 ** When this is called the journal file for pager pPager must be open.
-** This function attempts to read a master journal file name from the 
-** end of the file and, if successful, copies it into memory supplied 
+** This function attempts to read a master journal file name from the
+** end of the file and, if successful, copies it into memory supplied
 ** by the caller. See comments above writeMasterJournal() for the format
 ** used to store a master journal file name at the end of a journal file.
 **
@@ -32782,7 +32782,7 @@ static void checkPage(PgHdr *pPg){
 ** nul-terminator byte is appended to the buffer following the master
 ** journal file name.
 **
-** If it is determined that no master journal file name is present 
+** If it is determined that no master journal file name is present
 ** zMaster[0] is set to 0 and SQLITE_OK returned.
 **
 ** If an error occurs while reading from the journal file, an SQLite
@@ -32800,7 +32800,7 @@ static int readMasterJournal(sqlite3_file *pJrnl, char *zMaster, u32 nMaster){
   if( SQLITE_OK!=(rc = sqlite3OsFileSize(pJrnl, &szJ))
    || szJ<16
    || SQLITE_OK!=(rc = read32bits(pJrnl, szJ-16, &len))
-   || len>=nMaster 
+   || len>=nMaster
    || SQLITE_OK!=(rc = read32bits(pJrnl, szJ-12, &cksum))
    || SQLITE_OK!=(rc = sqlite3OsRead(pJrnl, aMagic, 8, szJ-8))
    || memcmp(aMagic, aJournalMagic, 8)
@@ -32822,13 +32822,13 @@ static int readMasterJournal(sqlite3_file *pJrnl, char *zMaster, u32 nMaster){
     len = 0;
   }
   zMaster[len] = '\0';
-   
+
   return SQLITE_OK;
 }
 
 /*
-** Return the offset of the sector boundary at or immediately 
-** following the value in pPager->journalOff, assuming a sector 
+** Return the offset of the sector boundary at or immediately
+** following the value in pPager->journalOff, assuming a sector
 ** size of pPager->sectorSize bytes.
 **
 ** i.e for a sector size of 512:
@@ -32839,7 +32839,7 @@ static int readMasterJournal(sqlite3_file *pJrnl, char *zMaster, u32 nMaster){
 **   512                       512
 **   100                       512
 **   2000                      2048
-** 
+**
 */
 static i64 journalHdrOffset(Pager *pPager){
   i64 offset = 0;
@@ -32861,12 +32861,12 @@ static i64 journalHdrOffset(Pager *pPager){
 **
 ** If doTruncate is non-zero or the Pager.journalSizeLimit variable is
 ** set to 0, then truncate the journal file to zero bytes in size. Otherwise,
-** zero the 28-byte header at the start of the journal file. In either case, 
-** if the pager is not in no-sync mode, sync the journal file immediately 
+** zero the 28-byte header at the start of the journal file. In either case,
+** if the pager is not in no-sync mode, sync the journal file immediately
 ** after writing or truncating it.
 **
 ** If Pager.journalSizeLimit is set to a positive, non-zero value, and
-** following the truncation or zeroing described above the size of the 
+** following the truncation or zeroing described above the size of the
 ** journal file in bytes is larger than this value, then truncate the
 ** journal file to Pager.journalSizeLimit bytes. The journal file does
 ** not need to be synced following this operation.
@@ -32891,8 +32891,8 @@ static int zeroJournalHdr(Pager *pPager, int doTruncate){
       rc = sqlite3OsSync(pPager->jfd, SQLITE_SYNC_DATAONLY|pPager->sync_flags);
     }
 
-    /* At this point the transaction is committed but the write lock 
-    ** is still held on the file. If there is a size limit configured for 
+    /* At this point the transaction is committed but the write lock
+    ** is still held on the file. If there is a size limit configured for
     ** the persistent journal and the journal file currently consumes more
     ** space than that limit allows for, truncate it now. There is no need
     ** to sync the file following this operation.
@@ -32920,7 +32920,7 @@ static int zeroJournalHdr(Pager *pPager, int doTruncate){
 ** - 4 bytes: Initial database page count.
 ** - 4 bytes: Sector size used by the process that wrote this journal.
 ** - 4 bytes: Database page size.
-** 
+**
 ** Followed by (JOURNAL_HDR_SZ - 28) bytes of unused space.
 */
 static int writeJournalHdr(Pager *pPager){
@@ -32936,8 +32936,8 @@ static int writeJournalHdr(Pager *pPager){
     nHeader = JOURNAL_HDR_SZ(pPager);
   }
 
-  /* If there are active savepoints and any of them were created 
-  ** since the most recent journal header was written, update the 
+  /* If there are active savepoints and any of them were created
+  ** since the most recent journal header was written, update the
   ** PagerSavepoint.iHdrOffset fields now.
   */
   for(ii=0; ii<pPager->nSavepoint; ii++){
@@ -32948,10 +32948,10 @@ static int writeJournalHdr(Pager *pPager){
 
   pPager->journalHdr = pPager->journalOff = journalHdrOffset(pPager);
 
-  /* 
+  /*
   ** Write the nRec Field - the number of page records that follow this
   ** journal header. Normally, zero is written to this value at this time.
-  ** After the records are added to the journal (and the journal synced, 
+  ** After the records are added to the journal (and the journal synced,
   ** if in full-sync mode), the zero is overwritten with the true number
   ** of records (see syncJournal()).
   **
@@ -32970,7 +32970,7 @@ static int writeJournalHdr(Pager *pPager){
   */
   assert( isOpen(pPager->fd) || pPager->noSync );
   if( (pPager->noSync) || (pPager->journalMode==PAGER_JOURNALMODE_MEMORY)
-   || (sqlite3OsDeviceCharacteristics(pPager->fd)&SQLITE_IOCAP_SAFE_APPEND) 
+   || (sqlite3OsDeviceCharacteristics(pPager->fd)&SQLITE_IOCAP_SAFE_APPEND)
   ){
     memcpy(zHeader, aJournalMagic, sizeof(aJournalMagic));
     put32bits(&zHeader[sizeof(aJournalMagic)], 0xffffffff);
@@ -32978,7 +32978,7 @@ static int writeJournalHdr(Pager *pPager){
     memset(zHeader, 0, sizeof(aJournalMagic)+4);
   }
 
-  /* The random check-hash initialiser */ 
+  /* The random check-hash initialiser */
   sqlite3_randomness(sizeof(pPager->cksumInit), &pPager->cksumInit);
   put32bits(&zHeader[sizeof(aJournalMagic)+4], pPager->cksumInit);
   /* The initial database size */
@@ -32997,23 +32997,23 @@ static int writeJournalHdr(Pager *pPager){
   memset(&zHeader[sizeof(aJournalMagic)+20], 0,
          nHeader-(sizeof(aJournalMagic)+20));
 
-  /* In theory, it is only necessary to write the 28 bytes that the 
-  ** journal header consumes to the journal file here. Then increment the 
-  ** Pager.journalOff variable by JOURNAL_HDR_SZ so that the next 
+  /* In theory, it is only necessary to write the 28 bytes that the
+  ** journal header consumes to the journal file here. Then increment the
+  ** Pager.journalOff variable by JOURNAL_HDR_SZ so that the next
   ** record is written to the following sector (leaving a gap in the file
   ** that will be implicitly filled in by the OS).
   **
-  ** However it has been discovered that on some systems this pattern can 
+  ** However it has been discovered that on some systems this pattern can
   ** be significantly slower than contiguously writing data to the file,
-  ** even if that means explicitly writing data to the block of 
+  ** even if that means explicitly writing data to the block of
   ** (JOURNAL_HDR_SZ - 28) bytes that will not be used. So that is what
-  ** is done. 
+  ** is done.
   **
-  ** The loop is required here in case the sector-size is larger than the 
+  ** The loop is required here in case the sector-size is larger than the
   ** database page size. Since the zHeader buffer is only Pager.pageSize
   ** bytes in size, more than one call to sqlite3OsWrite() may be required
   ** to populate the entire journal header sector.
-  */ 
+  */
   for(nWrite=0; rc==SQLITE_OK&&nWrite<JOURNAL_HDR_SZ(pPager); nWrite+=nHeader){
     IOTRACE(("JHDR %p %lld %d\n", pPager, pPager->journalHdr, nHeader))
     rc = sqlite3OsWrite(pPager->jfd, zHeader, nHeader, pPager->journalOff);
@@ -33103,23 +33103,23 @@ static int readJournalHdr(
 
     /* Check that the values read from the page-size and sector-size fields
     ** are within range. To be 'in range', both values need to be a power
-    ** of two greater than or equal to 512 or 32, and not greater than their 
+    ** of two greater than or equal to 512 or 32, and not greater than their
     ** respective compile time maximum limits.
     */
     if( iPageSize<512                  || iSectorSize<32
      || iPageSize>SQLITE_MAX_PAGE_SIZE || iSectorSize>MAX_SECTOR_SIZE
-     || ((iPageSize-1)&iPageSize)!=0   || ((iSectorSize-1)&iSectorSize)!=0 
+     || ((iPageSize-1)&iPageSize)!=0   || ((iSectorSize-1)&iSectorSize)!=0
     ){
-      /* If the either the page-size or sector-size in the journal-header is 
-      ** invalid, then the process that wrote the journal-header must have 
-      ** crashed before the header was synced. In this case stop reading 
+      /* If the either the page-size or sector-size in the journal-header is
+      ** invalid, then the process that wrote the journal-header must have
+      ** crashed before the header was synced. In this case stop reading
       ** the journal file here.
       */
       return SQLITE_DONE;
     }
 
-    /* Update the page-size to match the value read from the journal. 
-    ** Use a testcase() macro to make sure that malloc failure within 
+    /* Update the page-size to match the value read from the journal.
+    ** Use a testcase() macro to make sure that malloc failure within
     ** PagerSetPagesize() is tested.
     */
     iPageSize16 = (u16)iPageSize;
@@ -33127,7 +33127,7 @@ static int readJournalHdr(
     testcase( rc!=SQLITE_OK );
     assert( rc!=SQLITE_OK || iPageSize16==(u16)iPageSize );
 
-    /* Update the assumed sector-size to match the value used by 
+    /* Update the assumed sector-size to match the value used by
     ** the process that created this journal. If this journal was
     ** created by a process other than this one, then this routine
     ** is being called from within pager_playback(). The local value
@@ -33157,7 +33157,7 @@ static int readJournalHdr(
 ** The master journal page checksum is the sum of the bytes in the master
 ** journal name, where each byte is interpreted as a signed 8-bit integer.
 **
-** If zMaster is a NULL pointer (occurs for a single database transaction), 
+** If zMaster is a NULL pointer (occurs for a single database transaction),
 ** this call is a no-op.
 */
 static int writeMasterJournal(Pager *pPager, const char *zMaster){
@@ -33168,8 +33168,8 @@ static int writeMasterJournal(Pager *pPager, const char *zMaster){
   u32 cksum = 0;                   /* Checksum of string zMaster */
 
   if( !zMaster || pPager->setMaster
-   || pPager->journalMode==PAGER_JOURNALMODE_MEMORY 
-   || pPager->journalMode==PAGER_JOURNALMODE_OFF 
+   || pPager->journalMode==PAGER_JOURNALMODE_MEMORY
+   || pPager->journalMode==PAGER_JOURNALMODE_OFF
   ){
     return SQLITE_OK;
   }
@@ -33204,16 +33204,16 @@ static int writeMasterJournal(Pager *pPager, const char *zMaster){
   pPager->journalOff += (nMaster+20);
   pPager->needSync = !pPager->noSync;
 
-  /* If the pager is in peristent-journal mode, then the physical 
+  /* If the pager is in peristent-journal mode, then the physical
   ** journal-file may extend past the end of the master-journal name
-  ** and 8 bytes of magic data just written to the file. This is 
+  ** and 8 bytes of magic data just written to the file. This is
   ** dangerous because the code to rollback a hot-journal file
-  ** will not be able to find the master-journal name to determine 
-  ** whether or not the journal is hot. 
+  ** will not be able to find the master-journal name to determine
+  ** whether or not the journal is hot.
   **
-  ** Easiest thing to do in this scenario is to truncate the journal 
+  ** Easiest thing to do in this scenario is to truncate the journal
   ** file to the required size.
-  */ 
+  */
   if( SQLITE_OK==(rc = sqlite3OsFileSize(pPager->jfd, &jrnlSize))
    && jrnlSize>pPager->journalOff
   ){
@@ -33224,7 +33224,7 @@ static int writeMasterJournal(Pager *pPager, const char *zMaster){
 
 /*
 ** Find a page in the hash table given its page number. Return
-** a pointer to the page or NULL if the requested page is not 
+** a pointer to the page or NULL if the requested page is not
 ** already in memory.
 */
 static PgHdr *pager_lookup(Pager *pPager, Pgno pgno){
@@ -33271,7 +33271,7 @@ static void releaseAllSavepoints(Pager *pPager){
 }
 
 /*
-** Set the bit number pgno in the PagerSavepoint.pInSavepoint 
+** Set the bit number pgno in the PagerSavepoint.pInSavepoint
 ** bitvecs of all open savepoints. Return SQLITE_OK if successful
 ** or SQLITE_NOMEM if a malloc failure occurs.
 */
@@ -33294,7 +33294,7 @@ static int addToSavepointBitvecs(Pager *pPager, Pgno pgno){
 ** Unlock the database file. This function is a no-op if the pager
 ** is in exclusive mode.
 **
-** If the pager is currently in error state, discard the contents of 
+** If the pager is currently in error state, discard the contents of
 ** the cache and reset the Pager structure internal state. If there is
 ** an open journal-file, then the next time a shared-lock is obtained
 ** on the pager file (by this or any other process), it will be
@@ -33345,18 +33345,18 @@ static void pager_unlock(Pager *pPager){
 
 /*
 ** This function should be called when an IOERR, CORRUPT or FULL error
-** may have occurred. The first argument is a pointer to the pager 
-** structure, the second the error-code about to be returned by a pager 
-** API function. The value returned is a copy of the second argument 
-** to this function. 
+** may have occurred. The first argument is a pointer to the pager
+** structure, the second the error-code about to be returned by a pager
+** API function. The value returned is a copy of the second argument
+** to this function.
 **
 ** If the second argument is SQLITE_IOERR, SQLITE_CORRUPT, or SQLITE_FULL
 ** the error becomes persistent. Until the persisten error is cleared,
-** subsequent API calls on this Pager will immediately return the same 
+** subsequent API calls on this Pager will immediately return the same
 ** error code.
 **
-** A persistent error indicates that the contents of the pager-cache 
-** cannot be trusted. This state can be cleared by completely discarding 
+** A persistent error indicates that the contents of the pager-cache
+** cannot be trusted. This state can be cleared by completely discarding
 ** the contents of the pager-cache. If a transaction was active when
 ** the persistent error occurred, then the rollback journal may need
 ** to be replayed to restore the contents of the database file (as if
@@ -33377,10 +33377,10 @@ static int pager_error(Pager *pPager, int rc){
 }
 
 /*
-** Execute a rollback if a transaction is active and unlock the 
-** database file. 
+** Execute a rollback if a transaction is active and unlock the
+** database file.
 **
-** If the pager has already entered the error state, do not attempt 
+** If the pager has already entered the error state, do not attempt
 ** the rollback at this time. Instead, pager_unlock() is called. The
 ** call to pager_unlock() will discard all in-memory pages, unlock
 ** the database file and clear the error state. If this means that
@@ -33389,7 +33389,7 @@ static int pager_error(Pager *pPager, int rc){
 ** roll it back.
 **
 ** If the pager has not already entered the error state, but an IO or
-** malloc error occurs during a rollback, then this will itself cause 
+** malloc error occurs during a rollback, then this will itself cause
 ** the pager to enter the error state. Which will be cleared by the
 ** call to pager_unlock(), as described above.
 */
@@ -33403,26 +33403,26 @@ static void pagerUnlockAndRollback(Pager *pPager){
 }
 
 /*
-** This routine ends a transaction. A transaction is usually ended by 
-** either a COMMIT or a ROLLBACK operation. This routine may be called 
+** This routine ends a transaction. A transaction is usually ended by
+** either a COMMIT or a ROLLBACK operation. This routine may be called
 ** after rollback of a hot-journal, or if an error occurs while opening
 ** the journal file or writing the very first journal-header of a
 ** database transaction.
-** 
+**
 ** If the pager is in PAGER_SHARED or PAGER_UNLOCK state when this
 ** routine is called, it is a no-op (returns SQLITE_OK).
 **
 ** Otherwise, any active savepoints are released.
 **
-** If the journal file is open, then it is "finalized". Once a journal 
-** file has been finalized it is not possible to use it to roll back a 
+** If the journal file is open, then it is "finalized". Once a journal
+** file has been finalized it is not possible to use it to roll back a
 ** transaction. Nor will it be considered to be a hot-journal by this
 ** or any other database connection. Exactly how a journal is finalized
 ** depends on whether or not the pager is running in exclusive mode and
 ** the current journal-mode (Pager.journalMode value), as follows:
 **
 **   journalMode==MEMORY
-**     Journal file descriptor is simply closed. This destroys an 
+**     Journal file descriptor is simply closed. This destroys an
 **     in-memory journal.
 **
 **   journalMode==TRUNCATE
@@ -33451,7 +33451,7 @@ static void pagerUnlockAndRollback(Pager *pPager){
 **
 ** SQLITE_OK is returned if no error occurs. If an error occurs during
 ** any of the IO operations to finalize the journal file or unlock the
-** database then the IO error code is returned to the user. If the 
+** database then the IO error code is returned to the user. If the
 ** operation to finalize the journal file fails, then the code still
 ** tries to unlock the database file if not in exclusive mode. If the
 ** unlock operation fails as well, then the first error code related
@@ -33482,7 +33482,7 @@ static int pager_end_transaction(Pager *pPager, int hasMaster){
       }
       pPager->journalOff = 0;
       pPager->journalStarted = 0;
-    }else if( pPager->exclusiveMode 
+    }else if( pPager->exclusiveMode
      || pPager->journalMode==PAGER_JOURNALMODE_PERSIST
     ){
       rc = zeroJournalHdr(pPager, hasMaster);
@@ -33494,8 +33494,8 @@ static int pager_end_transaction(Pager *pPager, int hasMaster){
       ** a hot-journal was just rolled back. In this case the journal
       ** file should be closed and deleted. If this connection writes to
       ** the database file, it will do so using an in-memory journal.  */
-      assert( pPager->journalMode==PAGER_JOURNALMODE_DELETE 
-           || pPager->journalMode==PAGER_JOURNALMODE_MEMORY 
+      assert( pPager->journalMode==PAGER_JOURNALMODE_DELETE
+           || pPager->journalMode==PAGER_JOURNALMODE_MEMORY
       );
       sqlite3OsClose(pPager->jfd);
       if( !pPager->tempFile ){
@@ -33524,7 +33524,7 @@ static int pager_end_transaction(Pager *pPager, int hasMaster){
   pPager->needSync = 0;
   pPager->dbModified = 0;
 
-  /* TODO: Is this optimal? Why is the db size invalidated here 
+  /* TODO: Is this optimal? Why is the db size invalidated here
   ** when the database file is not unlocked? */
   pPager->dbOrigSize = 0;
   sqlite3PcacheTruncate(pPager->pPCache, pPager->dbSize);
@@ -33537,10 +33537,10 @@ static int pager_end_transaction(Pager *pPager, int hasMaster){
 
 /*
 ** Parameter aData must point to a buffer of pPager->pageSize bytes
-** of data. Compute and return a checksum based ont the contents of the 
+** of data. Compute and return a checksum based ont the contents of the
 ** page of data and the current value of pPager->cksumInit.
 **
-** This is not a real checksum. It is really just the sum of the 
+** This is not a real checksum. It is really just the sum of the
 ** random initial value (pPager->cksumInit) and every 200th byte
 ** of the page data, starting with byte offset (pPager->pageSize%200).
 ** Each byte is interpreted as an 8-bit unsigned integer.
@@ -33548,8 +33548,8 @@ static int pager_end_transaction(Pager *pPager, int hasMaster){
 ** Changing the formula used to compute this checksum results in an
 ** incompatible journal file format.
 **
-** If journal corruption occurs due to a power failure, the most likely 
-** scenario is that one end or the other of the record will be changed. 
+** If journal corruption occurs due to a power failure, the most likely
+** scenario is that one end or the other of the record will be changed.
 ** It is much less likely that the two ends of the journal record will be
 ** correct and the middle be corrupt.  Thus, this "checksum" scheme,
 ** though fast and simple, catches the mostly likely kind of corruption.
@@ -33591,7 +33591,7 @@ static u32 pager_cksum(Pager *pPager, const u8 *aData){
 ** is successfully read from the (sub-)journal file but appears to be
 ** corrupted, SQLITE_DONE is returned. Data is considered corrupted in
 ** two circumstances:
-** 
+**
 **   * If the record page-number is illegal (0 or PAGER_MJ_PGNO), or
 **   * If the record is being rolled back from the main journal file
 **     and the checksum field does not match the record content.
@@ -33717,18 +33717,18 @@ static int pager_playback_one_page(
   }else if( !isMainJrnl && pPg==0 ){
     /* If this is a rollback of a savepoint and data was not written to
     ** the database and the page is not in-memory, there is a potential
-    ** problem. When the page is next fetched by the b-tree layer, it 
-    ** will be read from the database file, which may or may not be 
-    ** current. 
+    ** problem. When the page is next fetched by the b-tree layer, it
+    ** will be read from the database file, which may or may not be
+    ** current.
     **
     ** There are a couple of different ways this can happen. All are quite
-    ** obscure. When running in synchronous mode, this can only happen 
+    ** obscure. When running in synchronous mode, this can only happen
     ** if the page is on the free-list at the start of the transaction, then
     ** populated, then moved using sqlite3PagerMovepage().
     **
     ** The solution is to add an in-memory page to the cache containing
-    ** the data just read from the sub-journal. Mark the page as dirty 
-    ** and if the pager requires a journal-sync, then mark the page as 
+    ** the data just read from the sub-journal. Mark the page as dirty
+    ** and if the pager requires a journal-sync, then mark the page as
     ** requiring a journal-sync before it is written.
     */
     assert( isSavepnt );
@@ -33750,13 +33750,13 @@ static int pager_playback_one_page(
     memcpy(pData, (u8*)aData, pPager->pageSize);
     pPager->xReiniter(pPg);
     if( isMainJrnl && (!isSavepnt || *pOffset<=pPager->journalHdr) ){
-      /* If the contents of this page were just restored from the main 
-      ** journal file, then its content must be as they were when the 
+      /* If the contents of this page were just restored from the main
+      ** journal file, then its content must be as they were when the
       ** transaction was first opened. In this case we can mark the page
       ** as clean, since there will be no need to write it out to the.
       **
       ** There is one exception to this rule. If the page is being rolled
-      ** back as part of a savepoint (or statement) rollback from an 
+      ** back as part of a savepoint (or statement) rollback from an
       ** unsynced portion of the main journal file, then it is not safe
       ** to mark the page as clean. This is because marking the page as
       ** clean will clear the PGHDR_NEED_SYNC flag. Since the page is
@@ -33792,26 +33792,26 @@ static int pager_playback_one_page(
 ** This routine checks if it is possible to delete the master journal file,
 ** and does so if it is.
 **
-** Argument zMaster may point to Pager.pTmpSpace. So that buffer is not 
+** Argument zMaster may point to Pager.pTmpSpace. So that buffer is not
 ** available for use within this function.
 **
-** When a master journal file is created, it is populated with the names 
-** of all of its child journals, one after another, formatted as utf-8 
-** encoded text. The end of each child journal file is marked with a 
+** When a master journal file is created, it is populated with the names
+** of all of its child journals, one after another, formatted as utf-8
+** encoded text. The end of each child journal file is marked with a
 ** nul-terminator byte (0x00). i.e. the entire contents of a master journal
 ** file for a transaction involving two databases might be:
 **
 **   "/home/bill/a.db-journal\x00/home/bill/b.db-journal\x00"
 **
-** A master journal file may only be deleted once all of its child 
+** A master journal file may only be deleted once all of its child
 ** journals have been rolled back.
 **
-** This function reads the contents of the master-journal file into 
+** This function reads the contents of the master-journal file into
 ** memory and loops through each of the child journal names. For
 ** each child journal, it checks if:
 **
 **   * if the child journal exists, and if so
-**   * if the child journal contains a reference to master journal 
+**   * if the child journal contains a reference to master journal
 **     file zMaster
 **
 ** If a child journal can be found that matches both of the criteria
@@ -33821,12 +33821,12 @@ static int pager_playback_one_page(
 **
 ** If an IO error within this function, an error code is returned. This
 ** function allocates memory by calling sqlite3Malloc(). If an allocation
-** fails, SQLITE_NOMEM is returned. Otherwise, if no IO or malloc errors 
+** fails, SQLITE_NOMEM is returned. Otherwise, if no IO or malloc errors
 ** occur, SQLITE_OK is returned.
 **
 ** TODO: This function allocates a single block of memory to load
 ** the entire contents of the master journal file. This could be
-** a couple of kilobytes or so - potentially larger than the page 
+** a couple of kilobytes or so - potentially larger than the page
 ** size.
 */
 static int pager_delmaster(Pager *pPager, const char *zMaster){
@@ -33859,7 +33859,7 @@ static int pager_delmaster(Pager *pPager, const char *zMaster){
     int nMasterPtr = pVfs->mxPathname+1;
 
     /* Load the entire master journal file into space obtained from
-    ** sqlite3_malloc() and pointed to by zMasterJournal. 
+    ** sqlite3_malloc() and pointed to by zMasterJournal.
     */
     zMasterJournal = sqlite3Malloc((int)nMasterJournal + nMasterPtr + 1);
     if( !zMasterJournal ){
@@ -33905,13 +33905,13 @@ static int pager_delmaster(Pager *pPager, const char *zMaster){
       zJournal += (sqlite3Strlen30(zJournal)+1);
     }
   }
-  
+
   rc = sqlite3OsDelete(pVfs, zMaster, 0);
 
 delmaster_out:
   if( zMasterJournal ){
     sqlite3_free(zMasterJournal);
-  }  
+  }
   if( pMaster ){
     sqlite3OsClose(pMaster);
     assert( !isOpen(pJournal) );
@@ -33922,7 +33922,7 @@ delmaster_out:
 
 
 /*
-** This function is used to change the actual size of the database 
+** This function is used to change the actual size of the database
 ** file in the file-system. This only happens when committing a transaction,
 ** or rolling back a transaction (including rolling back a hot-journal).
 **
@@ -33932,10 +33932,10 @@ delmaster_out:
 ** on disk is currently larger than nPage pages, then use the VFS
 ** xTruncate() method to truncate it.
 **
-** Or, it might might be the case that the file on disk is smaller than 
-** nPage pages. Some operating system implementations can get confused if 
-** you try to truncate a file to some size that is larger than it 
-** currently is, so detect this case and write a single zero byte to 
+** Or, it might might be the case that the file on disk is smaller than
+** nPage pages. Some operating system implementations can get confused if
+** you try to truncate a file to some size that is larger than it
+** currently is, so detect this case and write a single zero byte to
 ** the end of the new file instead.
 **
 ** If successful, return SQLITE_OK. If an IO error occurs while modifying
@@ -33965,8 +33965,8 @@ static int pager_truncate(Pager *pPager, Pgno nPage){
 /*
 ** Set the value of the Pager.sectorSize variable for the given
 ** pager based on the value returned by the xSectorSize method
-** of the open database file. The sector size will be used used 
-** to determine the size and alignment of journal header and 
+** of the open database file. The sector size will be used used
+** to determine the size and alignment of journal header and
 ** master journal pointers within created journal files.
 **
 ** For temporary files the effective sector size is always 512 bytes.
@@ -33997,15 +33997,15 @@ static void setSectorSize(Pager *pPager){
 
 /*
 ** Playback the journal and thus restore the database file to
-** the state it was in before we started making changes.  
+** the state it was in before we started making changes.
 **
-** The journal file format is as follows: 
+** The journal file format is as follows:
 **
 **  (1)  8 byte prefix.  A copy of aJournalMagic[].
 **  (2)  4 byte big-endian integer which is the number of valid page records
 **       in the journal.  If this value is 0xffffffff, then compute the
 **       number of page records from the journal size.
-**  (3)  4 byte big-endian integer which is the initial value for the 
+**  (3)  4 byte big-endian integer which is the initial value for the
 **       sanity checksum.
 **  (4)  4 byte integer which is the number of pages to truncate the
 **       database to during a rollback.
@@ -34034,7 +34034,7 @@ static void setSectorSize(Pager *pPager){
 ** from the file size.  This value is used when the user selects the
 ** no-sync option for the journal.  A power failure could lead to corruption
 ** in this case.  But for things like temporary table (which will be
-** deleted when the power is restored) we don't care.  
+** deleted when the power is restored) we don't care.
 **
 ** If the file opened as the journal file is not a well-formed
 ** journal file then all pages up to the first corrupted page are rolled
@@ -34046,7 +34046,7 @@ static void setSectorSize(Pager *pPager){
 ** and an error code is returned.
 **
 ** The isHot parameter indicates that we are trying to rollback a journal
-** that might be a hot journal.  Or, it could be that the journal is 
+** that might be a hot journal.  Or, it could be that the journal is
 ** preserved because of JOURNALMODE_PERSIST or JOURNALMODE_TRUNCATE.
 ** If the journal really is hot, reset the pager cache prior rolling
 ** back any content.  If the journal is merely persistent, no reset is
@@ -34095,9 +34095,9 @@ static int pager_playback(Pager *pPager, int isHot){
   pPager->journalOff = 0;
   needPagerReset = isHot;
 
-  /* This loop terminates either when a readJournalHdr() or 
-  ** pager_playback_one_page() call returns SQLITE_DONE or an IO error 
-  ** occurs. 
+  /* This loop terminates either when a readJournalHdr() or
+  ** pager_playback_one_page() call returns SQLITE_DONE or an IO error
+  ** occurs.
   */
   while( 1 ){
     int isUnsync = 0;
@@ -34108,7 +34108,7 @@ static int pager_playback(Pager *pPager, int isHot){
     ** This indicates nothing more needs to be rolled back.
     */
     rc = readJournalHdr(pPager, isHot, szJ, &nRec, &mxPg);
-    if( rc!=SQLITE_OK ){ 
+    if( rc!=SQLITE_OK ){
       if( rc==SQLITE_DONE ){
         rc = SQLITE_OK;
       }
@@ -34136,7 +34136,7 @@ static int pager_playback(Pager *pPager, int isHot){
     ** chunk of the journal contains zero pages to be rolled back.  But
     ** when doing a ROLLBACK and the nRec==0 chunk is the last chunk in
     ** the journal, it means that the journal might contain additional
-    ** pages that need to be rolled back and that the number of pages 
+    ** pages that need to be rolled back and that the number of pages
     ** should be computed based on the journal file size.
     */
     if( nRec==0 && !isHot &&
@@ -34156,7 +34156,7 @@ static int pager_playback(Pager *pPager, int isHot){
       pPager->dbSize = mxPg;
     }
 
-    /* Copy original pages out of the journal and back into the 
+    /* Copy original pages out of the journal and back into the
     ** database file and/or page cache.
     */
     for(u=0; u<nRec; u++){
@@ -34195,10 +34195,10 @@ end_playback:
     sqlite3OsFileControl(pPager->fd,SQLITE_FCNTL_DB_UNCHANGED,0)>=SQLITE_OK
   );
 
-  /* If this playback is happening automatically as a result of an IO or 
-  ** malloc error that occurred after the change-counter was updated but 
-  ** before the transaction was committed, then the change-counter 
-  ** modification may just have been reverted. If this happens in exclusive 
+  /* If this playback is happening automatically as a result of an IO or
+  ** malloc error that occurred after the change-counter was updated but
+  ** before the transaction was committed, then the change-counter
+  ** modification may just have been reverted. If this happens in exclusive
   ** mode, then subsequent transactions performed by the connection will not
   ** update the change-counter at all. This may lead to cache inconsistency
   ** problems for other processes at some point in the future. So, just
@@ -34236,21 +34236,21 @@ end_playback:
 
 /*
 ** Playback savepoint pSavepoint. Or, if pSavepoint==NULL, then playback
-** the entire master journal file. The case pSavepoint==NULL occurs when 
-** a ROLLBACK TO command is invoked on a SAVEPOINT that is a transaction 
+** the entire master journal file. The case pSavepoint==NULL occurs when
+** a ROLLBACK TO command is invoked on a SAVEPOINT that is a transaction
 ** savepoint.
 **
-** When pSavepoint is not NULL (meaning a non-transaction savepoint is 
+** When pSavepoint is not NULL (meaning a non-transaction savepoint is
 ** being rolled back), then the rollback consists of up to three stages,
 ** performed in the order specified:
 **
 **   * Pages are played back from the main journal starting at byte
-**     offset PagerSavepoint.iOffset and continuing to 
+**     offset PagerSavepoint.iOffset and continuing to
 **     PagerSavepoint.iHdrOffset, or to the end of the main journal
 **     file if PagerSavepoint.iHdrOffset is zero.
 **
 **   * If PagerSavepoint.iHdrOffset is not zero, then pages are played
-**     back starting from the journal header immediately following 
+**     back starting from the journal header immediately following
 **     PagerSavepoint.iHdrOffset to the end of the main journal file.
 **
 **   * Pages are then played back from the sub-journal file, starting
@@ -34266,7 +34266,7 @@ end_playback:
 ** journal file. There is no need for a bitvec in this case.
 **
 ** In either case, before playback commences the Pager.dbSize variable
-** is reset to the value that it held at the start of the savepoint 
+** is reset to the value that it held at the start of the savepoint
 ** (or transaction). No page with a page-number greater than this value
 ** is played back. If one is encountered it is simply skipped.
 */
@@ -34286,7 +34286,7 @@ static int pagerPlaybackSavepoint(Pager *pPager, PagerSavepoint *pSavepoint){
     }
   }
 
-  /* Set the database size back to the value it was before the savepoint 
+  /* Set the database size back to the value it was before the savepoint
   ** being reverted was opened.
   */
   pPager->dbSize = pSavepoint ? pSavepoint->nOrig : pPager->dbOrigSize;
@@ -34333,7 +34333,7 @@ static int pagerPlaybackSavepoint(Pager *pPager, PagerSavepoint *pSavepoint){
     ** test is related to ticket #2565.  See the discussion in the
     ** pager_playback() function for additional information.
     */
-    if( nJRec==0 
+    if( nJRec==0
      && pPager->journalHdr+JOURNAL_HDR_SZ(pPager)==pPager->journalOff
     ){
       nJRec = (u32)((szJ - pPager->journalOff)/JOURNAL_PG_SZ(pPager));
@@ -34411,7 +34411,7 @@ SQLITE_PRIVATE void sqlite3PagerSetSafetyLevel(Pager *pPager, int level, int bFu
 /*
 ** The following global variable is incremented whenever the library
 ** attempts to open a temporary file.  This information is used for
-** testing and analysis only.  
+** testing and analysis only.
 */
 #ifdef SQLITE_TEST
 SQLITE_API int sqlite3_opentemp_count = 0;
@@ -34420,8 +34420,8 @@ SQLITE_API int sqlite3_opentemp_count = 0;
 /*
 ** Open a temporary file.
 **
-** Write the file descriptor into *pFile. Return SQLITE_OK on success 
-** or some other error code if we fail. The OS will automatically 
+** Write the file descriptor into *pFile. Return SQLITE_OK on success
+** or some other error code if we fail. The OS will automatically
 ** delete the temporary file when it is closed.
 **
 ** The flags passed to the VFS layer xOpen() call are those specified
@@ -34453,9 +34453,9 @@ static int pagerOpentemp(
 /*
 ** Set the busy handler function.
 **
-** The pager invokes the busy-handler if sqlite3OsLock() returns 
+** The pager invokes the busy-handler if sqlite3OsLock() returns
 ** SQLITE_BUSY when trying to upgrade from no-lock to a SHARED lock,
-** or when trying to upgrade from a RESERVED lock to an EXCLUSIVE 
+** or when trying to upgrade from a RESERVED lock to an EXCLUSIVE
 ** lock. It does *not* invoke the busy handler when upgrading from
 ** SHARED to RESERVED, or when upgrading from SHARED to EXCLUSIVE
 ** (which occurs during hot-journal rollback). Summary:
@@ -34467,7 +34467,7 @@ static int pagerOpentemp(
 **   SHARED_LOCK   -> EXCLUSIVE_LOCK   | No
 **   RESERVED_LOCK -> EXCLUSIVE_LOCK   | Yes
 **
-** If the busy-handler callback returns non-zero, the lock is 
+** If the busy-handler callback returns non-zero, the lock is
 ** retried. If it returns zero, then the SQLITE_BUSY error is
 ** returned to the caller of the pager API function.
 */
@@ -34475,7 +34475,7 @@ SQLITE_PRIVATE void sqlite3PagerSetBusyhandler(
   Pager *pPager,                       /* Pager object */
   int (*xBusyHandler)(void *),         /* Pointer to busy-handler function */
   void *pBusyHandlerArg                /* Argument to pass to xBusyHandler */
-){  
+){
   pPager->xBusyHandler = xBusyHandler;
   pPager->pBusyHandlerArg = pBusyHandlerArg;
 }
@@ -34496,16 +34496,16 @@ static void pagerReportSize(Pager *pPager){
 #endif
 
 /*
-** Change the page size used by the Pager object. The new page size 
+** Change the page size used by the Pager object. The new page size
 ** is passed in *pPageSize.
 **
 ** If the pager is in the error state when this function is called, it
-** is a no-op. The value returned is the error state error code (i.e. 
+** is a no-op. The value returned is the error state error code (i.e.
 ** one of SQLITE_IOERR, SQLITE_CORRUPT or SQLITE_FULL).
 **
 ** Otherwise, if all of the following are true:
 **
-**   * the new page size (value of *pPageSize) is valid (a power 
+**   * the new page size (value of *pPageSize) is valid (a power
 **     of two between 512 and SQLITE_MAX_PAGE_SIZE, inclusive), and
 **
 **   * there are no outstanding page references, and
@@ -34515,14 +34515,14 @@ static void pagerReportSize(Pager *pPager){
 **
 ** then the pager object page size is set to *pPageSize.
 **
-** If the page size is changed, then this function uses sqlite3PagerMalloc() 
-** to obtain a new Pager.pTmpSpace buffer. If this allocation attempt 
-** fails, SQLITE_NOMEM is returned and the page size remains unchanged. 
+** If the page size is changed, then this function uses sqlite3PagerMalloc()
+** to obtain a new Pager.pTmpSpace buffer. If this allocation attempt
+** fails, SQLITE_NOMEM is returned and the page size remains unchanged.
 ** In all other cases, SQLITE_OK is returned.
 **
 ** If the page size is not changed, either because one of the enumerated
 ** conditions above is not true, the pager was in error state when this
-** function was called, or because the memory allocation attempt failed, 
+** function was called, or because the memory allocation attempt failed,
 ** then *pPageSize is set to the old, retained page size before returning.
 */
 SQLITE_PRIVATE int sqlite3PagerSetPagesize(Pager *pPager, u16 *pPageSize, int nReserve){
@@ -34532,8 +34532,8 @@ SQLITE_PRIVATE int sqlite3PagerSetPagesize(Pager *pPager, u16 *pPageSize, int nR
     u16 pageSize = *pPageSize;
     assert( pageSize==0 || (pageSize>=512 && pageSize<=SQLITE_MAX_PAGE_SIZE) );
     if( (pPager->memDb==0 || pPager->dbSize==0)
-     && sqlite3PcacheRefCount(pPager->pPCache)==0 
-     && pageSize && pageSize!=pPager->pageSize 
+     && sqlite3PcacheRefCount(pPager->pPCache)==0
+     && pageSize && pageSize!=pPager->pageSize
     ){
       char *pNew = (char *)sqlite3PageMalloc(pageSize);
       if( !pNew ){
@@ -34568,7 +34568,7 @@ SQLITE_PRIVATE void *sqlite3PagerTempSpace(Pager *pPager){
 }
 
 /*
-** Attempt to set the maximum database page count if mxPage is positive. 
+** Attempt to set the maximum database page count if mxPage is positive.
 ** Make no changes if mxPage is zero or negative.  And never reduce the
 ** maximum page count below the current size of the database.
 **
@@ -34608,11 +34608,11 @@ void enable_simulated_io_errors(void){
 
 /*
 ** Read the first N bytes from the beginning of the file into memory
-** that pDest points to. 
+** that pDest points to.
 **
 ** If the pager was opened on a transient file (zFilename==""), or
 ** opened on a file less than N bytes in size, the output buffer is
-** zeroed and SQLITE_OK returned. The rationale for this is that this 
+** zeroed and SQLITE_OK returned. The rationale for this is that this
 ** function is used to read database headers, and a new transient or
 ** zero sized database has a header than consists entirely of zeroes.
 **
@@ -34635,9 +34635,9 @@ SQLITE_PRIVATE int sqlite3PagerReadFileheader(Pager *pPager, int N, unsigned cha
 }
 
 /*
-** Return the total number of pages in the database file associated 
+** Return the total number of pages in the database file associated
 ** with pPager. Normally, this is calculated as (<db file size>/<page-size>).
-** However, if the file is between 1 and <page-size> bytes in size, then 
+** However, if the file is between 1 and <page-size> bytes in size, then
 ** this is considered a 1 page file.
 **
 ** If the pager is in error state when this function is called, then the
@@ -34681,7 +34681,7 @@ SQLITE_PRIVATE int sqlite3PagerPagecount(Pager *pPager, int *pnPage){
     }
   }
 
-  /* If the current number of pages in the file is greater than the 
+  /* If the current number of pages in the file is greater than the
   ** configured maximum pager number, increase the allowed limit so
   ** that the file can be read.
   */
@@ -34702,13 +34702,13 @@ SQLITE_PRIVATE int sqlite3PagerPagecount(Pager *pPager, int *pnPage){
 ** a similar or greater lock is already held, this function is a no-op
 ** (returning SQLITE_OK immediately).
 **
-** Otherwise, attempt to obtain the lock using sqlite3OsLock(). Invoke 
-** the busy callback if the lock is currently not available. Repeat 
-** until the busy callback returns false or until the attempt to 
+** Otherwise, attempt to obtain the lock using sqlite3OsLock(). Invoke
+** the busy callback if the lock is currently not available. Repeat
+** until the busy callback returns false or until the attempt to
 ** obtain the lock succeeds.
 **
 ** Return SQLITE_OK on success and an error code if we cannot obtain
-** the lock. If the lock is obtained successfully, set the Pager.state 
+** the lock. If the lock is obtained successfully, set the Pager.state
 ** variable to locktype before returning.
 */
 static int pager_wait_on_lock(Pager *pPager, int locktype){
@@ -34725,7 +34725,7 @@ static int pager_wait_on_lock(Pager *pPager, int locktype){
   assert( pPager->state>=PAGER_SHARED || pPager->dbSizeValid==0 );
   assert( pPager->state>=PAGER_SHARED || pPager->dbModified==0 );
 
-  /* Check that this is either a no-op (because the requested lock is 
+  /* Check that this is either a no-op (because the requested lock is
   ** already held, or one of the transistions that the busy-handler
   ** may be invoked during, according to the comment above
   ** sqlite3PagerSetBusyhandler().
@@ -34750,10 +34750,10 @@ static int pager_wait_on_lock(Pager *pPager, int locktype){
 }
 
 /*
-** Function assertTruncateConstraint(pPager) checks that one of the 
+** Function assertTruncateConstraint(pPager) checks that one of the
 ** following is true for all dirty pages currently in the page-cache:
 **
-**   a) The page number is less than or equal to the size of the 
+**   a) The page number is less than or equal to the size of the
 **      current database image, in pages, OR
 **
 **   b) if the page content were written at this time, it would not
@@ -34766,9 +34766,9 @@ static int pager_wait_on_lock(Pager *pPager, int locktype){
 ** the database file. If a savepoint transaction were rolled back after
 ** this happened, the correct behaviour would be to restore the current
 ** content of the page. However, since this content is not present in either
-** the database file or the portion of the rollback journal and 
+** the database file or the portion of the rollback journal and
 ** sub-journal rolled back the content could not be restored and the
-** database image would become corrupt. It is therefore fortunate that 
+** database image would become corrupt. It is therefore fortunate that
 ** this circumstance cannot arise.
 */
 #if defined(SQLITE_DEBUG)
@@ -34784,9 +34784,9 @@ static void assertTruncateConstraint(Pager *pPager){
 #endif
 
 /*
-** Truncate the in-memory database file image to nPage pages. This 
-** function does not actually modify the database file on disk. It 
-** just sets the internal state of the pager object so that the 
+** Truncate the in-memory database file image to nPage pages. This
+** function does not actually modify the database file on disk. It
+** just sets the internal state of the pager object so that the
 ** truncation will be done when the current transaction is committed.
 */
 SQLITE_PRIVATE void sqlite3PagerTruncateImage(Pager *pPager, Pgno nPage){
@@ -34807,7 +34807,7 @@ SQLITE_PRIVATE void sqlite3PagerTruncateImage(Pager *pPager, Pgno nPage){
 ** result in a coredump.
 **
 ** This function always succeeds. If a transaction is active an attempt
-** is made to roll it back. If an error occurs during the rollback 
+** is made to roll it back. If an error occurs during the rollback
 ** a hot journal may be left in the filesystem but no error is returned
 ** to the caller.
 */
@@ -34820,7 +34820,7 @@ SQLITE_PRIVATE int sqlite3PagerClose(Pager *pPager){
   if( MEMDB ){
     pager_unlock(pPager);
   }else{
-    /* Set Pager.journalHdr to -1 for the benefit of the pager_playback() 
+    /* Set Pager.journalHdr to -1 for the benefit of the pager_playback()
     ** call which may be made from within pagerUnlockAndRollback(). If it
     ** is not -1, then the unsynced portion of an open journal file may
     ** be played back into the database. If a power failure occurs while
@@ -34882,7 +34882,7 @@ SQLITE_PRIVATE void sqlite3PagerRef(DbPage *pPg){
 **     been written following it. If the pager is operating in full-sync
 **     mode, then the journal file is synced before this field is updated.
 **
-**   * If the device does not support the SEQUENTIAL property, then 
+**   * If the device does not support the SEQUENTIAL property, then
 **     journal file is synced.
 **
 ** Or, in pseudo-code:
@@ -34891,14 +34891,14 @@ SQLITE_PRIVATE void sqlite3PagerRef(DbPage *pPg){
 **     if( NOT SAFE_APPEND ){
 **       if( <full-sync mode> ) xSync(<journal file>);
 **       <update nRec field>
-**     } 
+**     }
 **     if( NOT SEQUENTIAL ) xSync(<journal file>);
 **   }
 **
 ** The Pager.needSync flag is never be set for temporary files, or any
 ** file operating in no-sync mode (Pager.noSync set to non-zero).
 **
-** If successful, this routine clears the PGHDR_NEED_SYNC flag of every 
+** If successful, this routine clears the PGHDR_NEED_SYNC flag of every
 ** page currently held in memory before returning SQLITE_OK. If an IO
 ** error is encountered, then the IO error code is returned to the caller.
 */
@@ -34916,10 +34916,10 @@ static int syncJournal(Pager *pPager){
         ** mode, then the journal file may at this point actually be larger
         ** than Pager.journalOff bytes. If the next thing in the journal
         ** file happens to be a journal-header (written as part of the
-        ** previous connections transaction), and a crash or power-failure 
-        ** occurs after nRec is updated but before this connection writes 
-        ** anything else to the journal file (or commits/rolls back its 
-        ** transaction), then SQLite may become confused when doing the 
+        ** previous connections transaction), and a crash or power-failure
+        ** occurs after nRec is updated but before this connection writes
+        ** anything else to the journal file (or commits/rolls back its
+        ** transaction), then SQLite may become confused when doing the
         ** hot-journal rollback following recovery. It may roll back all
         ** of this connections data, then proceed to rolling back the old,
         ** out-of-date data that follows it. Database corruption.
@@ -34929,7 +34929,7 @@ static int syncJournal(Pager *pPager){
         ** byte to the start of it to prevent it from being recognized.
         **
         ** Variable iNextHdrOffset is set to the offset at which this
-        ** problematic header will occur, if it exists. aMagic is used 
+        ** problematic header will occur, if it exists. aMagic is used
         ** as a temporary buffer to inspect the first couple of bytes of
         ** the potential journal header.
         */
@@ -34956,7 +34956,7 @@ static int syncJournal(Pager *pPager){
         ** it as a candidate for rollback.
         **
         ** This is not required if the persistent media supports the
-        ** SAFE_APPEND property. Because in this case it is not possible 
+        ** SAFE_APPEND property. Because in this case it is not possible
         ** for garbage data to be appended to the file, the nRec field
         ** is populated with 0xFFFFFFFF when the journal header is written
         ** and never needs to be updated.
@@ -34976,14 +34976,14 @@ static int syncJournal(Pager *pPager){
       if( 0==(iDc&SQLITE_IOCAP_SEQUENTIAL) ){
         PAGERTRACE(("SYNC journal of %d\n", PAGERID(pPager)));
         IOTRACE(("JSYNC %p\n", pPager))
-        rc = sqlite3OsSync(pPager->jfd, pPager->sync_flags| 
+        rc = sqlite3OsSync(pPager->jfd, pPager->sync_flags|
           (pPager->sync_flags==SQLITE_SYNC_FULL?SQLITE_SYNC_DATAONLY:0)
         );
         if( rc!=SQLITE_OK ) return rc;
       }
     }
 
-    /* The journal file was just successfully synced. Set Pager.needSync 
+    /* The journal file was just successfully synced. Set Pager.needSync
     ** to zero and clear the PGHDR_NEED_SYNC flag on all pagess.
     */
     pPager->needSync = 0;
@@ -35005,9 +35005,9 @@ static int syncJournal(Pager *pPager){
 ** is called. Before writing anything to the database file, this lock
 ** is upgraded to an EXCLUSIVE lock. If the lock cannot be obtained,
 ** SQLITE_BUSY is returned and no data is written to the database file.
-** 
+**
 ** If the pager is a temp-file pager and the actual file-system file
-** is not yet open, it is created and opened before any data is 
+** is not yet open, it is created and opened before any data is
 ** written out.
 **
 ** Once the lock has been upgraded and, if necessary, the file opened,
@@ -35022,7 +35022,7 @@ static int syncJournal(Pager *pPager){
 ** in Pager.dbFileVers[] is updated to match the new value stored in
 ** the database file.
 **
-** If everything is successful, SQLITE_OK is returned. If an IO error 
+** If everything is successful, SQLITE_OK is returned. If an IO error
 ** occurs, an IO error code is returned. Or, if the EXCLUSIVE lock cannot
 ** be obtained, SQLITE_BUSY is returned.
 */
@@ -35074,7 +35074,7 @@ static int pager_write_pagelist(PgHdr *pList){
     */
     if( pgno<=pPager->dbSize && 0==(pList->flags&PGHDR_DONT_WRITE) ){
       i64 offset = (pgno-1)*(i64)pPager->pageSize;   /* Offset to write */
-      char *pData;                                   /* Data to write */    
+      char *pData;                                   /* Data to write */
 
       /* Encode the database */
       CODEC2(pPager, pList->pData, pgno, 6, return SQLITE_NOMEM, pData);
@@ -35083,8 +35083,8 @@ static int pager_write_pagelist(PgHdr *pList){
       rc = sqlite3OsWrite(pPager->fd, pData, pPager->pageSize, offset);
 
       /* If page 1 was just written, update Pager.dbFileVers to match
-      ** the value now stored in the database file. If writing this 
-      ** page caused the database file to grow, update dbFileSize. 
+      ** the value now stored in the database file. If writing this
+      ** page caused the database file to grow, update dbFileSize.
       */
       if( pgno==1 ){
         memcpy(&pPager->dbFileVers, &pData[24], sizeof(pPager->dbFileVers));
@@ -35114,15 +35114,15 @@ static int pager_write_pagelist(PgHdr *pList){
 }
 
 /*
-** Append a record of the current state of page pPg to the sub-journal. 
-** It is the callers responsibility to use subjRequiresPage() to check 
+** Append a record of the current state of page pPg to the sub-journal.
+** It is the callers responsibility to use subjRequiresPage() to check
 ** that it is really required before calling this function.
 **
 ** If successful, set the bit corresponding to pPg->pgno in the bitvecs
 ** for all open savepoints before returning.
 **
 ** This function returns SQLITE_OK if everything is successful, an IO
-** error code if the attempt to write to the sub-journal fails, or 
+** error code if the attempt to write to the sub-journal fails, or
 ** SQLITE_NOMEM if a malloc fails while setting a bit in a savepoint
 ** bitvec.
 */
@@ -35136,7 +35136,7 @@ static int subjournalPage(PgHdr *pPg){
 
     CODEC2(pPager, pData, pPg->pgno, 7, return SQLITE_NOMEM, pData2);
     PAGERTRACE(("STMT-JOURNAL %d page %d\n", PAGERID(pPager), pPg->pgno));
-  
+
     assert( pageInJournal(pPg) || pPg->pgno>pPager->dbOrigSize );
     rc = write32bits(pPager->sjfd, offset, pPg->pgno);
     if( rc==SQLITE_OK ){
@@ -35156,14 +35156,14 @@ static int subjournalPage(PgHdr *pPg){
 ** This function is called by the pcache layer when it has reached some
 ** soft memory limit. The first argument is a pointer to a Pager object
 ** (cast as a void*). The pager is always 'purgeable' (not an in-memory
-** database). The second argument is a reference to a page that is 
+** database). The second argument is a reference to a page that is
 ** currently dirty but has no outstanding references. The page
-** is always associated with the Pager object passed as the first 
+** is always associated with the Pager object passed as the first
 ** argument.
 **
 ** The job of this function is to make pPg clean by writing its contents
 ** out to the database file, if possible. This may involve syncing the
-** journal file. 
+** journal file.
 **
 ** If successful, sqlite3PcacheMakeClean() is called on the page and
 ** SQLITE_OK returned. If an IO error occurs while trying to make the
@@ -35200,7 +35200,7 @@ static int pagerStress(void *p, PgHdr *pPg){
   /* Sync the journal file if required. */
   if( pPg->flags&PGHDR_NEED_SYNC ){
     rc = syncJournal(pPager);
-    if( rc==SQLITE_OK && pPager->fullSync && 
+    if( rc==SQLITE_OK && pPager->fullSync &&
       !(pPager->journalMode==PAGER_JOURNALMODE_MEMORY) &&
       !(sqlite3OsDeviceCharacteristics(pPager->fd)&SQLITE_IOCAP_SAFE_APPEND)
     ){
@@ -35231,9 +35231,9 @@ static int pagerStress(void *p, PgHdr *pPg){
   ** was when the transaction started, not as it was when "SAVEPOINT sp"
   ** was executed.
   **
-  ** The solution is to write the current data for page X into the 
+  ** The solution is to write the current data for page X into the
   ** sub-journal file now (if it is not already there), so that it will
-  ** be restored to its current value when the "ROLLBACK TO sp" is 
+  ** be restored to its current value when the "ROLLBACK TO sp" is
   ** executed.
   */
   if( NEVER(
@@ -35266,8 +35266,8 @@ static int pagerStress(void *p, PgHdr *pPg){
 ** The zFilename argument is the path to the database file to open.
 ** If zFilename is NULL then a randomly-named temporary file is created
 ** and used as the file to be cached. Temporary files are be deleted
-** automatically when they are closed. If zFilename is ":memory:" then 
-** all information is held in cache. It is never written to disk. 
+** automatically when they are closed. If zFilename is ":memory:" then
+** all information is held in cache. It is never written to disk.
 ** This can be used to implement an in-memory database.
 **
 ** The nExtra parameter specifies the number of bytes of space allocated
@@ -35279,13 +35279,13 @@ static int pagerStress(void *p, PgHdr *pPg){
 ** of the PAGER_OMIT_JOURNAL and PAGER_NO_READLOCK flags.
 **
 ** The vfsFlags parameter is a bitmask to pass to the flags parameter
-** of the xOpen() method of the supplied VFS when opening files. 
+** of the xOpen() method of the supplied VFS when opening files.
 **
-** If the pager object is allocated and the specified file opened 
+** If the pager object is allocated and the specified file opened
 ** successfully, SQLITE_OK is returned and *ppPager set to point to
 ** the new pager object. If an error occurs, *ppPager is set to NULL
 ** and error code returned. This function may return SQLITE_NOMEM
-** (sqlite3Malloc() is used to allocate memory), SQLITE_CANTOPEN or 
+** (sqlite3Malloc() is used to allocate memory), SQLITE_CANTOPEN or
 ** various SQLITE_IO_XXX errors.
 */
 SQLITE_PRIVATE int sqlite3PagerOpen(
@@ -35313,10 +35313,10 @@ SQLITE_PRIVATE int sqlite3PagerOpen(
 
   /* Figure out how much space is required for each journal file-handle
   ** (there are two of them, the main journal and the sub-journal). This
-  ** is the maximum space required for an in-memory journal file handle 
+  ** is the maximum space required for an in-memory journal file handle
   ** and a regular journal file-handle. Note that a "regular journal-handle"
   ** may be a wrapper capable of caching the first portion of the journal
-  ** file in memory to implement the atomic-write optimization (see 
+  ** file in memory to implement the atomic-write optimization (see
   ** source file journal.c).
   */
   if( sqlite3JournalSize(pVfs)>sqlite3MemJournalSize() ){
@@ -35366,7 +35366,7 @@ SQLITE_PRIVATE int sqlite3PagerOpen(
   }
 
   /* Allocate memory for the Pager structure, PCache object, the
-  ** three file descriptors, the database file name and the journal 
+  ** three file descriptors, the database file name and the journal
   ** file name. The layout in memory is as follows:
   **
   **     Pager object                    (sizeof(Pager) bytes)
@@ -35381,7 +35381,7 @@ SQLITE_PRIVATE int sqlite3PagerOpen(
     ROUND8(sizeof(*pPager)) +      /* Pager structure */
     ROUND8(pcacheSize) +           /* PCache object */
     ROUND8(pVfs->szOsFile) +       /* The main db file */
-    journalFileSize * 2 +          /* The two journal files */ 
+    journalFileSize * 2 +          /* The two journal files */
     nPathname + 1 +                /* zFilename */
     nPathname + 8 + 1              /* zJournal */
   );
@@ -35458,13 +35458,13 @@ SQLITE_PRIVATE int sqlite3PagerOpen(
     ** This branch is also run for an in-memory database. An in-memory
     ** database is the same as a temp-file that is never written out to
     ** disk and uses an in-memory rollback journal.
-    */ 
+    */
     tempFile = 1;
     pPager->state = PAGER_EXCLUSIVE;
     readOnly = (vfsFlags&SQLITE_OPEN_READONLY);
   }
 
-  /* The following call to PagerSetPagesize() serves to set the value of 
+  /* The following call to PagerSetPagesize() serves to set the value of
   ** Pager.pageSize and to allocate the Pager.pTmpSpace buffer.
   */
   if( rc==SQLITE_OK ){
@@ -35473,7 +35473,7 @@ SQLITE_PRIVATE int sqlite3PagerOpen(
     testcase( rc!=SQLITE_OK );
   }
 
-  /* If an error occurred in either of the blocks above, free the 
+  /* If an error occurred in either of the blocks above, free the
   ** Pager structure and close the file.
   */
   if( rc!=SQLITE_OK ){
@@ -35506,10 +35506,10 @@ SQLITE_PRIVATE int sqlite3PagerOpen(
   assert( pPager->state == (tempFile ? PAGER_EXCLUSIVE : PAGER_UNLOCK) );
   /* pPager->errMask = 0; */
   pPager->tempFile = (u8)tempFile;
-  assert( tempFile==PAGER_LOCKINGMODE_NORMAL 
+  assert( tempFile==PAGER_LOCKINGMODE_NORMAL
           || tempFile==PAGER_LOCKINGMODE_EXCLUSIVE );
   assert( PAGER_LOCKINGMODE_EXCLUSIVE==1 );
-  pPager->exclusiveMode = (u8)tempFile; 
+  pPager->exclusiveMode = (u8)tempFile;
   pPager->changeCountDone = pPager->tempFile;
   pPager->memDb = (u8)memDb;
   pPager->readOnly = (u8)readOnly;
@@ -35544,7 +35544,7 @@ SQLITE_PRIVATE int sqlite3PagerOpen(
 /*
 ** This function is called after transitioning from PAGER_UNLOCK to
 ** PAGER_SHARED state. It tests if there is a hot journal present in
-** the file-system for the given pager. A hot journal is one that 
+** the file-system for the given pager. A hot journal is one that
 ** needs to be played back. According to this function, a hot-journal
 ** file exists if the following criteria are met:
 **
@@ -35563,10 +35563,10 @@ SQLITE_PRIVATE int sqlite3PagerOpen(
 ** at the end of the file. If there is, and that master journal file
 ** does not exist, then the journal file is not really hot. In this
 ** case this routine will return a false-positive. The pager_playback()
-** routine will discover that the journal file is not really hot and 
-** will not roll it back. 
+** routine will discover that the journal file is not really hot and
+** will not roll it back.
 **
-** If a hot-journal file is found to exist, *pExists is set to 1 and 
+** If a hot-journal file is found to exist, *pExists is set to 1 and
 ** SQLITE_OK returned. If no hot-journal file is present, *pExists is
 ** set to 0 and SQLITE_OK returned. If an IO error occurs while trying
 ** to determine whether or not a hot-journal file exists, the IO error
@@ -35589,7 +35589,7 @@ static int hasHotJournal(Pager *pPager, int *pExists){
     int locked;                 /* True if some process holds a RESERVED lock */
 
     /* Race condition here:  Another process might have been holding the
-    ** the RESERVED lock and have a journal open at the sqlite3OsAccess() 
+    ** the RESERVED lock and have a journal open at the sqlite3OsAccess()
     ** call above, but then delete the journal and drop the lock before
     ** we get to the following sqlite3OsCheckReservedLock() call.  If that
     ** is the case, this routine might think there is a hot journal when
@@ -35601,7 +35601,7 @@ static int hasHotJournal(Pager *pPager, int *pExists){
       int nPage;
 
       /* Check the size of the database file. If it consists of 0 pages,
-      ** then delete the journal file. See the header comment above for 
+      ** then delete the journal file. See the header comment above for
       ** the reasoning here.  Delete the obsolete journal file under
       ** a RESERVED lock to avoid race conditions and to avoid violating
       ** [H33020].
@@ -35619,7 +35619,7 @@ static int hasHotJournal(Pager *pPager, int *pExists){
           /* The journal file exists and no other connection has a reserved
           ** or greater lock on the database file. Now check that there is
           ** at least one non-zero bytes at the start of the journal file.
-          ** If there is, then we consider this journal to be hot. If not, 
+          ** If there is, then we consider this journal to be hot. If not,
           ** it can be ignored.
           */
           int f = SQLITE_OPEN_READONLY|SQLITE_OPEN_MAIN_JOURNAL;
@@ -35654,7 +35654,7 @@ static int hasHotJournal(Pager *pPager, int *pExists){
 }
 
 /*
-** Read the content for page pPg out of the database file and into 
+** Read the content for page pPg out of the database file and into
 ** pPg->pData. A shared lock or greater must be held on the database
 ** file before this function is called.
 **
@@ -35726,7 +35726,7 @@ static int readDbPage(PgHdr *pPg){
 **      on the database file), then an attempt is made to obtain a
 **      SHARED lock on the database file. Immediately after obtaining
 **      the SHARED lock, the file-system is checked for a hot-journal,
-**      which is played back if present. Following any hot-journal 
+**      which is played back if present. Following any hot-journal
 **      rollback, the contents of the cache are validated by checking
 **      the 'change-counter' field of the database file header and
 **      discarded if they are found to be invalid.
@@ -35799,12 +35799,12 @@ SQLITE_PRIVATE int sqlite3PagerSharedLock(Pager *pPager){
       ** important that a RESERVED lock is not obtained on the way to the
       ** EXCLUSIVE lock. If it were, another process might open the
       ** database file, detect the RESERVED lock, and conclude that the
-      ** database is safe to read while this process is still rolling the 
+      ** database is safe to read while this process is still rolling the
       ** hot-journal back.
-      ** 
+      **
       ** Because the intermediate RESERVED lock is not requested, any
-      ** other process attempting to access the database file will get to 
-      ** this point in the code and fail to obtain its own EXCLUSIVE lock 
+      ** other process attempting to access the database file will get to
+      ** this point in the code and fail to obtain its own EXCLUSIVE lock
       ** on the database file.
       */
       if( pPager->state<EXCLUSIVE_LOCK ){
@@ -35815,8 +35815,8 @@ SQLITE_PRIVATE int sqlite3PagerSharedLock(Pager *pPager){
         }
         pPager->state = PAGER_EXCLUSIVE;
       }
-      /* Open the journal for read/write access. This is because in 
+
+      /* Open the journal for read/write access. This is because in
       ** exclusive-access mode the file descriptor will be kept open and
       ** possibly used for a transaction later on. On some systems, the
       ** OsTruncate() call used in exclusive-access mode also requires
@@ -35837,9 +35837,9 @@ SQLITE_PRIVATE int sqlite3PagerSharedLock(Pager *pPager){
               sqlite3OsClose(pPager->jfd);
             }
           }else{
-            /* If the journal does not exist, it usually means that some 
-            ** other connection managed to get in and roll it back before 
-            ** this connection obtained the exclusive lock above. Or, it 
+            /* If the journal does not exist, it usually means that some
+            ** other connection managed to get in and roll it back before
+            ** this connection obtained the exclusive lock above. Or, it
             ** may mean that the pager was in the error-state when this
             ** function was called and the journal file does not exist.  */
             rc = pager_end_transaction(pPager, 0);
@@ -35855,7 +35855,7 @@ SQLITE_PRIVATE int sqlite3PagerSharedLock(Pager *pPager){
       pPager->journalOff = 0;
       pPager->setMaster = 0;
       pPager->journalHdr = 0;
+
       /* Playback and delete the journal.  Drop the database write
       ** lock and reacquire the read lock. Purge the cache before
       ** playing back the hot-journal so that we don't end up with
@@ -35885,8 +35885,8 @@ SQLITE_PRIVATE int sqlite3PagerSharedLock(Pager *pPager){
       ** a 32-bit counter that is incremented with each change.  The
       ** other bytes change randomly with each file change when
       ** a codec is in use.
-      ** 
-      ** There is a vanishingly small chance that a change will not be 
+      **
+      ** There is a vanishingly small chance that a change will not be
       ** detected.  The chance of an undetected change is so small that
       ** it can be neglected.
       */
@@ -35931,10 +35931,10 @@ SQLITE_PRIVATE int sqlite3PagerSharedLock(Pager *pPager){
 ** Except, in locking_mode=EXCLUSIVE when there is nothing to in
 ** the rollback journal, the unlock is not performed and there is
 ** nothing to rollback, so this routine is a no-op.
-*/ 
+*/
 static void pagerUnlockIfUnused(Pager *pPager){
   if( (sqlite3PcacheRefCount(pPager->pPCache)==0)
-   && (!pPager->exclusiveMode || pPager->journalOff>0) 
+   && (!pPager->exclusiveMode || pPager->journalOff>0)
   ){
     pagerUnlockAndRollback(pPager);
   }
@@ -35942,25 +35942,25 @@ static void pagerUnlockIfUnused(Pager *pPager){
 
 /*
 ** Acquire a reference to page number pgno in pager pPager (a page
-** reference has type DbPage*). If the requested reference is 
+** reference has type DbPage*). If the requested reference is
 ** successfully obtained, it is copied to *ppPage and SQLITE_OK returned.
 **
-** If the requested page is already in the cache, it is returned. 
+** If the requested page is already in the cache, it is returned.
 ** Otherwise, a new page object is allocated and populated with data
 ** read from the database file. In some cases, the pcache module may
 ** choose not to allocate a new page object and may reuse an existing
 ** object with no outstanding references.
 **
-** The extra data appended to a page is always initialized to zeros the 
-** first time a page is loaded into memory. If the page requested is 
+** The extra data appended to a page is always initialized to zeros the
+** first time a page is loaded into memory. If the page requested is
 ** already in the cache when this function is called, then the extra
 ** data is left as it was when the page object was last used.
 **
-** If the database image is smaller than the requested page or if a 
-** non-zero value is passed as the noContent parameter and the 
-** requested page is not already stored in the cache, then no 
-** actual disk read occurs. In this case the memory image of the 
-** page is initialized to all zeros. 
+** If the database image is smaller than the requested page or if a
+** non-zero value is passed as the noContent parameter and the
+** requested page is not already stored in the cache, then no
+** actual disk read occurs. In this case the memory image of the
+** page is initialized to all zeros.
 **
 ** If noContent is true, it means that we do not care about the contents
 ** of the page. This occurs in two seperate scenarios:
@@ -36006,7 +36006,7 @@ SQLITE_PRIVATE int sqlite3PagerAcquire(
     return SQLITE_CORRUPT_BKPT;
   }
 
-  /* If the pager is in the error state, return an error immediately. 
+  /* If the pager is in the error state, return an error immediately.
   ** Otherwise, request the page from the PCache layer. */
   if( pPager->errCode!=SQLITE_OK && pPager->errCode!=SQLITE_FULL ){
     rc = pPager->errCode;
@@ -36032,7 +36032,7 @@ SQLITE_PRIVATE int sqlite3PagerAcquire(
     return SQLITE_OK;
 
   }else{
-    /* The pager cache has created a new page. Its content needs to 
+    /* The pager cache has created a new page. Its content needs to
     ** be initialized.  */
     int nMax;
 
@@ -36059,9 +36059,9 @@ SQLITE_PRIVATE int sqlite3PagerAcquire(
       }
       if( noContent ){
         /* Failure to set the bits in the InJournal bit-vectors is benign.
-        ** It merely means that we might do some extra work to journal a 
-        ** page that does not need to be journaled.  Nevertheless, be sure 
-        ** to test the case where a malloc error occurs while trying to set 
+        ** It merely means that we might do some extra work to journal a
+        ** page that does not need to be journaled.  Nevertheless, be sure
+        ** to test the case where a malloc error occurs while trying to set
         ** a bit in a bit vector.
         */
         sqlite3BeginBenignMalloc();
@@ -36103,14 +36103,14 @@ pager_acquire_err:
 /*
 ** Acquire a page if it is already in the in-memory cache.  Do
 ** not read the page from disk.  Return a pointer to the page,
-** or 0 if the page is not in cache. Also, return 0 if the 
+** or 0 if the page is not in cache. Also, return 0 if the
 ** pager is in PAGER_UNLOCK state when this function is called,
 ** or if the pager is in an error state other than SQLITE_FULL.
 **
 ** See also sqlite3PagerGet().  The difference between this routine
 ** and sqlite3PagerGet() is that _get() will go to the disk and read
 ** in the page if the page is not already in cache.  This routine
-** returns NULL if the page is not in cache or if a disk I/O error 
+** returns NULL if the page is not in cache or if a disk I/O error
 ** has ever happened.
 */
 SQLITE_PRIVATE DbPage *sqlite3PagerLookup(Pager *pPager, Pgno pgno){
@@ -36144,8 +36144,8 @@ SQLITE_PRIVATE void sqlite3PagerUnref(DbPage *pPg){
 ** sub-journal file is open too. If the main journal is not open,
 ** this function is a no-op.
 **
-** SQLITE_OK is returned if everything goes according to plan. 
-** An SQLITE_IOERR_XXX error code is returned if a call to 
+** SQLITE_OK is returned if everything goes according to plan.
+** An SQLITE_IOERR_XXX error code is returned if a call to
 ** sqlite3OsOpen() fails.
 */
 static int openSubJournal(Pager *pPager){
@@ -36162,24 +36162,24 @@ static int openSubJournal(Pager *pPager){
 
 /*
 ** This function is called at the start of every write transaction.
-** There must already be a RESERVED or EXCLUSIVE lock on the database 
+** There must already be a RESERVED or EXCLUSIVE lock on the database
 ** file when this routine is called.
 **
 ** Open the journal file for pager pPager and write a journal header
 ** to the start of it. If there are active savepoints, open the sub-journal
-** as well. This function is only used when the journal file is being 
-** opened to write a rollback log for a transaction. It is not used 
+** as well. This function is only used when the journal file is being
+** opened to write a rollback log for a transaction. It is not used
 ** when opening a hot journal file to roll it back.
 **
 ** If the journal file is already open (as it may be in exclusive mode),
 ** then this function just writes a journal header to the start of the
-** already open file. 
+** already open file.
 **
 ** Whether or not the journal file is opened by this function, the
 ** Pager.pInJournal bitvec structure is allocated.
 **
-** Return SQLITE_OK if everything is successful. Otherwise, return 
-** SQLITE_NOMEM if the attempt to allocate Pager.pInJournal fails, or 
+** Return SQLITE_OK if everything is successful. Otherwise, return
+** SQLITE_NOMEM if the attempt to allocate Pager.pInJournal fails, or
 ** an IO error code if opening or writing the journal file fails.
 */
 static int pager_open_journal(Pager *pPager){
@@ -36190,7 +36190,7 @@ static int pager_open_journal(Pager *pPager){
   assert( pPager->useJournal );
   assert( pPager->journalMode!=PAGER_JOURNALMODE_OFF );
   assert( pPager->pInJournal==0 );
-  
+
   /* If already in the error state, this function is a no-op.  But on
   ** the other hand, this routine is never called if we are already in
   ** an error state. */
@@ -36214,7 +36214,7 @@ static int pager_open_journal(Pager *pPager){
     }else{
       const int flags =                   /* VFS flags to open journal file */
         SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|
-        (pPager->tempFile ? 
+        (pPager->tempFile ?
           (SQLITE_OPEN_DELETEONCLOSE|SQLITE_OPEN_TEMP_JOURNAL):
           (SQLITE_OPEN_MAIN_JOURNAL)
         );
@@ -36230,7 +36230,7 @@ static int pager_open_journal(Pager *pPager){
   }
 
 
-  /* Write the first journal header to the journal file and open 
+  /* Write the first journal header to the journal file and open
   ** the sub-journal if necessary.
   */
   if( rc==SQLITE_OK ){
@@ -36256,17 +36256,17 @@ static int pager_open_journal(Pager *pPager){
 }
 
 /*
-** Begin a write-transaction on the specified pager object. If a 
+** Begin a write-transaction on the specified pager object. If a
 ** write-transaction has already been opened, this function is a no-op.
 **
 ** If the exFlag argument is false, then acquire at least a RESERVED
 ** lock on the database file. If exFlag is true, then acquire at least
-** an EXCLUSIVE lock. If such a lock is already held, no locking 
+** an EXCLUSIVE lock. If such a lock is already held, no locking
 ** functions need be called.
 **
-** If this is not a temporary or in-memory file and, the journal file is 
-** opened if it has not been already. For a temporary file, the opening 
-** of the journal file is deferred until there is an actual need to 
+** If this is not a temporary or in-memory file and, the journal file is
+** opened if it has not been already. For a temporary file, the opening
+** of the journal file is deferred until there is an actual need to
 ** write to the journal. TODO: Why handle temporary files differently?
 **
 ** If the journal file is opened (or if it is already open), then a
@@ -36277,7 +36277,7 @@ static int pager_open_journal(Pager *pPager){
 ** has no effect if the sub-journal is already opened (as it may be when
 ** running in exclusive mode) or if the transaction does not require a
 ** sub-journal. If the subjInMemory argument is zero, then any required
-** sub-journal is implemented in-memory if pPager is an in-memory database, 
+** sub-journal is implemented in-memory if pPager is an in-memory database,
 ** or using a temporary file otherwise.
 */
 SQLITE_PRIVATE int sqlite3PagerBegin(Pager *pPager, int exFlag, int subjInMemory){
@@ -36310,7 +36310,7 @@ SQLITE_PRIVATE int sqlite3PagerBegin(Pager *pPager, int exFlag, int subjInMemory
   }else if( isOpen(pPager->jfd) && pPager->journalOff==0 ){
     /* This happens when the pager was in exclusive-access mode the last
     ** time a (read or write) transaction was successfully concluded
-    ** by this connection. Instead of deleting the journal file it was 
+    ** by this connection. Instead of deleting the journal file it was
     ** kept open and either was truncated to 0 bytes or its header was
     ** overwritten with zeros.
     */
@@ -36335,9 +36335,9 @@ SQLITE_PRIVATE int sqlite3PagerBegin(Pager *pPager, int exFlag, int subjInMemory
 }
 
 /*
-** Mark a single data page as writeable. The page is written into the 
+** Mark a single data page as writeable. The page is written into the
 ** main journal or sub-journal as required. If the page is written into
-** one of the journals, the corresponding bit is set in the 
+** one of the journals, the corresponding bit is set in the
 ** Pager.pInJournal bitvec and the PagerSavepoint.pInSavepoint bitvecs
 ** of any open savepoints as appropriate.
 */
@@ -36390,7 +36390,7 @@ static int pager_write(PgHdr *pPg){
       if( rc!=SQLITE_OK ) return rc;
     }
     pPager->dbModified = 1;
-  
+
     /* The transaction journal now exists and we have a RESERVED or an
     ** EXCLUSIVE lock on the main database file.  Write the current page to
     ** the transaction journal if it is not there already.
@@ -36416,11 +36416,11 @@ static int pager_write(PgHdr *pPg){
           rc = write32bits(pPager->jfd, pPager->journalOff, cksum);
           pPager->journalOff += 4;
         }
-        IOTRACE(("JOUT %p %d %lld %d\n", pPager, pPg->pgno, 
+        IOTRACE(("JOUT %p %d %lld %d\n", pPager, pPg->pgno,
                  pPager->journalOff, pPager->pageSize));
         PAGER_INCR(sqlite3_pager_writej_count);
         PAGERTRACE(("JOURNAL %d page %d needSync=%d hash(%08x)\n",
-             PAGERID(pPager), pPg->pgno, 
+             PAGERID(pPager), pPg->pgno,
              ((pPg->flags&PGHDR_NEED_SYNC)?1:0), pager_pagehash(pPg)));
 
         /* Even if an IO or diskfull error occurred while journalling the
@@ -36435,7 +36435,7 @@ static int pager_write(PgHdr *pPg){
           pPager->needSync = 1;
         }
 
-        /* An error has occurred writing to the journal file. The 
+        /* An error has occurred writing to the journal file. The
         ** transaction will be rolled back by the layer above.
         */
         if( rc!=SQLITE_OK ){
@@ -36462,7 +36462,7 @@ static int pager_write(PgHdr *pPg){
                ((pPg->flags&PGHDR_NEED_SYNC)?1:0)));
       }
     }
-  
+
     /* If the statement journal is open and the page is not in it,
     ** then write the current page to the statement journal.  Note that
     ** the statement journal format differs from the standard journal format
@@ -36483,9 +36483,9 @@ static int pager_write(PgHdr *pPg){
 }
 
 /*
-** Mark a data page as writeable. This routine must be called before 
-** making changes to a page. The caller must check the return value 
-** of this function and be careful not to change any page data unless 
+** Mark a data page as writeable. This routine must be called before
+** making changes to a page. The caller must check the return value
+** of this function and be careful not to change any page data unless
 ** this routine returns SQLITE_OK.
 **
 ** The difference between this function and pager_write() is that this
@@ -36558,7 +36558,7 @@ SQLITE_PRIVATE int sqlite3PagerWrite(DbPage *pDbPage){
       }
     }
 
-    /* If the PGHDR_NEED_SYNC flag is set for any of the nPage pages 
+    /* If the PGHDR_NEED_SYNC flag is set for any of the nPage pages
     ** starting at pg1, then it needs to be set for all of them. Because
     ** writing to any of these nPage pages may damage the others, the
     ** journal file must contain sync()ed copies of all of them
@@ -36606,7 +36606,7 @@ SQLITE_PRIVATE int sqlite3PagerIswriteable(DbPage *pPg){
 ** on the given page is unused. The pager marks the page as clean so
 ** that it does not get written to disk.
 **
-** Tests show that this optimization can quadruple the speed of large 
+** Tests show that this optimization can quadruple the speed of large
 ** DELETE operations.
 */
 SQLITE_PRIVATE void sqlite3PagerDontWrite(PgHdr *pPg){
@@ -36622,11 +36622,11 @@ SQLITE_PRIVATE void sqlite3PagerDontWrite(PgHdr *pPg){
 }
 
 /*
-** This routine is called to increment the value of the database file 
-** change-counter, stored as a 4-byte big-endian integer starting at 
+** This routine is called to increment the value of the database file
+** change-counter, stored as a 4-byte big-endian integer starting at
 ** byte offset 24 of the pager file.
 **
-** If the isDirectMode flag is zero, then this is done by calling 
+** If the isDirectMode flag is zero, then this is done by calling
 ** sqlite3PagerWrite() on page 1, then modifying the contents of the
 ** page data. In this case the file will be updated when the current
 ** transaction is committed.
@@ -36634,7 +36634,7 @@ SQLITE_PRIVATE void sqlite3PagerDontWrite(PgHdr *pPg){
 ** The isDirectMode flag may only be non-zero if the library was compiled
 ** with the SQLITE_ENABLE_ATOMIC_WRITE macro defined. In this case,
 ** if isDirect is non-zero, then the database file is updated directly
-** by writing an updated version of page 1 using a call to the 
+** by writing an updated version of page 1 using a call to the
 ** sqlite3OsWrite() function.
 */
 static int pager_incr_changecounter(Pager *pPager, int isDirectMode){
@@ -36670,7 +36670,7 @@ static int pager_incr_changecounter(Pager *pPager, int isDirectMode){
     assert( pPgHdr==0 || rc==SQLITE_OK );
 
     /* If page one was fetched successfully, and this function is not
-    ** operating in direct-mode, make page 1 writable.  When not in 
+    ** operating in direct-mode, make page 1 writable.  When not in
     ** direct mode, page 1 is always held in cache and hence the PagerGet()
     ** above is always successful - hence the ALWAYS on rc==SQLITE_OK.
     */
@@ -36731,12 +36731,12 @@ SQLITE_PRIVATE int sqlite3PagerSync(Pager *pPager){
 **
 **   * The database file change-counter is updated,
 **   * the journal is synced (unless the atomic-write optimization is used),
-**   * all dirty pages are written to the database file, 
+**   * all dirty pages are written to the database file,
 **   * the database file is truncated (if required), and
-**   * the database file synced. 
+**   * the database file synced.
 **
-** The only thing that remains to commit the transaction is to finalize 
-** (delete, truncate or zero the first part of) the journal file (or 
+** The only thing that remains to commit the transaction is to finalize
+** (delete, truncate or zero the first part of) the journal file (or
 ** delete the master journal file if specified).
 **
 ** Note that if zMaster==NULL, this does not overwrite a previous value
@@ -36762,7 +36762,7 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseOne(
   ** coding errors by repeating the prior error. */
   if( NEVER(pPager->errCode) ) return pPager->errCode;
 
-  PAGERTRACE(("DATABASE SYNC: File=%s zMaster=%s nSize=%d\n", 
+  PAGERTRACE(("DATABASE SYNC: File=%s zMaster=%s nSize=%d\n",
       pPager->zFilename, zMaster, pPager->dbSize));
 
   if( MEMDB && pPager->dbModified ){
@@ -36775,11 +36775,11 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseOne(
 
     /* The following block updates the change-counter. Exactly how it
     ** does this depends on whether or not the atomic-update optimization
-    ** was enabled at compile time, and if this transaction meets the 
-    ** runtime criteria to use the operation: 
+    ** was enabled at compile time, and if this transaction meets the
+    ** runtime criteria to use the operation:
     **
     **    * The file-system supports the atomic-write property for
-    **      blocks of size page-size, and 
+    **      blocks of size page-size, and
     **    * This commit is not part of a multi-file transaction, and
     **    * Exactly one page has been modified and store in the journal file.
     **
@@ -36789,7 +36789,7 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseOne(
     ** is not applicable to this transaction, call sqlite3JournalCreate()
     ** to make sure the journal file has actually been created, then call
     ** pager_incr_changecounter() to update the change-counter in indirect
-    ** mode. 
+    ** mode.
     **
     ** Otherwise, if the optimization is both enabled and applicable,
     ** then call pager_incr_changecounter() to update the change-counter
@@ -36799,15 +36799,15 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseOne(
 #ifdef SQLITE_ENABLE_ATOMIC_WRITE
     PgHdr *pPg;
     assert( isOpen(pPager->jfd) || pPager->journalMode==PAGER_JOURNALMODE_OFF );
-    if( !zMaster && isOpen(pPager->jfd) 
-     && pPager->journalOff==jrnlBufferSize(pPager) 
+    if( !zMaster && isOpen(pPager->jfd)
+     && pPager->journalOff==jrnlBufferSize(pPager)
      && pPager->dbSize>=pPager->dbFileSize
      && (0==(pPg = sqlite3PcacheDirtyList(pPager->pPCache)) || 0==pPg->pDirty)
     ){
-      /* Update the db file change counter via the direct-write method. The 
-      ** following call will modify the in-memory representation of page 1 
-      ** to include the updated change counter and then write page 1 
-      ** directly to the database file. Because of the atomic-write 
+      /* Update the db file change counter via the direct-write method. The
+      ** following call will modify the in-memory representation of page 1
+      ** to include the updated change counter and then write page 1
+      ** directly to the database file. Because of the atomic-write
       ** property of the host file-system, this is safe.
       */
       rc = pager_incr_changecounter(pPager, 1);
@@ -36826,22 +36826,22 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseOne(
     ** being discarded by the truncation must be written to the journal
     ** file. This can only happen in auto-vacuum mode.
     **
-    ** Before reading the pages with page numbers larger than the 
+    ** Before reading the pages with page numbers larger than the
     ** current value of Pager.dbSize, set dbSize back to the value
     ** that it took at the start of the transaction. Otherwise, the
-    ** calls to sqlite3PagerGet() return zeroed pages instead of 
+    ** calls to sqlite3PagerGet() return zeroed pages instead of
     ** reading data from the database file.
     **
     ** When journal_mode==OFF the dbOrigSize is always zero, so this
     ** block never runs if journal_mode=OFF.
     */
 #ifndef SQLITE_OMIT_AUTOVACUUM
-    if( pPager->dbSize<pPager->dbOrigSize 
+    if( pPager->dbSize<pPager->dbOrigSize
      && ALWAYS(pPager->journalMode!=PAGER_JOURNALMODE_OFF)
     ){
       Pgno i;                                   /* Iterator variable */
       const Pgno iSkip = PAGER_MJ_PGNO(pPager); /* Pending lock page */
-      const Pgno dbSize = pPager->dbSize;       /* Database image size */ 
+      const Pgno dbSize = pPager->dbSize;       /* Database image size */
       pPager->dbSize = pPager->dbOrigSize;
       for( i=dbSize+1; i<=pPager->dbOrigSize; i++ ){
         if( !sqlite3BitvecTest(pPager->pInJournal, i) && i!=iSkip ){
@@ -36852,13 +36852,13 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseOne(
           sqlite3PagerUnref(pPage);
           if( rc!=SQLITE_OK ) goto commit_phase_one_exit;
         }
-      } 
+      }
       pPager->dbSize = dbSize;
     }
 #endif
 
-    /* Write the master journal name into the journal file. If a master 
-    ** journal file name has already been written to the journal file, 
+    /* Write the master journal name into the journal file. If a master
+    ** journal file name has already been written to the journal file,
     ** or if zMaster is NULL (no master journal), then this call is a no-op.
     */
     rc = writeMasterJournal(pPager, zMaster);
@@ -36906,12 +36906,12 @@ commit_phase_one_exit:
 /*
 ** When this function is called, the database file has been completely
 ** updated to reflect the changes made by the current transaction and
-** synced to disk. The journal file still exists in the file-system 
+** synced to disk. The journal file still exists in the file-system
 ** though, and if a failure occurs at this point it will eventually
 ** be used as a hot-journal and the current transaction rolled back.
 **
-** This function finalizes the journal file, either by deleting, 
-** truncating or partially zeroing it, so that it cannot be used 
+** This function finalizes the journal file, either by deleting,
+** truncating or partially zeroing it, so that it cannot be used
 ** for hot-journal rollback. Once this is done the transaction is
 ** irrevocably committed.
 **
@@ -36936,14 +36936,14 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseTwo(Pager *pPager){
   ** this transaction, the pager is running in exclusive-mode and is
   ** using persistent journals, then this function is a no-op.
   **
-  ** The start of the journal file currently contains a single journal 
+  ** The start of the journal file currently contains a single journal
   ** header with the nRec field set to 0. If such a journal is used as
   ** a hot-journal during hot-journal rollback, 0 changes will be made
-  ** to the database file. So there is no need to zero the journal 
+  ** to the database file. So there is no need to zero the journal
   ** header. Since the pager is in exclusive mode, there is no need
   ** to drop any locks either.
   */
-  if( pPager->dbModified==0 && pPager->exclusiveMode 
+  if( pPager->dbModified==0 && pPager->exclusiveMode
    && pPager->journalMode==PAGER_JOURNALMODE_PERSIST
   ){
     assert( pPager->journalOff==JOURNAL_HDR_SZ(pPager) );
@@ -36961,7 +36961,7 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseTwo(Pager *pPager){
 **
 ** This function performs two tasks:
 **
-**   1) It rolls back the journal file, restoring all database file and 
+**   1) It rolls back the journal file, restoring all database file and
 **      in-memory cache pages to the state they were in when the transaction
 **      was opened, and
 **   2) It finalizes the journal file, so that it is not used for hot
@@ -36973,24 +36973,24 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseTwo(Pager *pPager){
 **   then only (2) is performed. In this case there is no journal file
 **   to roll back.
 **
-** * If in an error state other than SQLITE_FULL, then task (1) is 
+** * If in an error state other than SQLITE_FULL, then task (1) is
 **   performed. If successful, task (2). Regardless of the outcome
 **   of either, the error state error code is returned to the caller
 **   (i.e. either SQLITE_IOERR or SQLITE_CORRUPT).
 **
 ** * If the pager is in PAGER_RESERVED state, then attempt (1). Whether
 **   or not (1) is succussful, also attempt (2). If successful, return
-**   SQLITE_OK. Otherwise, enter the error state and return the first 
-**   error code encountered. 
+**   SQLITE_OK. Otherwise, enter the error state and return the first
+**   error code encountered.
 **
-**   In this case there is no chance that the database was written to. 
-**   So is safe to finalize the journal file even if the playback 
+**   In this case there is no chance that the database was written to.
+**   So is safe to finalize the journal file even if the playback
 **   (operation 1) failed. However the pager must enter the error state
 **   as the contents of the in-memory cache are now suspect.
 **
 ** * Finally, if in PAGER_EXCLUSIVE state, then attempt (1). Only
 **   attempt (2) if (1) is successful. Return SQLITE_OK if successful,
-**   otherwise enter the error state and return the error code from the 
+**   otherwise enter the error state and return the error code from the
 **   failing operation.
 **
 **   In this case the database file may have been written to. So if the
@@ -37026,7 +37026,7 @@ SQLITE_PRIVATE int sqlite3PagerRollback(Pager *pPager){
     }
 
     /* If an error occurs during a ROLLBACK, we can no longer trust the pager
-    ** cache. So call pager_error() on the way out to make any error 
+    ** cache. So call pager_error() on the way out to make any error
     ** persistent.
     */
     rc = pager_error(pPager, rc);
@@ -37090,7 +37090,7 @@ SQLITE_PRIVATE int sqlite3PagerIsMemdb(Pager *pPager){
 ** to make up the difference. If the number of savepoints is already
 ** equal to nSavepoint, then this function is a no-op.
 **
-** If a memory allocation fails, SQLITE_NOMEM is returned. If an error 
+** If a memory allocation fails, SQLITE_NOMEM is returned. If an error
 ** occurs while opening the sub-journal file, then an IO error code is
 ** returned. Otherwise, SQLITE_OK.
 */
@@ -37102,13 +37102,13 @@ SQLITE_PRIVATE int sqlite3PagerOpenSavepoint(Pager *pPager, int nSavepoint){
     int ii;                                 /* Iterator variable */
     PagerSavepoint *aNew;                   /* New Pager.aSavepoint array */
 
-    /* Either there is no active journal or the sub-journal is open or 
+    /* Either there is no active journal or the sub-journal is open or
     ** the journal is always stored in memory */
     assert( pPager->nSavepoint==0 || isOpen(pPager->sjfd) ||
             pPager->journalMode==PAGER_JOURNALMODE_MEMORY );
 
     /* Grow the Pager.aSavepoint array using realloc(). Return SQLITE_NOMEM
-    ** if the allocation fails. Otherwise, zero the new portion in case a 
+    ** if the allocation fails. Otherwise, zero the new portion in case a
     ** malloc failure occurs while populating it in the for(...) loop below.
     */
     aNew = (PagerSavepoint *)sqlite3Realloc(
@@ -37147,7 +37147,7 @@ SQLITE_PRIVATE int sqlite3PagerOpenSavepoint(Pager *pPager, int nSavepoint){
 
 /*
 ** This function is called to rollback or release (commit) a savepoint.
-** The savepoint to release or rollback need not be the most recently 
+** The savepoint to release or rollback need not be the most recently
 ** created savepoint.
 **
 ** Parameter op is always either SAVEPOINT_ROLLBACK or SAVEPOINT_RELEASE.
@@ -37155,26 +37155,26 @@ SQLITE_PRIVATE int sqlite3PagerOpenSavepoint(Pager *pPager, int nSavepoint){
 ** index iSavepoint. If it is SAVEPOINT_ROLLBACK, then rollback all changes
 ** that have occurred since the specified savepoint was created.
 **
-** The savepoint to rollback or release is identified by parameter 
+** The savepoint to rollback or release is identified by parameter
 ** iSavepoint. A value of 0 means to operate on the outermost savepoint
 ** (the first created). A value of (Pager.nSavepoint-1) means operate
 ** on the most recently created savepoint. If iSavepoint is greater than
 ** (Pager.nSavepoint-1), then this function is a no-op.
 **
 ** If a negative value is passed to this function, then the current
-** transaction is rolled back. This is different to calling 
+** transaction is rolled back. This is different to calling
 ** sqlite3PagerRollback() because this function does not terminate
-** the transaction or unlock the database, it just restores the 
-** contents of the database to its original state. 
+** the transaction or unlock the database, it just restores the
+** contents of the database to its original state.
 **
-** In any case, all savepoints with an index greater than iSavepoint 
+** In any case, all savepoints with an index greater than iSavepoint
 ** are destroyed. If this is a release operation (op==SAVEPOINT_RELEASE),
 ** then savepoint iSavepoint is also destroyed.
 **
 ** This function may return SQLITE_NOMEM if a memory allocation fails,
-** or an IO error code if an IO error occurs while rolling back a 
+** or an IO error code if an IO error occurs while rolling back a
 ** savepoint. If no errors occur, SQLITE_OK is returned.
-*/ 
+*/
 SQLITE_PRIVATE int sqlite3PagerSavepoint(Pager *pPager, int op, int iSavepoint){
   int rc = SQLITE_OK;
 
@@ -37186,7 +37186,7 @@ SQLITE_PRIVATE int sqlite3PagerSavepoint(Pager *pPager, int op, int iSavepoint){
     int nNew;          /* Number of remaining savepoints after this op. */
 
     /* Figure out how many savepoints will still be active after this
-    ** operation. Store this value in nNew. Then free resources associated 
+    ** operation. Store this value in nNew. Then free resources associated
     ** with any savepoints that are destroyed by this operation.
     */
     nNew = iSavepoint + (( op==SAVEPOINT_RELEASE ) ? 0 : 1);
@@ -37195,7 +37195,7 @@ SQLITE_PRIVATE int sqlite3PagerSavepoint(Pager *pPager, int op, int iSavepoint){
     }
     pPager->nSavepoint = nNew;
 
-    /* If this is a release of the outermost savepoint, truncate 
+    /* If this is a release of the outermost savepoint, truncate
     ** the sub-journal to zero bytes in size. */
     if( op==SAVEPOINT_RELEASE ){
       if( nNew==0 && isOpen(pPager->sjfd) ){
@@ -37217,7 +37217,7 @@ SQLITE_PRIVATE int sqlite3PagerSavepoint(Pager *pPager, int op, int iSavepoint){
       rc = pagerPlaybackSavepoint(pPager, pSavepoint);
       assert(rc!=SQLITE_DONE);
     }
-  
+
   }
   return rc;
 }
@@ -37302,8 +37302,8 @@ static void *sqlite3PagerGetCodec(Pager *pPager){
 ** transaction is active).
 **
 ** If the fourth argument, isCommit, is non-zero, then this page is being
-** moved as part of a database reorganization just before the transaction 
-** is being committed. In this case, it is guaranteed that the database page 
+** moved as part of a database reorganization just before the transaction
+** is being committed. In this case, it is guaranteed that the database page
 ** pPg refers to will not be written to again within this transaction.
 **
 ** This function may return SQLITE_NOMEM or an IO error code if an error
@@ -37326,7 +37326,7 @@ SQLITE_PRIVATE int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, i
   }
 
   /* If the page being moved is dirty and has not been saved by the latest
-  ** savepoint, then save the current contents of the page into the 
+  ** savepoint, then save the current contents of the page into the
   ** sub-journal now. This is required to handle the following scenario:
   **
   **   BEGIN;
@@ -37350,7 +37350,7 @@ SQLITE_PRIVATE int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, i
     return rc;
   }
 
-  PAGERTRACE(("MOVE %d page %d (needSync=%d) moves to %d\n", 
+  PAGERTRACE(("MOVE %d page %d (needSync=%d) moves to %d\n",
       PAGERID(pPager), pPg->pgno, (pPg->flags&PGHDR_NEED_SYNC)?1:0, pgno));
   IOTRACE(("MOVE %p %d %d\n", pPager, pPg->pgno, pgno))
 
@@ -37358,7 +37358,7 @@ SQLITE_PRIVATE int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, i
   ** be written to, store pPg->pgno in local variable needSyncPgno.
   **
   ** If the isCommit flag is set, there is no need to remember that
-  ** the journal needs to be sync()ed before database page pPg->pgno 
+  ** the journal needs to be sync()ed before database page pPg->pgno
   ** can be written to. The caller has already promised not to write to it.
   */
   if( (pPg->flags&PGHDR_NEED_SYNC) && !isCommit ){
@@ -37369,8 +37369,8 @@ SQLITE_PRIVATE int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, i
   }
 
   /* If the cache contains a page with page-number pgno, remove it
-  ** from its hash chain. Also, if the PgHdr.needSync was set for 
-  ** page pgno before the 'move' operation, it needs to be retained 
+  ** from its hash chain. Also, if the PgHdr.needSync was set for
+  ** page pgno before the 'move' operation, it needs to be retained
   ** for the page moved there.
   */
   pPg->flags &= ~PGHDR_NEED_SYNC;
@@ -37394,11 +37394,11 @@ SQLITE_PRIVATE int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, i
   pPager->dbModified = 1;
 
   if( needSyncPgno ){
-    /* If needSyncPgno is non-zero, then the journal file needs to be 
+    /* If needSyncPgno is non-zero, then the journal file needs to be
     ** sync()ed before any data is written to database file page needSyncPgno.
-    ** Currently, no such page exists in the page-cache and the 
+    ** Currently, no such page exists in the page-cache and the
     ** "is journaled" bitvec flag has been set. This needs to be remedied by
-    ** loading the page into the pager-cache and setting the PgHdr.needSync 
+    ** loading the page into the pager-cache and setting the PgHdr.needSync
     ** flag.
     **
     ** If the attempt to load the page into the page-cache fails, (due
@@ -37451,7 +37451,7 @@ SQLITE_PRIVATE void *sqlite3PagerGetData(DbPage *pPg){
 }
 
 /*
-** Return a pointer to the Pager.nExtra bytes of "extra" space 
+** Return a pointer to the Pager.nExtra bytes of "extra" space
 ** allocated along with the specified page.
 */
 SQLITE_PRIVATE void *sqlite3PagerGetExtra(DbPage *pPg){
@@ -37460,7 +37460,7 @@ SQLITE_PRIVATE void *sqlite3PagerGetExtra(DbPage *pPg){
 
 /*
 ** Get/set the locking-mode for this pager. Parameter eMode must be one
-** of PAGER_LOCKINGMODE_QUERY, PAGER_LOCKINGMODE_NORMAL or 
+** of PAGER_LOCKINGMODE_QUERY, PAGER_LOCKINGMODE_NORMAL or
 ** PAGER_LOCKINGMODE_EXCLUSIVE. If the parameter is not _QUERY, then
 ** the locking-mode is set to the value specified.
 **
@@ -37506,11 +37506,11 @@ SQLITE_PRIVATE int sqlite3PagerJournalMode(Pager *pPager, int eMode){
             || eMode==PAGER_JOURNALMODE_DELETE
             || eMode==PAGER_JOURNALMODE_TRUNCATE
             || eMode==PAGER_JOURNALMODE_PERSIST
-            || eMode==PAGER_JOURNALMODE_OFF 
+            || eMode==PAGER_JOURNALMODE_OFF
             || eMode==PAGER_JOURNALMODE_MEMORY );
   assert( PAGER_JOURNALMODE_QUERY<0 );
   if( eMode>=0
-   && (!MEMDB || eMode==PAGER_JOURNALMODE_MEMORY 
+   && (!MEMDB || eMode==PAGER_JOURNALMODE_MEMORY
               || eMode==PAGER_JOURNALMODE_OFF)
    && !pPager->dbModified
    && (!isOpen(pPager->jfd) || 0==pPager->journalOff)
@@ -37600,16 +37600,16 @@ SQLITE_PRIVATE sqlite3_backup **sqlite3PagerBackupPtr(Pager *pPager){
 ** on Ptr(N) and its subpages have values greater than Key(N-1).  And
 ** so forth.
 **
-** Finding a particular key requires reading O(log(M)) pages from the 
+** Finding a particular key requires reading O(log(M)) pages from the
 ** disk where M is the number of entries in the tree.
 **
-** In this implementation, a single file can hold one or more separate 
+** In this implementation, a single file can hold one or more separate
 ** BTrees.  Each BTree is identified by the index of its root page.  The
 ** key and data for any entry are combined to form the "payload".  A
 ** fixed amount of payload can be carried directly on the database
 ** page.  If the payload is larger than the preset amount then surplus
 ** bytes are stored on overflow pages.  The payload for an entry
-** and the preceding pointer are combined to form a "Cell".  Each 
+** and the preceding pointer are combined to form a "Cell".  Each
 ** page has a small header which contains the Ptr(N) pointer and other
 ** information such as the size of key and data.
 **
@@ -37627,7 +37627,7 @@ SQLITE_PRIVATE sqlite3_backup **sqlite3PagerBackupPtr(Pager *pPager){
 **
 **   OFFSET   SIZE    DESCRIPTION
 **      0      16     Header string: "SQLite format 3\000"
-**     16       2     Page size in bytes.  
+**     16       2     Page size in bytes.
 **     18       1     File format write version
 **     19       1     File format read version
 **     20       1     Bytes of unused space at the end of each page
@@ -37738,7 +37738,7 @@ SQLITE_PRIVATE sqlite3_backup **sqlite3PagerBackupPtr(Pager *pPager){
 ** contiguous or in order, but cell pointers are contiguous and in order.
 **
 ** Cell content makes use of variable length integers.  A variable
-** length integer is 1 to 9 bytes where the lower 7 bits of each 
+** length integer is 1 to 9 bytes where the lower 7 bits of each
 ** byte are used.  The integer consists of all bytes that have bit 8 set and
 ** the first byte with bit 8 clear.  The most significant byte of the integer
 ** appears first.  A variable-length integer may not be more than 9 bytes long.
@@ -37809,7 +37809,7 @@ typedef struct BtLock BtLock;
 ** -DSQLITE_FILE_HEADER="..." on the compiler command-line.  The
 ** header must be exactly 16 bytes including the zero-terminator so
 ** the string itself should be 15 characters long.  If you change
-** the header, then your custom library will not be able to read 
+** the header, then your custom library will not be able to read
 ** databases generated by the standard tools and the standard tools
 ** will not be able to read databases created by your custom library.
 */
@@ -37872,7 +37872,7 @@ struct MemPage {
 
 /*
 ** A linked list of the following structures is stored at BtShared.pLock.
-** Locks are added (or upgraded from READ_LOCK to WRITE_LOCK) when a cursor 
+** Locks are added (or upgraded from READ_LOCK to WRITE_LOCK) when a cursor
 ** is opened on the table with root page BtShared.iTable. Locks are removed
 ** from this list when a transaction is committed or rolled back, or when
 ** a btree handle is closed.
@@ -37896,7 +37896,7 @@ struct BtLock {
 ** see the internals of this structure and only deals with pointers to
 ** this structure.
 **
-** For some database files, the same underlying database cache might be 
+** For some database files, the same underlying database cache might be
 ** shared between multiple connections.  In that case, each connection
 ** has it own instance of this object.  But each instance of this object
 ** points to the same BtShared object.  The database cache and the
@@ -37904,7 +37904,7 @@ struct BtLock {
 ** the BtShared object.
 **
 ** All fields in this structure are accessed under sqlite3.mutex.
-** The pBt pointer itself may not be changed while there exists cursors 
+** The pBt pointer itself may not be changed while there exists cursors
 ** in the referenced BtShared that point back to this Btree since those
 ** cursors have to do go through this Btree to find their BtShared and
 ** they often do so without holding sqlite3.mutex.
@@ -37937,7 +37937,7 @@ struct Btree {
 
 /*
 ** An instance of this object represents a single database file.
-** 
+**
 ** A single database file can be in use as the same time by two
 ** or more database connections.  When two or more connections are
 ** sharing the same database file, each connection has it own
@@ -38045,7 +38045,7 @@ struct CellInfo {
 ** particular database connection identified BtCursor.pBtree.db.
 **
 ** Fields in this structure are accessed under the BtShared.mutex
-** found at self->pBt->mutex. 
+** found at self->pBt->mutex.
 */
 struct BtCursor {
   Btree *pBtree;            /* The Btree to which this cursor belongs */
@@ -38078,14 +38078,14 @@ struct BtCursor {
 **   Cursor points to a valid entry. getPayload() etc. may be called.
 **
 ** CURSOR_INVALID:
-**   Cursor does not point to a valid entry. This can happen (for example) 
+**   Cursor does not point to a valid entry. This can happen (for example)
 **   because the table is empty or because BtreeCursorFirst() has not been
 **   called.
 **
 ** CURSOR_REQUIRESEEK:
-**   The table that this cursor was opened on still exists, but has been 
+**   The table that this cursor was opened on still exists, but has been
 **   modified since the cursor was last used. The cursor position is saved
-**   in variables BtCursor.pKey and BtCursor.nKey. When a cursor is in 
+**   in variables BtCursor.pKey and BtCursor.nKey. When a cursor is in
 **   this state, restoreCursorPosition() can be called to attempt to
 **   seek the cursor to the saved position.
 **
@@ -38101,13 +38101,13 @@ struct BtCursor {
 #define CURSOR_REQUIRESEEK       2
 #define CURSOR_FAULT             3
 
-/* 
+/*
 ** The database page the PENDING_BYTE occupies. This page is never used.
 */
 # define PENDING_BYTE_PAGE(pBt) PAGER_MJ_PGNO(pBt)
 
 /*
-** These macros define the location of the pointer-map entry for a 
+** These macros define the location of the pointer-map entry for a
 ** database page. The first argument to each is the number of usable
 ** bytes on each page of the database (often 1024). The second is the
 ** page number to look up in the pointer map.
@@ -38142,10 +38142,10 @@ struct BtCursor {
 ** PTRMAP_ROOTPAGE: The database page is a root-page. The page-number is not
 **                  used in this case.
 **
-** PTRMAP_FREEPAGE: The database page is an unused (free) page. The page-number 
+** PTRMAP_FREEPAGE: The database page is an unused (free) page. The page-number
 **                  is not used in this case.
 **
-** PTRMAP_OVERFLOW1: The database page is the first page in a list of 
+** PTRMAP_OVERFLOW1: The database page is the first page in a list of
 **                   overflow pages. The page number identifies the page that
 **                   contains the cell with a pointer to this overflow page.
 **
@@ -38167,13 +38167,13 @@ struct BtCursor {
 */
 #define btreeIntegrity(p) \
   assert( p->pBt->inTransaction!=TRANS_NONE || p->pBt->nTransaction==0 ); \
-  assert( p->pBt->inTransaction>=p->inTrans ); 
+  assert( p->pBt->inTransaction>=p->inTrans );
 
 
 /*
 ** The ISAUTOVACUUM macro is used within balance_nonroot() to determine
 ** if the database supports auto-vacuum or not. Because it is used
-** within an expression that is an argument to another macro 
+** within an expression that is an argument to another macro
 ** (sqliteMallocRaw), it is not possible to use conditional compilation.
 ** So, this macro is defined instead.
 */
@@ -38446,7 +38446,7 @@ SQLITE_PRIVATE int sqlite3BtreeHoldsAllMutexes(sqlite3 *db){
 #endif /* NDEBUG */
 
 /*
-** Add a new Btree pointer to a BtreeMutexArray. 
+** Add a new Btree pointer to a BtreeMutexArray.
 ** if the pointer can possibly be shared with
 ** another database connection.
 **
@@ -38592,7 +38592,7 @@ int sqlite3BtreeTrace=1;  /* True to enable tracing */
 /*
 ** A list of BtShared objects that are eligible for participation
 ** in shared cache.  This variable has file scope during normal builds,
-** but the test harness needs to access it so we make it global for 
+** but the test harness needs to access it so we make it global for
 ** test builds.
 **
 ** Access to this variable is protected by SQLITE_MUTEX_STATIC_MASTER.
@@ -38627,7 +38627,7 @@ SQLITE_API int sqlite3_enable_shared_cache(int enable){
   ** manipulate entries in the BtShared.pLock linked list used to store
   ** shared-cache table level locks. If the library is compiled with the
   ** shared-cache feature disabled, then there is only ever one user
-  ** of each BtShared structure and so this locking is not necessary. 
+  ** of each BtShared structure and so this locking is not necessary.
   ** So define the lock related functions as no-ops.
   */
   #define querySharedCacheTableLock(a,b,c) SQLITE_OK
@@ -38644,15 +38644,15 @@ SQLITE_API int sqlite3_enable_shared_cache(int enable){
 /*
 **** This function is only used as part of an assert() statement. ***
 **
-** Check to see if pBtree holds the required locks to read or write to the 
+** Check to see if pBtree holds the required locks to read or write to the
 ** table with root page iRoot.   Return 1 if it does and 0 if not.
 **
-** For example, when writing to a table with root-page iRoot via 
+** For example, when writing to a table with root-page iRoot via
 ** Btree connection pBtree:
 **
 **    assert( hasSharedCacheTableLock(pBtree, iRoot, 0, WRITE_LOCK) );
 **
-** When writing to an index that resides in a sharable database, the 
+** When writing to an index that resides in a sharable database, the
 ** caller should have first obtained a lock specifying the root page of
 ** the corresponding table. This makes things a bit more complicated,
 ** as this module treats each table as a separate structure. To determine
@@ -38674,7 +38674,7 @@ static int hasSharedCacheTableLock(
   BtLock *pLock;
 
   /* If this database is not shareable, or if the client is reading
-  ** and has the read-uncommitted flag set, then no lock is required. 
+  ** and has the read-uncommitted flag set, then no lock is required.
   ** Return true immediately.
   */
   if( (pBtree->sharable==0)
@@ -38708,13 +38708,13 @@ static int hasSharedCacheTableLock(
     iTab = iRoot;
   }
 
-  /* Search for the required lock. Either a write-lock on root-page iTab, a 
+  /* Search for the required lock. Either a write-lock on root-page iTab, a
   ** write-lock on the schema table, or (if the client is reading) a
   ** read-lock on iTab will suffice. Return 1 if any of these are found.  */
   for(pLock=pBtree->pBt->pLock; pLock; pLock=pLock->pNext){
-    if( pLock->pBtree==pBtree 
+    if( pLock->pBtree==pBtree
      && (pLock->iTable==iTab || (pLock->eLock==WRITE_LOCK && pLock->iTable==1))
-     && pLock->eLock>=eLockType 
+     && pLock->eLock>=eLockType
     ){
       return 1;
     }
@@ -38747,7 +38747,7 @@ static int hasSharedCacheTableLock(
 static int hasReadConflicts(Btree *pBtree, Pgno iRoot){
   BtCursor *p;
   for(p=pBtree->pBt->pCursor; p; p=p->pNext){
-    if( p->pgnoRoot==iRoot 
+    if( p->pgnoRoot==iRoot
      && p->pBtree!=pBtree
      && 0==(p->pBtree->db->flags & SQLITE_ReadUncommitted)
     ){
@@ -38759,7 +38759,7 @@ static int hasReadConflicts(Btree *pBtree, Pgno iRoot){
 #endif    /* #ifdef SQLITE_DEBUG */
 
 /*
-** Query to see if Btree handle p may obtain a lock of type eLock 
+** Query to see if Btree handle p may obtain a lock of type eLock
 ** (READ_LOCK or WRITE_LOCK) on the table with root-page iTab. Return
 ** SQLITE_OK if the lock may be obtained (by calling
 ** setSharedCacheTableLock()), or SQLITE_LOCKED if not.
@@ -38772,14 +38772,14 @@ static int querySharedCacheTableLock(Btree *p, Pgno iTab, u8 eLock){
   assert( eLock==READ_LOCK || eLock==WRITE_LOCK );
   assert( p->db!=0 );
   assert( !(p->db->flags&SQLITE_ReadUncommitted)||eLock==WRITE_LOCK||iTab==1 );
-  
+
   /* If requesting a write-lock, then the Btree must have an open write
-  ** transaction on this file. And, obviously, for this to be so there 
+  ** transaction on this file. And, obviously, for this to be so there
   ** must be an open write transaction on the file itself.
   */
   assert( eLock==READ_LOCK || (p==pBt->pWriter && p->inTrans==TRANS_WRITE) );
   assert( eLock==READ_LOCK || pBt->inTransaction==TRANS_WRITE );
-  
+
   /* This routine is a no-op if the shared-cache is not enabled */
   if( !p->sharable ){
     return SQLITE_OK;
@@ -38794,7 +38794,7 @@ static int querySharedCacheTableLock(Btree *p, Pgno iTab, u8 eLock){
   }
 
   for(pIter=pBt->pLock; pIter; pIter=pIter->pNext){
-    /* The condition (pIter->eLock!=eLock) in the following if(...) 
+    /* The condition (pIter->eLock!=eLock) in the following if(...)
     ** statement is a simplification of:
     **
     **   (eLock==WRITE_LOCK || pIter->eLock==WRITE_LOCK)
@@ -38821,7 +38821,7 @@ static int querySharedCacheTableLock(Btree *p, Pgno iTab, u8 eLock){
 #ifndef SQLITE_OMIT_SHARED_CACHE
 /*
 ** Add a lock on the table with root-page iTable to the shared-btree used
-** by Btree handle p. Parameter eLock must be either READ_LOCK or 
+** by Btree handle p. Parameter eLock must be either READ_LOCK or
 ** WRITE_LOCK.
 **
 ** This function assumes the following:
@@ -38833,7 +38833,7 @@ static int querySharedCacheTableLock(Btree *p, Pgno iTab, u8 eLock){
 **       with the requested lock (i.e. querySharedCacheTableLock() has
 **       already been called and returned SQLITE_OK).
 **
-** SQLITE_OK is returned if the lock is added successfully. SQLITE_NOMEM 
+** SQLITE_OK is returned if the lock is added successfully. SQLITE_NOMEM
 ** is returned if a malloc attempt fails.
 */
 static int setSharedCacheTableLock(Btree *p, Pgno iTable, u8 eLock){
@@ -38847,11 +38847,11 @@ static int setSharedCacheTableLock(Btree *p, Pgno iTable, u8 eLock){
 
   /* A connection with the read-uncommitted flag set will never try to
   ** obtain a read-lock using this function. The only read-lock obtained
-  ** by a connection in read-uncommitted mode is on the sqlite_master 
+  ** by a connection in read-uncommitted mode is on the sqlite_master
   ** table, and that lock is obtained in BtreeBeginTrans().  */
   assert( 0==(p->db->flags&SQLITE_ReadUncommitted) || eLock==WRITE_LOCK );
 
-  /* This function should only be called on a sharable b-tree after it 
+  /* This function should only be called on a sharable b-tree after it
   ** has been determined that no other b-tree holds a conflicting lock.  */
   assert( p->sharable );
   assert( SQLITE_OK==querySharedCacheTableLock(p, iTable, eLock) );
@@ -38896,7 +38896,7 @@ static int setSharedCacheTableLock(Btree *p, Pgno iTable, u8 eLock){
 ** Release all the table locks (locks obtained via calls to
 ** the setSharedCacheTableLock() procedure) held by Btree object p.
 **
-** This function assumes that Btree p has an open read or write 
+** This function assumes that Btree p has an open read or write
 ** transaction. If it does not, then the BtShared.isPending variable
 ** may be incorrectly cleared.
 */
@@ -38929,7 +38929,7 @@ static void clearAllSharedCacheTableLocks(Btree *p){
     pBt->isExclusive = 0;
     pBt->isPending = 0;
   }else if( pBt->nTransaction==2 ){
-    /* This function is called when Btree p is concluding its 
+    /* This function is called when Btree p is concluding its
     ** transaction. If there currently exists a writer, and p is not
     ** that writer, then the number of locks held by connections other
     ** than the writer must be about to drop to zero. In this case
@@ -39033,8 +39033,8 @@ static void invalidateIncrblobCursors(
 #endif /* SQLITE_OMIT_INCRBLOB */
 
 /*
-** Set bit pgno of the BtShared.pHasContent bitvec. This is called 
-** when a page that previously contained data becomes a free-list leaf 
+** Set bit pgno of the BtShared.pHasContent bitvec. This is called
+** when a page that previously contained data becomes a free-list leaf
 ** page.
 **
 ** The BtShared.pHasContent bitvec exists to work around an obscure
@@ -39060,7 +39060,7 @@ static void invalidateIncrblobCursors(
 ** may be lost. In the event of a rollback, it may not be possible
 ** to restore the database to its original configuration.
 **
-** The solution is the BtShared.pHasContent bitvec. Whenever a page is 
+** The solution is the BtShared.pHasContent bitvec. Whenever a page is
 ** moved to become a free-list leaf page, the corresponding bit is
 ** set in the bitvec. Whenever a leaf page is extracted from the free-list,
 ** optimization 2 above is omitted if the corresponding bit is already
@@ -39107,11 +39107,11 @@ static void btreeClearHasContent(BtShared *pBt){
 }
 
 /*
-** Save the current cursor position in the variables BtCursor.nKey 
+** Save the current cursor position in the variables BtCursor.nKey
 ** and BtCursor.pKey. The cursor's state is set to CURSOR_REQUIRESEEK.
 **
 ** The caller must ensure that the cursor is valid (has eState==CURSOR_VALID)
-** prior to calling this routine.  
+** prior to calling this routine.
 */
 static int saveCursorPosition(BtCursor *pCur){
   int rc;
@@ -39126,7 +39126,7 @@ static int saveCursorPosition(BtCursor *pCur){
   /* If this is an intKey table, then the above call to BtreeKeySize()
   ** stores the integer key in pCur->nKey. In this case this value is
   ** all that is required. Otherwise, if pCur is not open on an intKey
-  ** table, then malloc space for and store the pCur->nKey bytes of key 
+  ** table, then malloc space for and store the pCur->nKey bytes of key
   ** data.
   */
   if( 0==pCur->apPage[0]->intKey ){
@@ -39168,7 +39168,7 @@ static int saveAllCursors(BtShared *pBt, Pgno iRoot, BtCursor *pExcept){
   assert( sqlite3_mutex_held(pBt->mutex) );
   assert( pExcept==0 || pExcept->pBt==pBt );
   for(p=pBt->pCursor; p; p=p->pNext){
-    if( p!=pExcept && (0==iRoot || p->pgnoRoot==iRoot) && 
+    if( p!=pExcept && (0==iRoot || p->pgnoRoot==iRoot) &&
         p->eState==CURSOR_VALID ){
       int rc = saveCursorPosition(p);
       if( SQLITE_OK!=rc ){
@@ -39222,9 +39222,9 @@ static int btreeMoveto(
 
 /*
 ** Restore the cursor to the position it was in (or as close to as possible)
-** when saveCursorPosition() was called. Note that this call deletes the 
+** when saveCursorPosition() was called. Note that this call deletes the
 ** saved position info stored by saveCursorPosition(), so there can be
-** at most one effective restoreCursorPosition() call after each 
+** at most one effective restoreCursorPosition() call after each
 ** saveCursorPosition().
 */
 static int btreeRestoreCursorPosition(BtCursor *pCur){
@@ -39285,7 +39285,7 @@ static Pgno ptrmapPageno(BtShared *pBt, Pgno pgno){
   assert( sqlite3_mutex_held(pBt->mutex) );
   nPagesPerMapPage = (pBt->usableSize/5)+1;
   iPtrMap = (pgno-2)/nPagesPerMapPage;
-  ret = (iPtrMap*nPagesPerMapPage) + 2; 
+  ret = (iPtrMap*nPagesPerMapPage) + 2;
   if( ret==PENDING_BYTE_PAGE(pBt) ){
     ret++;
   }
@@ -39419,8 +39419,8 @@ static u8 *findOverflowCell(MemPage *pPage, int iCell){
 
 /*
 ** Parse a cell content block and fill in the CellInfo structure.  There
-** are two versions of this function.  btreeParseCell() takes a 
-** cell index as the second argument and btreeParseCellPtr() 
+** are two versions of this function.  btreeParseCell() takes a
+** cell index as the second argument and btreeParseCellPtr()
 ** takes a pointer to the body of the cell as its second argument.
 **
 ** Within this file, the parseCell() macro can be called instead of
@@ -39534,7 +39534,7 @@ static u16 cellSizePtr(MemPage *pPage, u8 *pCell){
       nSize = 0;
     }
 
-    /* pIter now points at the 64-bit integer key value, a variable length 
+    /* pIter now points at the 64-bit integer key value, a variable length
     ** integer. The following block moves pIter to point at the first byte
     ** past the end of the key value. */
     pEnd = &pIter[9];
@@ -39640,7 +39640,7 @@ static int defragmentPage(MemPage *pPage){
     testcase( pc==iCellLast );
 #if !defined(SQLITE_ENABLE_OVERSIZE_CELL_CHECK)
     /* These conditions have already been verified in btreeInitPage()
-    ** if SQLITE_ENABLE_OVERSIZE_CELL_CHECK is defined 
+    ** if SQLITE_ENABLE_OVERSIZE_CELL_CHECK is defined
     */
     if( pc<iCellFirst || pc>iCellLast ){
       return SQLITE_CORRUPT_BKPT;
@@ -39698,7 +39698,7 @@ static int allocateSpace(MemPage *pPage, int nByte, int *pIdx){
   int gap;        /* First byte of gap between cell pointers and cell content */
   int rc;         /* Integer return code */
   int usableSize; /* Usable size of the page */
-  
+
   assert( sqlite3PagerIswriteable(pPage->pDbPage) );
   assert( pPage->pBt );
   assert( sqlite3_mutex_held(pPage->pBt->mutex) );
@@ -39723,8 +39723,8 @@ static int allocateSpace(MemPage *pPage, int nByte, int *pIdx){
     if( rc ) return rc;
     top = get2byte(&data[hdr+5]);
   }else if( gap+2<=top ){
-    /* Search the freelist looking for a free slot big enough to satisfy 
-    ** the request. The allocation is made from the first free slot in 
+    /* Search the freelist looking for a free slot big enough to satisfy
+    ** the request. The allocation is made from the first free slot in
     ** the list that is large enough to accomadate it.
     */
     int pc, addr;
@@ -39911,7 +39911,7 @@ static int decodeFlags(MemPage *pPage, int flagByte){
 ** Initialize the auxiliary information for a disk block.
 **
 ** Return SQLITE_OK on success.  If we see that the page does
-** not contain a well-formed database page, then return 
+** not contain a well-formed database page, then return
 ** SQLITE_CORRUPT.  Note that a return of SQLITE_OK does not
 ** guarantee that the page is well-formed.  It only shows that
 ** we failed to detect any corruption.
@@ -39955,10 +39955,10 @@ static int btreeInitPage(MemPage *pPage){
     testcase( pPage->nCell==MX_CELL(pBt) );
 
     /* A malformed database page might cause us to read past the end
-    ** of page when parsing a cell.  
+    ** of page when parsing a cell.
     **
     ** The following block of code checks early to see if a cell extends
-    ** past the end of a page boundary and causes SQLITE_CORRUPT to be 
+    ** past the end of a page boundary and causes SQLITE_CORRUPT to be
     ** returned if it does.
     */
     iCellFirst = cellOffset + 2*pPage->nCell;
@@ -39983,7 +39983,7 @@ static int btreeInitPage(MemPage *pPage){
         }
       }
       if( !pPage->leaf ) iCellLast++;
-    }  
+    }
 #endif
 
     /* Compute the total free space on the page */
@@ -39993,14 +39993,14 @@ static int btreeInitPage(MemPage *pPage){
       u16 next, size;
       if( pc<iCellFirst || pc>iCellLast ){
         /* Start of free block is off the page */
-        return SQLITE_CORRUPT_BKPT; 
+        return SQLITE_CORRUPT_BKPT;
       }
       next = get2byte(&data[pc]);
       size = get2byte(&data[pc+2]);
       if( (next>0 && next<=pc+size+3) || pc+size>usableSize ){
         /* Free blocks must be in ascending order. And the last byte of
        ** the free-block must lie on the database page.  */
-        return SQLITE_CORRUPT_BKPT; 
+        return SQLITE_CORRUPT_BKPT;
       }
       nFree = nFree + size;
       pc = next;
@@ -40014,7 +40014,7 @@ static int btreeInitPage(MemPage *pPage){
     ** area, according to the page header, lies within the page.
     */
     if( nFree>usableSize ){
-      return SQLITE_CORRUPT_BKPT; 
+      return SQLITE_CORRUPT_BKPT;
     }
     pPage->nFree = (u16)(nFree - iCellFirst);
     pPage->isInit = 1;
@@ -40068,7 +40068,7 @@ static MemPage *btreePageFromDbPage(DbPage *pDbPage, Pgno pgno, BtShared *pBt){
   pPage->pBt = pBt;
   pPage->pgno = pgno;
   pPage->hdrOffset = pPage->pgno==1 ? 100 : 0;
-  return pPage; 
+  return pPage;
 }
 
 /*
@@ -40128,7 +40128,7 @@ static Pgno pagerPagecount(BtShared *pBt){
 
 /*
 ** Get a page from the pager and initialize it.  This routine is just a
-** convenience wrapper around separate calls to btreeGetPage() and 
+** convenience wrapper around separate calls to btreeGetPage() and
 ** btreeInitPage().
 **
 ** If an error occurs, then the value *ppPage is set to is undefined. It
@@ -40216,7 +40216,7 @@ static int btreeInvokeBusyHandler(void *pArg){
 
 /*
 ** Open a database file.
-** 
+**
 ** zFilename is the name of the database file.  If zFilename is NULL
 ** a new database with a random name is created.  This randomly named
 ** database file will be deleted when sqlite3BtreeClose() is called.
@@ -40244,9 +40244,9 @@ SQLITE_PRIVATE int sqlite3BtreeOpen(
   u8 nReserve;                   /* Byte of unused space on each page */
   unsigned char zDbHeader[100];  /* Database header content */
 
-  /* Set the variable isMemdb to true for an in-memory database, or 
+  /* Set the variable isMemdb to true for an in-memory database, or
   ** false for a file-based database. This symbol is only required if
-  ** either of the shared-data or autovacuum features are compiled 
+  ** either of the shared-data or autovacuum features are compiled
   ** into the library.
   */
 #if !defined(SQLITE_OMIT_SHARED_CACHE) || !defined(SQLITE_OMIT_AUTOVACUUM)
@@ -40338,7 +40338,7 @@ SQLITE_PRIVATE int sqlite3BtreeOpen(
     assert( sizeof(u32)==4 );
     assert( sizeof(u16)==2 );
     assert( sizeof(Pgno)==4 );
-  
+
     pBt = sqlite3MallocZero( sizeof(*pBt) );
     if( pBt==0 ){
       rc = SQLITE_NOMEM;
@@ -40355,7 +40355,7 @@ SQLITE_PRIVATE int sqlite3BtreeOpen(
     pBt->db = db;
     sqlite3PagerSetBusyhandler(pBt->pPager, btreeInvokeBusyHandler, pBt);
     p->pBt = pBt;
-  
+
     pBt->pCursor = 0;
     pBt->pPage1 = 0;
     pBt->readOnly = sqlite3PagerIsreadonly(pBt->pPager);
@@ -40391,7 +40391,7 @@ SQLITE_PRIVATE int sqlite3BtreeOpen(
     if( rc ) goto btree_open_out;
     pBt->usableSize = pBt->pageSize - nReserve;
     assert( (pBt->pageSize & 7)==0 );  /* 8-byte alignment of pageSize */
-   
+
 #if !defined(SQLITE_OMIT_SHARED_CACHE) && !defined(SQLITE_OMIT_DISKIO)
     /* Add the new BtShared object to the linked list sharable BtShareds.
     */
@@ -40505,7 +40505,7 @@ static int removeFromSharingList(BtShared *pBt){
 }
 
 /*
-** Make sure pBt->pTmpSpace points to an allocation of 
+** Make sure pBt->pTmpSpace points to an allocation of
 ** MX_CELL_SIZE(pBt) bytes.
 */
 static void allocateTempSpace(BtShared *pBt){
@@ -40549,7 +40549,7 @@ SQLITE_PRIVATE int sqlite3BtreeClose(Btree *p){
   sqlite3BtreeLeave(p);
 
   /* If there are still other outstanding references to the shared-btree
-  ** structure, return now. The remainder of this procedure cleans 
+  ** structure, return now. The remainder of this procedure cleans
   ** up the shared-btree.
   */
   assert( p->wantToLock==0 && p->locked==0 );
@@ -40630,7 +40630,7 @@ SQLITE_PRIVATE int sqlite3BtreeSetSafetyLevel(Btree *p, int level, int fullSync)
 SQLITE_PRIVATE int sqlite3BtreeSyncDisabled(Btree *p){
   BtShared *pBt = p->pBt;
   int rc;
-  assert( sqlite3_mutex_held(p->db->mutex) );  
+  assert( sqlite3_mutex_held(p->db->mutex) );
   sqlite3BtreeEnter(p);
   assert( pBt && pBt->pPager );
   rc = sqlite3PagerNosync(pBt->pPager);
@@ -40641,7 +40641,7 @@ SQLITE_PRIVATE int sqlite3BtreeSyncDisabled(Btree *p){
 #if !defined(SQLITE_OMIT_PAGER_PRAGMAS) || !defined(SQLITE_OMIT_VACUUM)
 /*
 ** Change the default pages size and the number of reserved bytes per page.
-** Or, if the page size has already been fixed, return SQLITE_READONLY 
+** Or, if the page size has already been fixed, return SQLITE_READONLY
 ** without changing anything.
 **
 ** The page size must be a power of 2 between 512 and 65536.  If the page
@@ -40730,7 +40730,7 @@ SQLITE_PRIVATE int sqlite3BtreeSecureDelete(Btree *p, int newFlag){
   sqlite3BtreeEnter(p);
   if( newFlag>=0 ){
     p->pBt->secureDelete = (newFlag!=0) ? 1 : 0;
-  } 
+  }
   b = p->pBt->secureDelete;
   sqlite3BtreeLeave(p);
   return b;
@@ -40740,7 +40740,7 @@ SQLITE_PRIVATE int sqlite3BtreeSecureDelete(Btree *p, int newFlag){
 /*
 ** Change the 'auto-vacuum' property of the database. If the 'autoVacuum'
 ** parameter is non-zero, then auto-vacuum mode is enabled. If zero, it
-** is disabled. The default value for the auto-vacuum property is 
+** is disabled. The default value for the auto-vacuum property is
 ** determined by the SQLITE_DEFAULT_AUTOVACUUM macro.
 */
 SQLITE_PRIVATE int sqlite3BtreeSetAutoVacuum(Btree *p, int autoVacuum){
@@ -40764,7 +40764,7 @@ SQLITE_PRIVATE int sqlite3BtreeSetAutoVacuum(Btree *p, int autoVacuum){
 }
 
 /*
-** Return the value of the 'auto-vacuum' property. If auto-vacuum is 
+** Return the value of the 'auto-vacuum' property. If auto-vacuum is
 ** enabled 1 is returned. Otherwise 0.
 */
 SQLITE_PRIVATE int sqlite3BtreeGetAutoVacuum(Btree *p){
@@ -40791,7 +40791,7 @@ SQLITE_PRIVATE int sqlite3BtreeGetAutoVacuum(Btree *p){
 ** SQLITE_OK is returned on success.  If the file is not a
 ** well-formed database file, then SQLITE_CORRUPT is returned.
 ** SQLITE_BUSY is returned if the database is locked.  SQLITE_NOMEM
-** is returned if we run out of memory. 
+** is returned if we run out of memory.
 */
 static int lockBtree(BtShared *pBt){
   int rc;
@@ -40806,7 +40806,7 @@ static int lockBtree(BtShared *pBt){
   if( rc!=SQLITE_OK ) return rc;
 
   /* Do some checking to help insure the file we opened really is
-  ** a valid database file. 
+  ** a valid database file.
   */
   rc = sqlite3PagerPagecount(pBt->pPager, &nPage);
   if( rc!=SQLITE_OK ){
@@ -40898,7 +40898,7 @@ page1_init_failed:
 /*
 ** If there are no outstanding cursors and we are not in the middle
 ** of a transaction but there is a read lock on the database, then
-** this routine unrefs the first page of the database file which 
+** this routine unrefs the first page of the database file which
 ** has the effect of releasing the read lock.
 **
 ** If there is a transaction in progress, this routine is a no-op.
@@ -40967,8 +40967,8 @@ static int newDatabase(BtShared *pBt){
 ** upgraded to exclusive by calling this routine a second time - the
 ** exclusivity flag only works for a new transaction.
 **
-** A write-transaction must be started before attempting any 
-** changes to the database.  None of the following routines 
+** A write-transaction must be started before attempting any
+** changes to the database.  None of the following routines
 ** will work unless a transaction is started first:
 **
 **      sqlite3BtreeCreateTable()
@@ -40982,7 +40982,7 @@ static int newDatabase(BtShared *pBt){
 ** If an initial attempt to acquire the lock fails because of lock contention
 ** and the database was previously unlocked, then invoke the busy handler
 ** if there is one.  But if there was previously a read-lock, do not
-** invoke the busy handler - just return SQLITE_BUSY.  SQLITE_BUSY is 
+** invoke the busy handler - just return SQLITE_BUSY.  SQLITE_BUSY is
 ** returned when there is already a read-lock in order to avoid a deadlock.
 **
 ** Suppose there are two processes A and B.  A has a read lock and B has
@@ -41016,7 +41016,7 @@ SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree *p, int wrflag){
   }
 
 #ifndef SQLITE_OMIT_SHARED_CACHE
-  /* If another database handle has already opened a write transaction 
+  /* If another database handle has already opened a write transaction
   ** on this shared-btree structure and a second write transaction is
   ** requested, return SQLITE_LOCKED.
   */
@@ -41038,8 +41038,8 @@ SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree *p, int wrflag){
   }
 #endif
 
-  /* Any read-only or read-write transaction implies a read-lock on 
-  ** page 1. So if some other shared-cache client already has a write-lock 
+  /* Any read-only or read-write transaction implies a read-lock on
+  ** page 1. So if some other shared-cache client already has a write-lock
   ** on page 1, the transaction cannot be opened. */
   rc = querySharedCacheTableLock(p, MASTER_ROOT, READ_LOCK);
   if( SQLITE_OK!=rc ) goto trans_begun;
@@ -41048,7 +41048,7 @@ SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree *p, int wrflag){
     /* Call lockBtree() until either pBt->pPage1 is populated or
     ** lockBtree() returns something other than SQLITE_OK. lockBtree()
     ** may return SQLITE_OK but leave pBt->pPage1 set to 0 if after
-    ** reading page 1 it discovers that the page-size of the database 
+    ** reading page 1 it discovers that the page-size of the database
     ** file is not pBt->pageSize. In this case lockBtree() will update
     ** pBt->pageSize to the page-size of the file on disk.
     */
@@ -41064,7 +41064,7 @@ SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree *p, int wrflag){
         }
       }
     }
-  
+
     if( rc!=SQLITE_OK ){
       unlockBtreeIfUnused(pBt);
     }
@@ -41159,7 +41159,7 @@ set_child_ptrmaps_out:
 ** that it points to iTo. Parameter eType describes the type of pointer to
 ** be modified, as  follows:
 **
-** PTRMAP_BTREE:     pPage is a btree-page. The pointer points at a child 
+** PTRMAP_BTREE:     pPage is a btree-page. The pointer points at a child
 **                   page of pPage.
 **
 ** PTRMAP_OVERFLOW1: pPage is a btree-page. The pointer points at an overflow
@@ -41203,9 +41203,9 @@ static int modifyPagePointer(MemPage *pPage, Pgno iFrom, Pgno iTo, u8 eType){
         }
       }
     }
-  
+
     if( i==nCell ){
-      if( eType!=PTRMAP_BTREE || 
+      if( eType!=PTRMAP_BTREE ||
           get4byte(&pPage->aData[pPage->hdrOffset+8])!=iFrom ){
         return SQLITE_CORRUPT_BKPT;
       }
@@ -41219,11 +41219,11 @@ static int modifyPagePointer(MemPage *pPage, Pgno iFrom, Pgno iTo, u8 eType){
 
 
 /*
-** Move the open database page pDbPage to location iFreePage in the 
+** Move the open database page pDbPage to location iFreePage in the
 ** database. The pDbPage reference remains valid.
 **
 ** The isCommit flag indicates that there is no need to remember that
-** the journal needs to be sync()ed before database page pDbPage->pgno 
+** the journal needs to be sync()ed before database page pDbPage->pgno
 ** can be written to. The caller has already promised not to write to that
 ** page.
 */
@@ -41240,13 +41240,13 @@ static int relocatePage(
   Pager *pPager = pBt->pPager;
   int rc;
 
-  assert( eType==PTRMAP_OVERFLOW2 || eType==PTRMAP_OVERFLOW1 || 
+  assert( eType==PTRMAP_OVERFLOW2 || eType==PTRMAP_OVERFLOW1 ||
       eType==PTRMAP_BTREE || eType==PTRMAP_ROOTPAGE );
   assert( sqlite3_mutex_held(pBt->mutex) );
   assert( pDbPage->pBt==pBt );
 
   /* Move page iDbPage from its current location to page number iFreePage */
-  TRACE(("AUTOVACUUM: Moving %d to free page %d (ptr page %d type %d)\n", 
+  TRACE(("AUTOVACUUM: Moving %d to free page %d (ptr page %d type %d)\n",
       iDbPage, iFreePage, iPtrPage, eType));
   rc = sqlite3PagerMovepage(pPager, pDbPage->pDbPage, iFreePage, isCommit);
   if( rc!=SQLITE_OK ){
@@ -41308,14 +41308,14 @@ static int allocateBtreePage(BtShared *, MemPage **, Pgno *, Pgno, u8);
 ** return SQLITE_OK. If there is no work to do (and therefore no
 ** point in calling this function again), return SQLITE_DONE.
 **
-** More specificly, this function attempts to re-organize the 
+** More specificly, this function attempts to re-organize the
 ** database so that the last page of the file currently in use
 ** is no longer in use.
 **
 ** If the nFin parameter is non-zero, this function assumes
 ** that the caller will keep calling incrVacuumStep() until
 ** it returns SQLITE_DONE or an error, and that nFin is the
-** number of pages the database file will contain after this 
+** number of pages the database file will contain after this
 ** process is complete.  If nFin is zero, it is assumed that
 ** incrVacuumStep() will be called a finite amount of times
 ** which may or may not empty the freelist.  A full autovacuum
@@ -41349,7 +41349,7 @@ static int incrVacuumStep(BtShared *pBt, Pgno nFin, Pgno iLastPg){
       if( nFin==0 ){
         /* Remove the page from the files free-list. This is not required
         ** if nFin is non-zero. In that case, the free-list will be
-        ** truncated to zero after this function returns, so it doesn't 
+        ** truncated to zero after this function returns, so it doesn't
         ** matter if it still contains some garbage entries.
         */
         Pgno iFreePg;
@@ -41387,7 +41387,7 @@ static int incrVacuumStep(BtShared *pBt, Pgno nFin, Pgno iLastPg){
         releasePage(pFreePg);
       }while( nFin!=0 && iFreePg>nFin );
       assert( iFreePg<iLastPg );
-      
+
       rc = sqlite3PagerWrite(pLastPg->pDbPage);
       if( rc==SQLITE_OK ){
         rc = relocatePage(pBt, pLastPg, eType, iPtrPage, iFreePg, nFin!=0);
@@ -41427,7 +41427,7 @@ static int incrVacuumStep(BtShared *pBt, Pgno nFin, Pgno iLastPg){
 **
 ** If the incremental vacuum is finished after this function has run,
 ** SQLITE_DONE is returned. If it is not finished, but no error occurred,
-** SQLITE_OK is returned. Otherwise an SQLite error code. 
+** SQLITE_OK is returned. Otherwise an SQLite error code.
 */
 SQLITE_PRIVATE int sqlite3BtreeIncrVacuum(Btree *p){
   int rc;
@@ -41450,7 +41450,7 @@ SQLITE_PRIVATE int sqlite3BtreeIncrVacuum(Btree *p){
 ** is commited for an auto-vacuum database.
 **
 ** If SQLITE_OK is returned, then *pnTrunc is set to the number of pages
-** the database file should be truncated to during the commit process. 
+** the database file should be truncated to during the commit process.
 ** i.e. the database has been reorganized so that only the first *pnTrunc
 ** pages are in use.
 */
@@ -41531,7 +41531,7 @@ static int autoVacuumCommit(BtShared *pBt){
 **
 ** Otherwise, sync the database file for the btree pBt. zMaster points to
 ** the name of a master journal file that should be written into the
-** individual journal file, or is NULL, indicating no master journal file 
+** individual journal file, or is NULL, indicating no master journal file
 ** (single database transaction).
 **
 ** When this is called, the master journal should already have been
@@ -41576,8 +41576,8 @@ static void btreeEndTransaction(Btree *p){
     downgradeAllSharedCacheTableLocks(p);
     p->inTrans = TRANS_READ;
   }else{
-    /* If the handle had any kind of transaction open, decrement the 
-    ** transaction count of the shared btree. If the transaction count 
+    /* If the handle had any kind of transaction open, decrement the
+    ** transaction count of the shared btree. If the transaction count
     ** reaches 0, set the shared state to TRANS_NONE. The unlockBtreeIfUnused()
     ** call below will unlock the pager.  */
     if( p->inTrans!=TRANS_NONE ){
@@ -41588,7 +41588,7 @@ static void btreeEndTransaction(Btree *p){
       }
     }
 
-    /* Set the current transaction state to TRANS_NONE and unlock the 
+    /* Set the current transaction state to TRANS_NONE and unlock the
     ** pager if this call closed the only read or write transaction.  */
     p->inTrans = TRANS_NONE;
     unlockBtreeIfUnused(pBt);
@@ -41618,7 +41618,7 @@ SQLITE_PRIVATE int sqlite3BtreeCommitPhaseTwo(Btree *p){
   sqlite3BtreeEnter(p);
   btreeIntegrity(p);
 
-  /* If the handle has a write-transaction open, commit the shared-btrees 
+  /* If the handle has a write-transaction open, commit the shared-btrees
   ** transaction and set the shared state to TRANS_READ.
   */
   if( p->inTrans==TRANS_WRITE ){
@@ -41667,7 +41667,7 @@ static int countWriteCursors(BtShared *pBt){
   BtCursor *pCur;
   int r = 0;
   for(pCur=pBt->pCursor; pCur; pCur=pCur->pNext){
-    if( pCur->wrFlag && pCur->eState!=CURSOR_FAULT ) r++; 
+    if( pCur->wrFlag && pCur->eState!=CURSOR_FAULT ) r++;
   }
   return r;
 }
@@ -41726,9 +41726,9 @@ SQLITE_PRIVATE int sqlite3BtreeRollback(Btree *p){
   if( rc!=SQLITE_OK ){
     /* This is a horrible situation. An IO or malloc() error occurred whilst
     ** trying to save cursor positions. If this is an automatic rollback (as
-    ** the result of a constraint, malloc() failure or IO error) then 
+    ** the result of a constraint, malloc() failure or IO error) then
     ** the cache may be internally inconsistent (not contain valid trees) so
-    ** we cannot simply return the error to the caller. Instead, abort 
+    ** we cannot simply return the error to the caller. Instead, abort
     ** all queries that may be using any of the cursors that failed to save.
     */
     sqlite3BtreeTripAllCursors(p, rc);
@@ -41762,8 +41762,8 @@ SQLITE_PRIVATE int sqlite3BtreeRollback(Btree *p){
 
 /*
 ** Start a statement subtransaction. The subtransaction can can be rolled
-** back independently of the main transaction. You must start a transaction 
-** before starting a subtransaction. The subtransaction is ended automatically 
+** back independently of the main transaction. You must start a transaction
+** before starting a subtransaction. The subtransaction is ended automatically
 ** if the main transaction commits or rolls back.
 **
 ** Statement subtransactions are used around individual SQL statements
@@ -41804,11 +41804,11 @@ SQLITE_PRIVATE int sqlite3BtreeBeginStmt(Btree *p, int iStatement){
 /*
 ** The second argument to this function, op, is always SAVEPOINT_ROLLBACK
 ** or SAVEPOINT_RELEASE. This function either releases or rolls back the
-** savepoint identified by parameter iSavepoint, depending on the value 
+** savepoint identified by parameter iSavepoint, depending on the value
 ** of op.
 **
 ** Normally, iSavepoint is greater than or equal to zero. However, if op is
-** SAVEPOINT_ROLLBACK, then iSavepoint may also be -1. In this case the 
+** SAVEPOINT_ROLLBACK, then iSavepoint may also be -1. In this case the
 ** contents of the entire transaction are rolled back. This is different
 ** from a normal transaction rollback, as no locks are released and the
 ** transaction remains open.
@@ -41873,9 +41873,9 @@ static int btreeCursor(
   assert( sqlite3BtreeHoldsMutex(p) );
   assert( wrFlag==0 || wrFlag==1 );
 
-  /* The following assert statements verify that if this is a sharable 
-  ** b-tree database, the connection is holding the required table locks, 
-  ** and that no other connection has any open cursor that conflicts with 
+  /* The following assert statements verify that if this is a sharable
+  ** b-tree database, the connection is holding the required table locks,
+  ** and that no other connection has any open cursor that conflicts with
   ** this lock.  */
   assert( hasSharedCacheTableLock(p, iTable, pKeyInfo!=0, wrFlag+1) );
   assert( wrFlag==0 || !hasReadConflicts(p, iTable) );
@@ -42070,14 +42070,14 @@ SQLITE_PRIVATE int sqlite3BtreeCursorIsValid(BtCursor *pCur){
 /*
 ** Set *pSize to the size of the buffer needed to hold the value of
 ** the key for the current entry.  If the cursor is not pointing
-** to a valid entry, *pSize is set to 0. 
+** to a valid entry, *pSize is set to 0.
 **
 ** For a table with the INTKEY flag set, this routine returns the key
 ** itself, not the number of bytes in the key.
 **
 ** The caller must position the cursor prior to invoking this routine.
-** 
-** This routine cannot fail.  It always returns SQLITE_OK.  
+**
+** This routine cannot fail.  It always returns SQLITE_OK.
 */
 SQLITE_PRIVATE int sqlite3BtreeKeySize(BtCursor *pCur, i64 *pSize){
   assert( cursorHoldsMutex(pCur) );
@@ -42113,15 +42113,15 @@ SQLITE_PRIVATE int sqlite3BtreeDataSize(BtCursor *pCur, u32 *pSize){
 
 /*
 ** Given the page number of an overflow page in the database (parameter
-** ovfl), this function finds the page number of the next page in the 
+** ovfl), this function finds the page number of the next page in the
 ** linked list of overflow pages. If possible, it uses the auto-vacuum
-** pointer-map data instead of reading the content of page ovfl to do so. 
+** pointer-map data instead of reading the content of page ovfl to do so.
 **
 ** If an error occurs an SQLite error code is returned. Otherwise:
 **
-** The page number of the next overflow page in the linked list is 
-** written to *pPgnoNext. If page ovfl is the last page in its linked 
-** list, *pPgnoNext is set to zero. 
+** The page number of the next overflow page in the linked list is
+** written to *pPgnoNext. If page ovfl is the last page in its linked
+** list, *pPgnoNext is set to zero.
 **
 ** If ppPage is not NULL, and a reference to the MemPage object corresponding
 ** to page number pOvfl was obtained, then *ppPage is set to point to that
@@ -42145,9 +42145,9 @@ static int getOverflowPage(
 
 #ifndef SQLITE_OMIT_AUTOVACUUM
   /* Try to find the next page in the overflow list using the
-  ** autovacuum pointer-map pages. Guess that the next page in 
-  ** the overflow list is page number (ovfl+1). If that guess turns 
-  ** out to be wrong, fall back to loading the data of page 
+  ** autovacuum pointer-map pages. Guess that the next page in
+  ** the overflow list is page number (ovfl+1). If that guess turns
+  ** out to be wrong, fall back to loading the data of page
   ** number ovfl to determine the next page number.
   */
   if( pBt->autoVacuum ){
@@ -42234,7 +42234,7 @@ static int copyPayload(
 **
 ** If the BtCursor.isIncrblobHandle flag is set, and the current
 ** cursor entry uses one or more overflow pages, this function
-** allocates space for and lazily popluates the overflow page-list 
+** allocates space for and lazily popluates the overflow page-list
 ** cache array (BtCursor.aOverflow). Subsequent calls use this
 ** cache to make seeking to the supplied offset more efficient.
 **
@@ -42251,7 +42251,7 @@ static int accessPayload(
   BtCursor *pCur,      /* Cursor pointing to entry to read from */
   u32 offset,          /* Begin reading this far into payload */
   u32 amt,             /* Read this many bytes */
-  unsigned char *pBuf, /* Write the bytes into this buffer */ 
+  unsigned char *pBuf, /* Write the bytes into this buffer */
   int eOp              /* zero to read. non-zero to write. */
 ){
   unsigned char *aPayload;
@@ -42270,7 +42270,7 @@ static int accessPayload(
   aPayload = pCur->info.pCell + pCur->info.nHeader;
   nKey = (pPage->intKey ? 0 : (int)pCur->info.nKey);
 
-  if( NEVER(offset+amt > nKey+pCur->info.nData) 
+  if( NEVER(offset+amt > nKey+pCur->info.nData)
    || &aPayload[pCur->info.nLocal] > &pPage->aData[pBt->usableSize]
   ){
     /* Trying to read or write past the end of the data is an error */
@@ -42346,7 +42346,7 @@ static int accessPayload(
 #ifndef SQLITE_OMIT_INCRBLOB
         if( pCur->aOverflow && pCur->aOverflow[iIdx+1] ){
           nextPage = pCur->aOverflow[iIdx+1];
-        } else 
+        } else
 #endif
           rc = getOverflowPage(pBt, nextPage, 0, &nextPage);
         offset -= ovflSize;
@@ -42429,7 +42429,7 @@ SQLITE_PRIVATE int sqlite3BtreeData(BtCursor *pCur, u32 offset, u32 amt, void *p
 }
 
 /*
-** Return a pointer to payload information from the entry that the 
+** Return a pointer to payload information from the entry that the
 ** pCur cursor is pointing to.  The pointer is to the beginning of
 ** the key if skipKey==0 and it points to the beginning of data if
 ** skipKey==1.  The number of bytes of available key/data is written
@@ -42556,7 +42556,7 @@ static int moveToChild(BtCursor *pCur, u32 newPgno){
 
 #ifndef NDEBUG
 /*
-** Page pParent is an internal (non-leaf) tree page. This function 
+** Page pParent is an internal (non-leaf) tree page. This function
 ** asserts that page number iChild is the left-child if the iIdx'th
 ** cell in page pParent. Or, if iIdx is equal to the total number of
 ** cells in pParent, that page number iChild is the right-child of
@@ -42571,7 +42571,7 @@ static void assertParentIndex(MemPage *pParent, int iIdx, Pgno iChild){
   }
 }
 #else
-#  define assertParentIndex(x,y,z) 
+#  define assertParentIndex(x,y,z)
 #endif
 
 /*
@@ -42588,8 +42588,8 @@ static void moveToParent(BtCursor *pCur){
   assert( pCur->iPage>0 );
   assert( pCur->apPage[pCur->iPage] );
   assertParentIndex(
-    pCur->apPage[pCur->iPage-1], 
-    pCur->aiIdx[pCur->iPage-1], 
+    pCur->apPage[pCur->iPage-1],
+    pCur->aiIdx[pCur->iPage-1],
     pCur->apPage[pCur->iPage]->pgno
   );
   releasePage(pCur->apPage[pCur->iPage]);
@@ -42603,19 +42603,19 @@ static void moveToParent(BtCursor *pCur){
 **
 ** If the table has a virtual root page, then the cursor is moved to point
 ** to the virtual root page instead of the actual root page. A table has a
-** virtual root page when the actual root page contains no cells and a 
+** virtual root page when the actual root page contains no cells and a
 ** single child page. This can only happen with the table rooted at page 1.
 **
-** If the b-tree structure is empty, the cursor state is set to 
+** If the b-tree structure is empty, the cursor state is set to
 ** CURSOR_INVALID. Otherwise, the cursor is set to point to the first
 ** cell located on the root (or virtual root) page and the cursor state
 ** is set to CURSOR_VALID.
 **
 ** If this function returns successfully, it may be assumed that the
-** page-header flags indicate that the [virtual] root-page is the expected 
+** page-header flags indicate that the [virtual] root-page is the expected
 ** kind of b-tree page (i.e. if when opening the cursor the caller did not
 ** specify a KeyInfo structure the flags byte is set to 0x05 or 0x0D,
-** indicating a table b-tree, or if the caller did specify a KeyInfo 
+** indicating a table b-tree, or if the caller did specify a KeyInfo
 ** structure the flags byte is set to 0x02 or 0x0A, indicating an index
 ** b-tree).
 */
@@ -42663,8 +42663,8 @@ static int moveToRoot(BtCursor *pCur){
 
   /* Assert that the root page is of the correct type. This must be the
   ** case as the call to this function that loaded the root-page (either
-  ** this call or a previous invocation) would have detected corruption 
-  ** if the assumption were not true, and it is not possible for the flags 
+  ** this call or a previous invocation) would have detected corruption
+  ** if the assumption were not true, and it is not possible for the flags
   ** byte to have been modified while this cursor is holding a reference
   ** to the page.  */
   pRoot = pCur->apPage[0];
@@ -42770,14 +42770,14 @@ SQLITE_PRIVATE int sqlite3BtreeFirst(BtCursor *pCur, int *pRes){
 */
 SQLITE_PRIVATE int sqlite3BtreeLast(BtCursor *pCur, int *pRes){
   int rc;
+
   assert( cursorHoldsMutex(pCur) );
   assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) );
 
   /* If the cursor already points to the last entry, this is a no-op. */
   if( CURSOR_VALID==pCur->eState && pCur->atLast ){
 #ifdef SQLITE_DEBUG
-    /* This block serves to assert() that the cursor really does point 
+    /* This block serves to assert() that the cursor really does point
     ** to the last entry in the b-tree. */
     int ii;
     for(ii=0; ii<pCur->iPage; ii++){
@@ -42804,10 +42804,10 @@ SQLITE_PRIVATE int sqlite3BtreeLast(BtCursor *pCur, int *pRes){
   return rc;
 }
 
-/* Move the cursor so that it points to an entry near the key 
+/* Move the cursor so that it points to an entry near the key
 ** specified by pIdxKey or intKey.   Return a success code.
 **
-** For INTKEY tables, the intKey parameter is used.  pIdxKey 
+** For INTKEY tables, the intKey parameter is used.  pIdxKey
 ** must be NULL.  For index tables, pIdxKey is used and intKey
 ** is ignored.
 **
@@ -42817,7 +42817,7 @@ SQLITE_PRIVATE int sqlite3BtreeLast(BtCursor *pCur, int *pRes){
 ** before or after the key.
 **
 ** An integer is written into *pRes which is the result of
-** comparing the key with the entry to which the cursor is 
+** comparing the key with the entry to which the cursor is
 ** pointing.  The meaning of the integer written into
 ** *pRes is as follows:
 **
@@ -42848,8 +42848,8 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
 
   /* If the cursor is already positioned at the point we are trying
   ** to move to, then just return without doing any work */
-  if( pCur->eState==CURSOR_VALID && pCur->validNKey 
-   && pCur->apPage[0]->intKey 
+  if( pCur->eState==CURSOR_VALID && pCur->validNKey
+   && pCur->apPage[0]->intKey
   ){
     if( pCur->info.nKey==intKey ){
       *pRes = 0;
@@ -42922,9 +42922,9 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
         /* The maximum supported page-size is 32768 bytes. This means that
         ** the maximum number of record bytes stored on an index B-Tree
         ** page is at most 8198 bytes, which may be stored as a 2-byte
-        ** varint. This information is used to attempt to avoid parsing 
-        ** the entire cell by checking for the cases where the record is 
-        ** stored entirely within the b-tree page by inspecting the first 
+        ** varint. This information is used to attempt to avoid parsing
+        ** the entire cell by checking for the cases where the record is
+        ** stored entirely within the b-tree page by inspecting the first
         ** 2 bytes of the cell.
         */
         int nCell = pCell[0];
@@ -42933,10 +42933,10 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
           ** single byte varint and the record fits entirely on the main
           ** b-tree page.  */
           c = sqlite3VdbeRecordCompare(nCell, (void*)&pCell[1], pIdxKey);
-        }else if( !(pCell[1] & 0x80) 
+        }else if( !(pCell[1] & 0x80)
           && (nCell = ((nCell&0x7f)<<7) + pCell[1])<=pPage->maxLocal
         ){
-          /* The record-size field is a 2 byte varint and the record 
+          /* The record-size field is a 2 byte varint and the record
           ** fits entirely on the main b-tree page.  */
           c = sqlite3VdbeRecordCompare(nCell, (void*)&pCell[2], pIdxKey);
         }else{
@@ -43165,19 +43165,19 @@ SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor *pCur, int *pRes){
 ** an error.  *ppPage and *pPgno are undefined in the event of an error.
 ** Do not invoke sqlite3PagerUnref() on *ppPage if an error is returned.
 **
-** If the "nearby" parameter is not 0, then a (feeble) effort is made to 
+** If the "nearby" parameter is not 0, then a (feeble) effort is made to
 ** locate a page close to the page number "nearby".  This can be used in an
 ** attempt to keep related pages close to each other in the database file,
 ** which in turn can make database access faster.
 **
-** If the "exact" parameter is not 0, and the page-number nearby exists 
+** If the "exact" parameter is not 0, and the page-number nearby exists
 ** anywhere on the free-list, then it is guarenteed to be returned. This
 ** is only used by auto-vacuum databases when allocating a new table.
 */
 static int allocateBtreePage(
-  BtShared *pBt, 
-  MemPage **ppPage, 
-  Pgno *pPgno, 
+  BtShared *pBt,
+  MemPage **ppPage,
+  Pgno *pPgno,
   Pgno nearby,
   u8 exact
 ){
@@ -43201,7 +43201,7 @@ static int allocateBtreePage(
     /* There are pages on the freelist.  Reuse one of those pages. */
     Pgno iTrunk;
     u8 searchList = 0; /* If the free-list must be searched for 'nearby' */
-    
+
     /* If the 'exact' parameter was true and a query of the pointer-map
     ** shows that the page 'nearby' is somewhere on the free-list, then
     ** the entire-list will be searched for that page.
@@ -43251,8 +43251,8 @@ static int allocateBtreePage(
 
       k = get4byte(&pTrunk->aData[4]);
       if( k==0 && !searchList ){
-        /* The trunk has no leaves and the list is not being searched. 
-        ** So extract the trunk page itself and use it as the newly 
+        /* The trunk has no leaves and the list is not being searched.
+        ** So extract the trunk page itself and use it as the newly
         ** allocated page */
         assert( pPrevTrunk==0 );
         rc = sqlite3PagerWrite(pTrunk->pDbPage);
@@ -43287,13 +43287,13 @@ static int allocateBtreePage(
             memcpy(&pPrevTrunk->aData[0], &pTrunk->aData[0], 4);
           }
         }else{
-          /* The trunk page is required by the caller but it contains 
+          /* The trunk page is required by the caller but it contains
           ** pointers to free-list leaves. The first leaf becomes a trunk
           ** page in this case.
           */
           MemPage *pNewTrunk;
           Pgno iNewTrunk = get4byte(&pTrunk->aData[8]);
-          if( iNewTrunk>mxPage ){ 
+          if( iNewTrunk>mxPage ){
             rc = SQLITE_CORRUPT_BKPT;
             goto end_allocate_page;
           }
@@ -43442,12 +43442,12 @@ end_allocate_page:
 }
 
 /*
-** This function is used to add page iPage to the database file free-list. 
+** This function is used to add page iPage to the database file free-list.
 ** It is assumed that the page is not already a part of the free-list.
 **
 ** The value passed as the second argument to this function is optional.
-** If the caller happens to have a pointer to the MemPage object 
-** corresponding to page iPage handy, it may pass it as the second value. 
+** If the caller happens to have a pointer to the MemPage object
+** corresponding to page iPage handy, it may pass it as the second value.
 ** Otherwise, it may pass NULL.
 **
 ** If a pointer to a MemPage object is passed as the second argument,
@@ -43455,7 +43455,7 @@ end_allocate_page:
 */
 static int freePage2(BtShared *pBt, MemPage *pMemPage, Pgno iPage){
   MemPage *pTrunk = 0;                /* Free-list trunk page */
-  Pgno iTrunk = 0;                    /* Page number of free-list trunk page */ 
+  Pgno iTrunk = 0;                    /* Page number of free-list trunk page */
   MemPage *pPage1 = pBt->pPage1;      /* Local reference to page 1 */
   MemPage *pPage;                     /* Page being freed. May be NULL. */
   int rc;                             /* Return Code */
@@ -43551,7 +43551,7 @@ static int freePage2(BtShared *pBt, MemPage *pMemPage, Pgno iPage){
 
   /* If control flows to this point, then it was not possible to add the
   ** the page being freed as a leaf page of the first trunk in the free-list.
-  ** Possibly because the free-list is empty, or possibly because the 
+  ** Possibly because the free-list is empty, or possibly because the
   ** first trunk in the free-list is full. Either way, the page being freed
   ** will become the new first trunk page in the free-list.
   */
@@ -43606,8 +43606,8 @@ static int clearCell(MemPage *pPage, unsigned char *pCell){
     Pgno iNext = 0;
     MemPage *pOvfl = 0;
     if( ovflPgno<2 || ovflPgno>pagerPagecount(pBt) ){
-      /* 0 is not a legal page number and page 1 cannot be an 
-      ** overflow page. Therefore if ovflPgno<2 or past the end of the 
+      /* 0 is not a legal page number and page 1 cannot be an
+      ** overflow page. Therefore if ovflPgno<2 or past the end of the
       ** file the database must be corrupt. */
       return SQLITE_CORRUPT_BKPT;
     }
@@ -43619,11 +43619,11 @@ static int clearCell(MemPage *pPage, unsigned char *pCell){
     if( ( pOvfl || ((pOvfl = btreePageLookup(pBt, ovflPgno))!=0) )
      && sqlite3PagerPageRefcount(pOvfl->pDbPage)!=1
     ){
-      /* There is no reason any cursor should have an outstanding reference 
+      /* There is no reason any cursor should have an outstanding reference
       ** to an overflow page belonging to a cell that is being deleted/updated.
-      ** So if there exists more than one reference to this page, then it 
-      ** must not really be an overflow page and the database must be corrupt. 
-      ** It is helpful to detect this before calling freePage2(), as 
+      ** So if there exists more than one reference to this page, then it
+      ** must not really be an overflow page and the database must be corrupt.
+      ** It is helpful to detect this before calling freePage2(), as
       ** freePage2() may zero the page contents if secure-delete mode is
       ** enabled. If this 'overflow' page happens to be a page that the
       ** caller is iterating through or using in some other way, this
@@ -43698,14 +43698,14 @@ static int fillInCell(
   assert( info.nHeader==nHeader );
   assert( info.nKey==nKey );
   assert( info.nData==(u32)(nData+nZero) );
-  
+
   /* Fill in the payload */
   nPayload = nData + nZero;
   if( pPage->intKey ){
     pSrc = pData;
     nSrc = nData;
     nData = 0;
-  }else{ 
+  }else{
     if( NEVER(nKey>0x7fffffff || pKey==0) ){
       return SQLITE_CORRUPT_BKPT;
     }
@@ -43725,8 +43725,8 @@ static int fillInCell(
       if( pBt->autoVacuum ){
         do{
           pgnoOvfl++;
-        } while( 
-          PTRMAP_ISPAGE(pBt, pgnoOvfl) || pgnoOvfl==PENDING_BYTE_PAGE(pBt) 
+        } while(
+          PTRMAP_ISPAGE(pBt, pgnoOvfl) || pgnoOvfl==PENDING_BYTE_PAGE(pBt)
         );
       }
 #endif
@@ -43734,9 +43734,9 @@ static int fillInCell(
 #ifndef SQLITE_OMIT_AUTOVACUUM
       /* If the database supports auto-vacuum, and the second or subsequent
       ** overflow page is being allocated, add an entry to the pointer-map
-      ** for that page now. 
+      ** for that page now.
       **
-      ** If this is the first overflow page, then write a partial entry 
+      ** If this is the first overflow page, then write a partial entry
       ** to the pointer-map. If we write nothing to this pointer-map slot,
       ** then the optimistic overflow chain processing in clearCell()
       ** may misinterpret the uninitialised values and delete the
@@ -43859,13 +43859,13 @@ static void dropCell(MemPage *pPage, int idx, int sz, int *pRC){
 ** will not fit, then make a copy of the cell content into pTemp if
 ** pTemp is not null.  Regardless of pTemp, allocate a new entry
 ** in pPage->aOvfl[] and make it point to the cell content (either
-** in pTemp or the original pCell) and also record its index. 
-** Allocating a new entry in pPage->aCell[] implies that 
+** in pTemp or the original pCell) and also record its index.
+** Allocating a new entry in pPage->aCell[] implies that
 ** pPage->nOverflow is incremented.
 **
 ** If nSkip is non-zero, then do not copy the first nSkip bytes of the
 ** cell. The caller will overwrite them after this function returns. If
-** nSkip is non-zero, then pCell may not point to an invalid memory location 
+** nSkip is non-zero, then pCell may not point to an invalid memory location
 ** (but pCell+nSkip is always valid).
 */
 static void insertCell(
@@ -44043,7 +44043,7 @@ static int balance_quick(MemPage *pParent, MemPage *pPage, u8 *pSpace){
 
   if( pPage->nCell<=0 ) return SQLITE_CORRUPT_BKPT;
 
-  /* Allocate a new page. This page will become the right-sibling of 
+  /* Allocate a new page. This page will become the right-sibling of
   ** pPage. Make the parent page writable, so that the new divider cell
   ** may be inserted. If both these operations are successful, proceed.
   */
@@ -44062,7 +44062,7 @@ static int balance_quick(MemPage *pParent, MemPage *pPage, u8 *pSpace){
     assemblePage(pNew, 1, &pCell, &szCell);
 
     /* If this is an auto-vacuum database, update the pointer map
-    ** with entries for the new page, and any pointer from the 
+    ** with entries for the new page, and any pointer from the
     ** cell on the page to an overflow page. If either of these
     ** operations fails, the return code is set, but the contents
     ** of the parent page are still manipulated by thh code below.
@@ -44076,14 +44076,14 @@ static int balance_quick(MemPage *pParent, MemPage *pPage, u8 *pSpace){
         ptrmapPutOvflPtr(pNew, pCell, &rc);
       }
     }
-  
+
     /* Create a divider cell to insert into pParent. The divider cell
     ** consists of a 4-byte page number (the page number of pPage) and
     ** a variable length key value (which must be the same value as the
     ** largest key on pPage).
     **
-    ** To find the largest key value on pPage, first find the right-most 
-    ** cell on pPage. The first two fields of this cell are the 
+    ** To find the largest key value on pPage, first find the right-most
+    ** cell on pPage. The first two fields of this cell are the
     ** record-length (a variable length integer at most 32-bits in size)
     ** and the key value (a variable length integer, may have any value).
     ** The first of the while(...) loops below skips over the record-length
@@ -44102,7 +44102,7 @@ static int balance_quick(MemPage *pParent, MemPage *pPage, u8 *pSpace){
 
     /* Set the right-child pointer of pParent to point to the new page. */
     put4byte(&pParent->aData[pParent->hdrOffset+8], pgnoNew);
-  
+
     /* Release the reference to the new page. */
     releasePage(pNew);
   }
@@ -44114,7 +44114,7 @@ static int balance_quick(MemPage *pParent, MemPage *pPage, u8 *pSpace){
 #if 0
 /*
 ** This function does not contribute anything to the operation of SQLite.
-** it is sometimes activated temporarily while debugging code responsible 
+** it is sometimes activated temporarily while debugging code responsible
 ** for setting pointer-map entries.
 */
 static int ptrmapCheckPages(MemPage **apPage, int nPage){
@@ -44129,7 +44129,7 @@ static int ptrmapCheckPages(MemPage **apPage, int nPage){
     for(j=0; j<pPage->nCell; j++){
       CellInfo info;
       u8 *z;
-     
+
       z = findCell(pPage, j);
       btreeParseCellPtr(pPage, z, &info);
       if( info.iOverflow ){
@@ -44154,7 +44154,7 @@ static int ptrmapCheckPages(MemPage **apPage, int nPage){
 #endif
 
 /*
-** This function is used to copy the contents of the b-tree node stored 
+** This function is used to copy the contents of the b-tree node stored
 ** on page pFrom to page pTo. If page pFrom was not a leaf page, then
 ** the pointer-map entries for each child page are updated so that the
 ** parent page stored in the pointer map is page pTo. If pFrom contained
@@ -44162,11 +44162,11 @@ static int ptrmapCheckPages(MemPage **apPage, int nPage){
 ** map entries are also updated so that the parent page is page pTo.
 **
 ** If pFrom is currently carrying any overflow cells (entries in the
-** MemPage.aOvfl[] array), they are not copied to pTo. 
+** MemPage.aOvfl[] array), they are not copied to pTo.
 **
 ** Before returning, page pTo is reinitialized using btreeInitPage().
 **
-** The performance of this function is not critical. It is only used by 
+** The performance of this function is not critical. It is only used by
 ** the balance_shallower() and balance_deeper() procedures, neither of
 ** which are called often under normal circumstances.
 */
@@ -44179,20 +44179,20 @@ static void copyNodeContent(MemPage *pFrom, MemPage *pTo, int *pRC){
     int const iToHdr = ((pTo->pgno==1) ? 100 : 0);
     int rc;
     int iData;
-  
-  
+
+
     assert( pFrom->isInit );
     assert( pFrom->nFree>=iToHdr );
     assert( get2byte(&aFrom[iFromHdr+5])<=pBt->usableSize );
-  
+
     /* Copy the b-tree node content from page pFrom to page pTo. */
     iData = get2byte(&aFrom[iFromHdr+5]);
     memcpy(&aTo[iData], &aFrom[iData], pBt->usableSize-iData);
     memcpy(&aTo[iToHdr], &aFrom[iFromHdr], pFrom->cellOffset + 2*pFrom->nCell);
-  
+
     /* Reinitialize page pTo so that the contents of the MemPage structure
     ** match the new data. The initialization of pTo can actually fail under
-    ** fairly obscure circumstances, even though it is a copy of initialized 
+    ** fairly obscure circumstances, even though it is a copy of initialized
     ** page pFrom.
     */
     pTo->isInit = 0;
@@ -44201,7 +44201,7 @@ static void copyNodeContent(MemPage *pFrom, MemPage *pTo, int *pRC){
       *pRC = rc;
       return;
     }
-  
+
     /* If this is an auto-vacuum database, update the pointer-map entries
     ** for any b-tree or overflow pages that pTo now contains the pointers to.
     */
@@ -44216,13 +44216,13 @@ static void copyNodeContent(MemPage *pFrom, MemPage *pTo, int *pRC){
 ** (hereafter "the page") and up to 2 siblings so that all pages have about the
 ** same amount of free space. Usually a single sibling on either side of the
 ** page are used in the balancing, though both siblings might come from one
-** side if the page is the first or last child of its parent. If the page 
+** side if the page is the first or last child of its parent. If the page
 ** has fewer than 2 siblings (something which can only happen if the page
 ** is a root page or a child of a root page) then all available siblings
 ** participate in the balancing.
 **
-** The number of siblings of the page might be increased or decreased by 
-** one or two in an effort to keep pages nearly full but not over full. 
+** The number of siblings of the page might be increased or decreased by
+** one or two in an effort to keep pages nearly full but not over full.
 **
 ** Note that when this routine is called, some of the cells on the page
 ** might not actually be stored in MemPage.aData[]. This can happen
@@ -44233,7 +44233,7 @@ static void copyNodeContent(MemPage *pFrom, MemPage *pTo, int *pRC){
 ** inserted into or removed from the parent page (pParent). Doing so
 ** may cause the parent page to become overfull or underfull. If this
 ** happens, it is the responsibility of the caller to invoke the correct
-** balancing routine to fix this problem (see the balance() routine). 
+** balancing routine to fix this problem (see the balance() routine).
 **
 ** If this routine fails for any reason, it might leave the database
 ** in a corrupted state. So if this routine fails, the database should
@@ -44248,7 +44248,7 @@ static void copyNodeContent(MemPage *pFrom, MemPage *pTo, int *pRC){
 ** of the page-size, the aOvflSpace[] buffer is guaranteed to be large
 ** enough for all overflow cells.
 **
-** If aOvflSpace is set to a null pointer, this function returns 
+** If aOvflSpace is set to a null pointer, this function returns
 ** SQLITE_NOMEM.
 */
 static int balance_nonroot(
@@ -44294,7 +44294,7 @@ static int balance_nonroot(
 #endif
 
   /* At this point pParent may have at most one overflow cell. And if
-  ** this overflow cell is present, it must be the cell with 
+  ** this overflow cell is present, it must be the cell with
   ** index iParentIdx. This scenario comes about when this function
   ** is called (indirectly) from sqlite3BtreeDelete().
   */
@@ -44305,11 +44305,11 @@ static int balance_nonroot(
     return SQLITE_NOMEM;
   }
 
-  /* Find the sibling pages to balance. Also locate the cells in pParent 
-  ** that divide the siblings. An attempt is made to find NN siblings on 
-  ** either side of pPage. More siblings are taken from one side, however, 
+  /* Find the sibling pages to balance. Also locate the cells in pParent
+  ** that divide the siblings. An attempt is made to find NN siblings on
+  ** either side of pPage. More siblings are taken from one side, however,
   ** if there are fewer than NN siblings on the other side. If pParent
-  ** has NB or fewer children then all children of pParent are taken.  
+  ** has NB or fewer children then all children of pParent are taken.
   **
   ** This loop also drops the divider cells from the parent page. This
   ** way, the remainder of the function does not have to deal with any
@@ -44322,7 +44322,7 @@ static int balance_nonroot(
     nOld = i+1;
   }else{
     nOld = 3;
-    if( iParentIdx==0 ){                 
+    if( iParentIdx==0 ){
       nxDiv = 0;
     }else if( iParentIdx==i ){
       nxDiv = i-2;
@@ -44361,7 +44361,7 @@ static int balance_nonroot(
       ** This is safe because dropping a cell only overwrites the first
       ** four bytes of it, and this function does not need the first
       ** four bytes of the divider cell. So the pointer is safe to use
-      ** later on.  
+      ** later on.
       **
       ** Unless SQLite is compiled in secure-delete mode. In this case,
       ** the dropCell() routine will overwrite the entire cell with zeroes.
@@ -44396,7 +44396,7 @@ static int balance_nonroot(
      + nMaxCells*sizeof(u16)                       /* szCell */
      + pBt->pageSize                               /* aSpace1 */
      + k*nOld;                                     /* Page copies (apCopy) */
-  apCell = sqlite3ScratchMalloc( szScratch ); 
+  apCell = sqlite3ScratchMalloc( szScratch );
   if( apCell==0 ){
     rc = SQLITE_NOMEM;
     goto balance_cleanup;
@@ -44425,7 +44425,7 @@ static int balance_nonroot(
   leafData = apOld[0]->hasData;
   for(i=0; i<nOld; i++){
     int limit;
-    
+
     /* Before doing anything else, take a copy of the i'th original sibling
     ** The rest of this function will use data from the copies rather
     ** that the original pages since the original pages will be in the
@@ -44476,7 +44476,7 @@ static int balance_nonroot(
   ** Figure out the number of pages needed to hold all nCell cells.
   ** Store this number in "k".  Also compute szNew[] which is the total
   ** size of all cells on the i-th page and cntNew[] which is the index
-  ** in apCell[] of the cell that divides page i from page i+1.  
+  ** in apCell[] of the cell that divides page i from page i+1.
   ** cntNew[k] should equal nCell.
   **
   ** Values computed by this block:
@@ -44486,7 +44486,7 @@ static int balance_nonroot(
   **   cntNew[i]: Index in apCell[] and szCell[] for the first cell to
   **              the right of the i-th sibling page.
   ** usableSpace: Number of bytes of space available on each sibling.
-  ** 
+  **
   */
   usableSpace = pBt->usableSize - 12 + leafCorrection;
   for(subtotal=k=i=0; i<nCell; i++){
@@ -44543,7 +44543,7 @@ static int balance_nonroot(
   assert( cntNew[0]>0 || (pParent->pgno==1 && pParent->nCell==0) );
 
   TRACE(("BALANCE: old: %d %d %d  ",
-    apOld[0]->pgno, 
+    apOld[0]->pgno,
     nOld>=2 ? apOld[1]->pgno : 0,
     nOld>=3 ? apOld[2]->pgno : 0
   ));
@@ -44665,9 +44665,9 @@ static int balance_nonroot(
       if( !pNew->leaf ){
         memcpy(&pNew->aData[8], pCell, 4);
       }else if( leafData ){
-        /* If the tree is a leaf-data tree, and the siblings are leaves, 
-        ** then there is no divider cell in apCell[]. Instead, the divider 
-        ** cell consists of the integer key for the right-most cell of 
+        /* If the tree is a leaf-data tree, and the siblings are leaves,
+        ** then there is no divider cell in apCell[]. Instead, the divider
+        ** cell consists of the integer key for the right-most cell of
         ** the sibling-page assembled above only.
         */
         CellInfo info;
@@ -44680,9 +44680,9 @@ static int balance_nonroot(
         pCell -= 4;
         /* Obscure case for non-leaf-data trees: If the cell at pCell was
         ** previously stored on a leaf node, and its reported size was 4
-        ** bytes, then it may actually be smaller than this 
+        ** bytes, then it may actually be smaller than this
         ** (see btreeParseCellPtr(), 4 bytes is the minimum size of
-        ** any cell). But it is important to pass the correct size to 
+        ** any cell). But it is important to pass the correct size to
         ** insertCell(), so reparse the cell now.
         **
         ** Note that this can never happen in an SQLite data file, as all
@@ -44720,8 +44720,8 @@ static int balance_nonroot(
     ** b-tree structure by one. This is described as the "balance-shallower"
     ** sub-algorithm in some documentation.
     **
-    ** If this is an auto-vacuum database, the call to copyNodeContent() 
-    ** sets all pointer-map entries corresponding to database image pages 
+    ** If this is an auto-vacuum database, the call to copyNodeContent()
+    ** sets all pointer-map entries corresponding to database image pages
     ** for which the pointer is stored within the content being copied.
     **
     ** The second assert below verifies that the child page is defragmented
@@ -44729,13 +44729,13 @@ static int balance_nonroot(
     ** is important if the parent page happens to be page 1 of the database
     ** image.  */
     assert( nNew==1 );
-    assert( apNew[0]->nFree == 
-        (get2byte(&apNew[0]->aData[5])-apNew[0]->cellOffset-apNew[0]->nCell*2) 
+    assert( apNew[0]->nFree ==
+        (get2byte(&apNew[0]->aData[5])-apNew[0]->cellOffset-apNew[0]->nCell*2)
     );
     copyNodeContent(apNew[0], pParent, &rc);
     freePage(apNew[0], &rc);
   }else if( ISAUTOVACUUM ){
-    /* Fix the pointer-map entries for all the cells that were shifted around. 
+    /* Fix the pointer-map entries for all the cells that were shifted around.
     ** There are several different types of pointer-map entries that need to
     ** be dealt with by this routine. Some of these have been set already, but
     ** many have not. The following is a summary:
@@ -44747,7 +44747,7 @@ static int balance_nonroot(
     **      of those.
     **
     **   2) The pointer-map entries associated with the first overflow
-    **      page in any overflow chains used by new divider cells. These 
+    **      page in any overflow chains used by new divider cells. These
     **      have also already been taken care of by the insertCell() code.
     **
     **   3) If the sibling pages are not leaves, then the child pages of
@@ -44785,7 +44785,7 @@ static int balance_nonroot(
           nOverflow = pOld->nOverflow;
           iOverflow = i + !leafData + pOld->aOvfl[0].idx;
         }
-        isDivider = !leafData;  
+        isDivider = !leafData;
       }
 
       assert(nOverflow>0 || iOverflow<i );
@@ -44831,7 +44831,7 @@ static int balance_nonroot(
 
 #if 0
     /* The ptrmapCheckPages() contains assert() statements that verify that
-    ** all pointer map pages are set correctly. This is helpful while 
+    ** all pointer map pages are set correctly. This is helpful while
     ** debugging. This is usually disabled because a corrupt database may
     ** cause an assert() statement to fail.  */
     ptrmapCheckPages(apNew, nNew);
@@ -44865,15 +44865,15 @@ balance_cleanup:
 **
 ** A new child page is allocated and the contents of the current root
 ** page, including overflow cells, are copied into the child. The root
-** page is then overwritten to make it an empty page with the right-child 
+** page is then overwritten to make it an empty page with the right-child
 ** pointer pointing to the new page.
 **
-** Before returning, all pointer-map entries corresponding to pages 
+** Before returning, all pointer-map entries corresponding to pages
 ** that the new child-page now contains pointers to are updated. The
 ** entry corresponding to the new right-child pointer of the root
 ** page is also updated.
 **
-** If successful, *ppChild is set to contain a reference to the child 
+** If successful, *ppChild is set to contain a reference to the child
 ** page and SQLITE_OK is returned. In this case the caller is required
 ** to call releasePage() on *ppChild exactly once. If an error occurs,
 ** an error code is returned and *ppChild is set to 0.
@@ -44887,7 +44887,7 @@ static int balance_deeper(MemPage *pRoot, MemPage **ppChild){
   assert( pRoot->nOverflow>0 );
   assert( sqlite3_mutex_held(pBt->mutex) );
 
-  /* Make pRoot, the root page of the b-tree, writable. Allocate a new 
+  /* Make pRoot, the root page of the b-tree, writable. Allocate a new
   ** page that will become the new right-child of pPage. Copy the contents
   ** of the node stored on pRoot into the new child page.
   */
@@ -44925,7 +44925,7 @@ static int balance_deeper(MemPage *pRoot, MemPage **ppChild){
 /*
 ** The page that pCur currently points to has just been modified in
 ** some way. This function figures out if this modification means the
-** tree needs to be balanced, and if so calls the appropriate balancing 
+** tree needs to be balanced, and if so calls the appropriate balancing
 ** routine. Balancing routines are:
 **
 **   balance_quick()
@@ -44951,7 +44951,7 @@ static int balance(BtCursor *pCur){
         ** balance_deeper() function to create a new child for the root-page
         ** and copy the current contents of the root-page to it. The
         ** next iteration of the do-loop will balance the child page.
-        */ 
+        */
         assert( (balance_deeper_called++)==0 );
         rc = balance_deeper(pPage, &pCur->apPage[1]);
         if( rc==SQLITE_OK ){
@@ -44981,10 +44981,10 @@ static int balance(BtCursor *pCur){
           /* Call balance_quick() to create a new sibling of pPage on which
           ** to store the overflow cell. balance_quick() inserts a new cell
           ** into pParent, which may cause pParent overflow. If this
-          ** happens, the next interation of the do-loop will balance pParent 
+          ** happens, the next interation of the do-loop will balance pParent
           ** use either balance_nonroot() or balance_deeper(). Until this
           ** happens, the overflow cell is stored in the aBalanceQuickSpace[]
-          ** buffer. 
+          ** buffer.
           **
           ** The purpose of the following assert() is to check that only a
           ** single call to balance_quick() is made for each call to this
@@ -45001,24 +45001,24 @@ static int balance(BtCursor *pCur){
           ** modifying the contents of pParent, which may cause pParent to
           ** become overfull or underfull. The next iteration of the do-loop
           ** will balance the parent page to correct this.
-          ** 
+          **
           ** If the parent page becomes overfull, the overflow cell or cells
-          ** are stored in the pSpace buffer allocated immediately below. 
+          ** are stored in the pSpace buffer allocated immediately below.
           ** A subsequent iteration of the do-loop will deal with this by
           ** calling balance_nonroot() (balance_deeper() may be called first,
           ** but it doesn't deal with overflow cells - just moves them to a
-          ** different page). Once this subsequent call to balance_nonroot() 
+          ** different page). Once this subsequent call to balance_nonroot()
           ** has completed, it is safe to release the pSpace buffer used by
-          ** the previous call, as the overflow cell data will have been 
+          ** the previous call, as the overflow cell data will have been
           ** copied either into the body of a database page or into the new
           ** pSpace buffer passed to the latter call to balance_nonroot().
           */
           u8 *pSpace = sqlite3PageMalloc(pCur->pBt->pageSize);
           rc = balance_nonroot(pParent, iIdx, pSpace, iPage==1);
           if( pFree ){
-            /* If pFree is not NULL, it points to the pSpace buffer used 
+            /* If pFree is not NULL, it points to the pSpace buffer used
             ** by a previous call to balance_nonroot(). Its contents are
-            ** now stored either on real database pages or within the 
+            ** now stored either on real database pages or within the
             ** new pSpace buffer, so it may be safely freed here. */
             sqlite3PageFree(pFree);
           }
@@ -45058,8 +45058,8 @@ static int balance(BtCursor *pCur){
 ** MovetoUnpacked() to seek cursor pCur to (pKey, nKey) has already
 ** been performed. seekResult is the search result returned (a negative
 ** number if pCur points at an entry that is smaller than (pKey, nKey), or
-** a positive value if pCur points at an etry that is larger than 
-** (pKey, nKey)). 
+** a positive value if pCur points at an etry that is larger than
+** (pKey, nKey)).
 **
 ** If the seekResult parameter is non-zero, then the caller guarantees that
 ** cursor pCur is pointing at the existing copy of a row that is to be
@@ -45101,7 +45101,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
   ** blob of associated data.  */
   assert( (pKey==0)==(pCur->pKeyInfo==0) );
 
-  /* If this is an insert into a table b-tree, invalidate any incrblob 
+  /* If this is an insert into a table b-tree, invalidate any incrblob
   ** cursors open on the row being replaced (assuming this is a replace
   ** operation - if it is not, the following is a no-op).  */
   if( pCur->pKeyInfo==0 ){
@@ -45112,8 +45112,8 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
   **
   ** In some cases, the call to btreeMoveto() below is a no-op. For
   ** example, when inserting data into a table with auto-generated integer
-  ** keys, the VDBE layer invokes sqlite3BtreeLast() to figure out the 
-  ** integer key to use. It then calls this function to actually insert the 
+  ** keys, the VDBE layer invokes sqlite3BtreeLast() to figure out the
+  ** integer key to use. It then calls this function to actually insert the
   ** data into the intkey B-Tree. In this case btreeMoveto() recognizes
   ** that the cursor is already where it needs to be and returns without
   ** doing any work. To avoid thwarting these optimizations, it is important
@@ -45167,7 +45167,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
   insertCell(pPage, idx, newCell, szNew, 0, 0, &rc);
   assert( rc!=SQLITE_OK || pPage->nCell>0 || pPage->nOverflow>0 );
 
-  /* If no error has occured and pPage has an overflow cell, call balance() 
+  /* If no error has occured and pPage has an overflow cell, call balance()
   ** to redistribute the cells within the tree. Since balance() may move
   ** the cursor, zero the BtCursor.info.nSize and BtCursor.validNKey
   ** variables.
@@ -45193,7 +45193,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
     rc = balance(pCur);
 
     /* Must make sure nOverflow is reset to zero even if the balance()
-    ** fails. Internal data structure corruption will result otherwise. 
+    ** fails. Internal data structure corruption will result otherwise.
     ** Also, set the cursor state to invalid. This stops saveCursorPosition()
     ** from trying to save the current position of the cursor.  */
     pCur->apPage[pCur->iPage]->nOverflow = 0;
@@ -45211,12 +45211,12 @@ end_insert:
 */
 SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor *pCur){
   Btree *p = pCur->pBtree;
-  BtShared *pBt = p->pBt;              
+  BtShared *pBt = p->pBt;
   int rc;                              /* Return code */
   MemPage *pPage;                      /* Page to delete cell from */
   unsigned char *pCell;                /* Pointer to cell to delete */
   int iCellIdx;                        /* Index of cell to delete */
-  int iCellDepth;                      /* Depth of node containing pCell */ 
+  int iCellDepth;                      /* Depth of node containing pCell */
 
   assert( cursorHoldsMutex(pCur) );
   assert( pBt->inTransaction==TRANS_WRITE );
@@ -45225,7 +45225,7 @@ SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor *pCur){
   assert( hasSharedCacheTableLock(p, pCur->pgnoRoot, pCur->pKeyInfo!=0, 2) );
   assert( !hasReadConflicts(p, pCur->pgnoRoot) );
 
-  if( NEVER(pCur->aiIdx[pCur->iPage]>=pCur->apPage[pCur->iPage]->nCell) 
+  if( NEVER(pCur->aiIdx[pCur->iPage]>=pCur->apPage[pCur->iPage]->nCell)
    || NEVER(pCur->eState!=CURSOR_VALID)
   ){
     return SQLITE_ERROR;  /* Something has gone awry. */
@@ -45256,9 +45256,9 @@ SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor *pCur){
   }
 
   /* Save the positions of any other cursors open on this table before
-  ** making any modifications. Make the page containing the entry to be 
-  ** deleted writable. Then free any overflow pages associated with the 
-  ** entry and finally remove the cell itself from within the page.  
+  ** making any modifications. Make the page containing the entry to be
+  ** deleted writable. Then free any overflow pages associated with the
+  ** entry and finally remove the cell itself from within the page.
   */
   rc = saveAllCursors(pBt, pCur->pgnoRoot, pCur);
   if( rc ) return rc;
@@ -45305,7 +45305,7 @@ SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor *pCur){
   ** on the leaf node first. If the balance proceeds far enough up the
   ** tree that we can be sure that any problem in the internal node has
   ** been corrected, so be it. Otherwise, after balancing the leaf node,
-  ** walk the cursor up the tree to the internal node and balance it as 
+  ** walk the cursor up the tree to the internal node and balance it as
   ** well.  */
   rc = balance(pCur);
   if( rc==SQLITE_OK && pCur->iPage>iCellDepth ){
@@ -45429,7 +45429,7 @@ static int btreeCreateTable(Btree *p, int *piTable, int flags){
       }
     }else{
       pRoot = pPageMove;
-    } 
+    }
 
     /* Update the pointer-map and meta-data with the new root-page number. */
     ptrmapPut(pBt, pgnoRoot, PTRMAP_ROOTPAGE, 0, &rc);
@@ -45552,12 +45552,12 @@ SQLITE_PRIVATE int sqlite3BtreeClearTable(Btree *p, int iTable, int *pnChange){
 ** cursors on the table.
 **
 ** If AUTOVACUUM is enabled and the page at iTable is not the last
-** root page in the database file, then the last root page 
+** root page in the database file, then the last root page
 ** in the database file is moved into the slot formerly occupied by
 ** iTable and that last slot formerly occupied by the last root page
 ** is added to the freelist instead of iTable.  In this say, all
 ** root pages are kept at the beginning of the database file, which
-** is necessary for AUTOVACUUM to work right.  *piMoved is set to the 
+** is necessary for AUTOVACUUM to work right.  *piMoved is set to the
 ** page number that used to be the last root page in the file before
 ** the move.  If no page gets moved, *piMoved is set to 0.
 ** The last root page is recorded in meta[3] and the value of
@@ -45574,7 +45574,7 @@ static int btreeDropTable(Btree *p, Pgno iTable, int *piMoved){
   /* It is illegal to drop a table if any cursors are open on the
   ** database. This is because in auto-vacuum mode the backend may
   ** need to move another root-page to fill a gap left by the deleted
-  ** root page. If an open cursor was using this page a problem would 
+  ** root page. If an open cursor was using this page a problem would
   ** occur.
   **
   ** This error is caught long before control reaches this point.
@@ -45605,7 +45605,7 @@ static int btreeDropTable(Btree *p, Pgno iTable, int *piMoved){
 
       if( iTable==maxRootPgno ){
         /* If the table being dropped is the table with the largest root-page
-        ** number in the database, put the root page on the free list. 
+        ** number in the database, put the root page on the free list.
         */
         freePage(pPage, &rc);
         releasePage(pPage);
@@ -45614,7 +45614,7 @@ static int btreeDropTable(Btree *p, Pgno iTable, int *piMoved){
         }
       }else{
         /* The table being dropped does not have the largest root-page
-        ** number in the database. So move the page that does into the 
+        ** number in the database. So move the page that does into the
         ** gap left by the deleted root-page.
         */
         MemPage *pMove;
@@ -45659,12 +45659,12 @@ static int btreeDropTable(Btree *p, Pgno iTable, int *piMoved){
   }else{
     /* If sqlite3BtreeDropTable was called on page 1.
     ** This really never should happen except in a corrupt
-    ** database. 
+    ** database.
     */
     zeroPage(pPage, PTF_INTKEY|PTF_LEAF );
     releasePage(pPage);
   }
-  return rc;  
+  return rc;
 }
 SQLITE_PRIVATE int sqlite3BtreeDropTable(Btree *p, int iTable, int *piMoved){
   int rc;
@@ -45683,7 +45683,7 @@ SQLITE_PRIVATE int sqlite3BtreeDropTable(Btree *p, int iTable, int *piMoved){
 ** is the number of free pages currently in the database.  Meta[1]
 ** through meta[15] are available for use by higher layers.  Meta[0]
 ** is read-only, the others are read/write.
-** 
+**
 ** The schema layer numbers meta values differently.  At the schema
 ** layer (and the SetCookie and ReadCookie opcodes) the number of
 ** free pages is not visible.  So Cookie[0] is the same as Meta[1].
@@ -45741,7 +45741,7 @@ SQLITE_PRIVATE int sqlite3BtreeUpdateMeta(Btree *p, int idx, u32 iMeta){
 ** The first argument, pCur, is a cursor opened on some b-tree. Count the
 ** number of entries in the b-tree and write the result to *pnEntry.
 **
-** SQLITE_OK is returned if the operation is successfully executed. 
+** SQLITE_OK is returned if the operation is successfully executed.
 ** Otherwise, if an error is encountered (i.e. an IO error or database
 ** corruption) an SQLite error code is returned.
 */
@@ -45751,13 +45751,13 @@ SQLITE_PRIVATE int sqlite3BtreeCount(BtCursor *pCur, i64 *pnEntry){
   rc = moveToRoot(pCur);
 
   /* Unless an error occurs, the following loop runs one iteration for each
-  ** page in the B-Tree structure (not including overflow pages). 
+  ** page in the B-Tree structure (not including overflow pages).
   */
   while( rc==SQLITE_OK ){
     int iIdx;                          /* Index of child node in parent */
     MemPage *pPage;                    /* Current page of the b-tree */
 
-    /* If this is a leaf page or the tree is not an int-key tree, then 
+    /* If this is a leaf page or the tree is not an int-key tree, then
     ** this page contains countable entries. Increment the entry counter
     ** accordingly.
     */
@@ -45766,7 +45766,7 @@ SQLITE_PRIVATE int sqlite3BtreeCount(BtCursor *pCur, i64 *pnEntry){
       nEntry += pPage->nCell;
     }
 
-    /* pPage is a leaf node. This loop navigates the cursor so that it 
+    /* pPage is a leaf node. This loop navigates the cursor so that it
     ** points to the first interior cell that it points to the parent of
     ** the next page in the tree that has not yet been visited. The
     ** pCur->aiIdx[pCur->iPage] value is set to the index of the parent cell
@@ -45790,7 +45790,7 @@ SQLITE_PRIVATE int sqlite3BtreeCount(BtCursor *pCur, i64 *pnEntry){
       pPage = pCur->apPage[pCur->iPage];
     }
 
-    /* Descend to the child node of the cell that the cursor currently 
+    /* Descend to the child node of the cell that the cursor currently
     ** points at. This is the right-child if (iIdx==pPage->nCell).
     */
     iIdx = pCur->aiIdx[pCur->iPage];
@@ -45867,7 +45867,7 @@ static int checkRef(IntegrityCk *pCheck, Pgno iPage, char *zContext){
 
 #ifndef SQLITE_OMIT_AUTOVACUUM
 /*
-** Check that the entry in the pointer-map for page iChild maps to 
+** Check that the entry in the pointer-map for page iChild maps to
 ** page iParent, pointer type ptrType. If not, append an error message
 ** to pCheck.
 */
@@ -45890,8 +45890,8 @@ static void checkPtrmap(
   }
 
   if( ePtrmapType!=eType || iPtrmapParent!=iParent ){
-    checkAppendMsg(pCheck, zContext, 
-      "Bad ptr map entry key=%d expected=(%d,%d) got=(%d,%d)", 
+    checkAppendMsg(pCheck, zContext,
+      "Bad ptr map entry key=%d expected=(%d,%d) got=(%d,%d)",
       iChild, eType, iParent, ePtrmapType, iPtrmapParent);
   }
 }
@@ -45973,7 +45973,7 @@ static void checkList(
 ** Do various sanity checks on a single page of a tree.  Return
 ** the tree depth.  Root pages return 0.  Parents of root pages
 ** return 1, and so forth.
-** 
+**
 ** These checks are done:
 **
 **      1.  Make sure that cells and freeblocks do not overlap
@@ -45991,7 +45991,7 @@ static int checkTreePage(
   IntegrityCk *pCheck,  /* Context for the sanity check */
   int iPage,            /* Page number of the page to check */
   char *zParentContext, /* Parent context */
-  i64 *pnParentMinKey, 
+  i64 *pnParentMinKey,
   i64 *pnParentMaxKey
 ){
   MemPage *pPage;
@@ -46025,7 +46025,7 @@ static int checkTreePage(
   pPage->isInit = 0;
   if( (rc = btreeInitPage(pPage))!=0 ){
     assert( rc==SQLITE_CORRUPT );  /* The only possible error from InitPage */
-    checkAppendMsg(pCheck, zContext, 
+    checkAppendMsg(pCheck, zContext,
                    "btreeInitPage() returns error code %d", rc);
     releasePage(pPage);
     return 0;
@@ -46052,13 +46052,13 @@ static int checkTreePage(
     else if( i==0 ) nMinKey = nMaxKey = info.nKey;
     else{
       if( info.nKey <= nMaxKey ){
-        checkAppendMsg(pCheck, zContext, 
+        checkAppendMsg(pCheck, zContext,
             "Rowid %lld out of order (previous was %lld)", info.nKey, nMaxKey);
       }
       nMaxKey = info.nKey;
     }
     assert( sz==info.nPayload );
-    if( (sz>info.nLocal) 
+    if( (sz>info.nLocal)
      && (&pCell[info.iOverflow]<=&pPage->aData[pBt->usableSize])
     ){
       int nPage = (sz - info.nLocal + usableSize - 5)/(usableSize - 4);
@@ -46090,7 +46090,7 @@ static int checkTreePage(
 
   if( !pPage->leaf ){
     pgno = get4byte(&pPage->aData[pPage->hdrOffset+8]);
-    sqlite3_snprintf(sizeof(zContext), zContext, 
+    sqlite3_snprintf(sizeof(zContext), zContext,
                      "On page %d at right child: ", iPage);
 #ifndef SQLITE_OMIT_AUTOVACUUM
     if( pBt->autoVacuum ){
@@ -46099,7 +46099,7 @@ static int checkTreePage(
 #endif
     checkTreePage(pCheck, pgno, zContext, NULL, !pPage->nCell ? NULL : &nMaxKey);
   }
+
   /* For intKey leaf pages, check that the min/max keys are in order
   ** with any left/parent/right pages.
   */
@@ -46109,18 +46109,18 @@ static int checkTreePage(
       /* if we are the left most child page */
       if( !pnParentMaxKey ){
         if( nMaxKey > *pnParentMinKey ){
-          checkAppendMsg(pCheck, zContext, 
+          checkAppendMsg(pCheck, zContext,
               "Rowid %lld out of order (max larger than parent min of %lld)",
               nMaxKey, *pnParentMinKey);
         }
       }else{
         if( nMinKey <= *pnParentMinKey ){
-          checkAppendMsg(pCheck, zContext, 
+          checkAppendMsg(pCheck, zContext,
               "Rowid %lld out of order (min less than parent min of %lld)",
               nMinKey, *pnParentMinKey);
         }
         if( nMaxKey > *pnParentMaxKey ){
-          checkAppendMsg(pCheck, zContext, 
+          checkAppendMsg(pCheck, zContext,
               "Rowid %lld out of order (max larger than parent max of %lld)",
               nMaxKey, *pnParentMaxKey);
         }
@@ -46129,7 +46129,7 @@ static int checkTreePage(
     /* else if we're a right child page */
     } else if( pnParentMaxKey ){
       if( nMinKey <= *pnParentMaxKey ){
-        checkAppendMsg(pCheck, zContext, 
+        checkAppendMsg(pCheck, zContext,
             "Rowid %lld out of order (min less than parent max of %lld)",
             nMinKey, *pnParentMaxKey);
       }
@@ -46158,7 +46158,7 @@ static int checkTreePage(
         size = cellSizePtr(pPage, &data[pc]);
       }
       if( (pc+size-1)>=usableSize ){
-        checkAppendMsg(pCheck, 0, 
+        checkAppendMsg(pCheck, 0,
             "Corruption detected in cell %d on page %d",i,iPage);
       }else{
         for(j=pc+size-1; j>=pc; j--) hit[j]++;
@@ -46186,7 +46186,7 @@ static int checkTreePage(
       }
     }
     if( cnt!=data[hdr+7] ){
-      checkAppendMsg(pCheck, 0, 
+      checkAppendMsg(pCheck, 0,
           "Fragmentation of %d bytes reported as %d on page %d",
           cnt, data[hdr+7], iPage);
     }
@@ -46279,11 +46279,11 @@ SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(
     /* If the database supports auto-vacuum, make sure no tables contain
     ** references to pointer-map pages.
     */
-    if( sCheck.anRef[i]==0 && 
+    if( sCheck.anRef[i]==0 &&
        (PTRMAP_PAGENO(pBt, i)!=i || !pBt->autoVacuum) ){
       checkAppendMsg(&sCheck, 0, "Page %d is never used", i);
     }
-    if( sCheck.anRef[i]!=0 && 
+    if( sCheck.anRef[i]!=0 &&
        (PTRMAP_PAGENO(pBt, i)==i && pBt->autoVacuum) ){
       checkAppendMsg(&sCheck, 0, "Pointer map page %d is referenced", i);
     }
@@ -46295,7 +46295,7 @@ SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(
   ** of the integrity check.
   */
   if( NEVER(nRef != sqlite3PagerRefcount(pBt->pPager)) ){
-    checkAppendMsg(&sCheck, 0, 
+    checkAppendMsg(&sCheck, 0,
       "Outstanding page count goes from %d to %d during this analysis",
       nRef, sqlite3PagerRefcount(pBt->pPager)
     );
@@ -46366,20 +46366,20 @@ SQLITE_PRIVATE int sqlite3BtreeIsInBackup(Btree *p){
 /*
 ** This function returns a pointer to a blob of memory associated with
 ** a single shared-btree. The memory is used by client code for its own
-** purposes (for example, to store a high-level schema associated with 
+** purposes (for example, to store a high-level schema associated with
 ** the shared-btree). The btree layer manages reference counting issues.
 **
 ** The first time this is called on a shared-btree, nBytes bytes of memory
-** are allocated, zeroed, and returned to the caller. For each subsequent 
+** are allocated, zeroed, and returned to the caller. For each subsequent
 ** call the nBytes parameter is ignored and a pointer to the same blob
-** of memory returned. 
+** of memory returned.
 **
 ** If the nBytes parameter is 0 and the blob of memory has not yet been
 ** allocated, a null pointer is returned. If the blob has already been
 ** allocated, it is returned as normal.
 **
-** Just before the shared-btree is closed, the function passed as the 
-** xFree argument when the memory allocation was made is invoked on the 
+** Just before the shared-btree is closed, the function passed as the
+** xFree argument when the memory allocation was made is invoked on the
 ** blob of allocated memory. This function should not call sqlite3_free()
 ** on the memory, the btree layer does that.
 */
@@ -46395,8 +46395,8 @@ SQLITE_PRIVATE void *sqlite3BtreeSchema(Btree *p, int nBytes, void(*xFree)(void
 }
 
 /*
-** Return SQLITE_LOCKED_SHAREDCACHE if another user of the same shared 
-** btree as the argument handle holds an exclusive lock on the 
+** Return SQLITE_LOCKED_SHAREDCACHE if another user of the same shared
+** btree as the argument handle holds an exclusive lock on the
 ** sqlite_master table. Otherwise SQLITE_OK.
 */
 SQLITE_PRIVATE int sqlite3BtreeSchemaLocked(Btree *p){
@@ -46437,11 +46437,11 @@ SQLITE_PRIVATE int sqlite3BtreeLockTable(Btree *p, int iTab, u8 isWriteLock){
 
 #ifndef SQLITE_OMIT_INCRBLOB
 /*
-** Argument pCsr must be a cursor opened for writing on an 
-** INTKEY table currently pointing at a valid table entry. 
+** Argument pCsr must be a cursor opened for writing on an
+** INTKEY table currently pointing at a valid table entry.
 ** This function modifies the data stored as part of that entry.
 **
-** Only the data content may only be modified, it is not possible to 
+** Only the data content may only be modified, it is not possible to
 ** change the length of the data stored. If this function is called with
 ** parameters that attempt to write past the end of the existing data,
 ** no modifications are made and SQLITE_CORRUPT is returned.
@@ -46461,7 +46461,7 @@ SQLITE_PRIVATE int sqlite3BtreePutData(BtCursor *pCsr, u32 offset, u32 amt, void
     return SQLITE_ABORT;
   }
 
-  /* Check some assumptions: 
+  /* Check some assumptions:
   **   (a) the cursor is open for writing,
   **   (b) there is a read/write transaction open,
   **   (c) the connection holds a write-lock on the table (if required),
@@ -46479,8 +46479,8 @@ SQLITE_PRIVATE int sqlite3BtreePutData(BtCursor *pCsr, u32 offset, u32 amt, void
   return accessPayload(pCsr, offset, amt, (unsigned char *)z, 1);
 }
 
-/* 
-** Set a flag on this cursor to cache the locations of pages from the 
+/*
+** Set a flag on this cursor to cache the locations of pages from the
 ** overflow list for the current row. This is used by cursors opened
 ** for incremental blob IO only.
 **
@@ -46511,7 +46511,7 @@ SQLITE_PRIVATE void sqlite3BtreeCacheOverflow(BtCursor *pCur){
 **    May you share freely, never taking more than you give.
 **
 *************************************************************************
-** This file contains the implementation of the sqlite3_backup_XXX() 
+** This file contains the implementation of the sqlite3_backup_XXX()
 ** API functions and the related features.
 */
 
@@ -46552,15 +46552,15 @@ struct sqlite3_backup {
 **   Once it has been created using backup_init(), a single sqlite3_backup
 **   structure may be accessed via two groups of thread-safe entry points:
 **
-**     * Via the sqlite3_backup_XXX() API function backup_step() and 
+**     * Via the sqlite3_backup_XXX() API function backup_step() and
 **       backup_finish(). Both these functions obtain the source database
-**       handle mutex and the mutex associated with the source BtShared 
+**       handle mutex and the mutex associated with the source BtShared
 **       structure, in that order.
 **
 **     * Via the BackupUpdate() and BackupRestart() functions, which are
 **       invoked by the pager layer to report various state changes in
 **       the page cache associated with the source database. The mutex
-**       associated with the source database BtShared structure will always 
+**       associated with the source database BtShared structure will always
 **       be held when either of these functions are invoked.
 **
 **   The other sqlite3_backup_XXX() API functions, backup_remaining() and
@@ -46581,8 +46581,8 @@ struct sqlite3_backup {
 ** in connection handle pDb. If such a database cannot be found, return
 ** a NULL pointer and write an error message to pErrorDb.
 **
-** If the "temp" database is requested, it may need to be opened by this 
-** function. If an error occurs while doing so, return 0 and write an 
+** If the "temp" database is requested, it may need to be opened by this
+** function. If an error occurs while doing so, return 0 and write an
 ** error message to pErrorDb.
 */
 static Btree *findBtree(sqlite3 *pErrorDb, sqlite3 *pDb, const char *zDb){
@@ -46686,7 +46686,7 @@ SQLITE_API sqlite3_backup *sqlite3_backup_init(
 }
 
 /*
-** Argument rc is an SQLite error code. Return true if this error is 
+** Argument rc is an SQLite error code. Return true if this error is
 ** considered fatal if encountered during a backup operation. All errors
 ** are considered fatal except for SQLITE_BUSY and SQLITE_LOCKED.
 */
@@ -46695,8 +46695,8 @@ static int isFatalError(int rc){
 }
 
 /*
-** Parameter zSrcData points to a buffer containing the data for 
-** page iSrcPg from the source database. Copy this data into the 
+** Parameter zSrcData points to a buffer containing the data for
+** page iSrcPg from the source database. Copy this data into the
 ** destination database.
 */
 static int backupOnePage(sqlite3_backup *p, Pgno iSrcPg, const u8 *zSrcData){
@@ -46715,13 +46715,13 @@ static int backupOnePage(sqlite3_backup *p, Pgno iSrcPg, const u8 *zSrcData){
   assert( zSrcData );
 
   /* Catch the case where the destination is an in-memory database and the
-  ** page sizes of the source and destination differ. 
+  ** page sizes of the source and destination differ.
   */
   if( nSrcPgsz!=nDestPgsz && sqlite3PagerIsMemdb(sqlite3BtreePager(p->pDest)) ){
     rc = SQLITE_READONLY;
   }
 
-  /* This loop runs once for each destination page spanned by the source 
+  /* This loop runs once for each destination page spanned by the source
   ** page. For each iteration, variable iOff is set to the byte offset
   ** of the destination page.
   */
@@ -46740,7 +46740,7 @@ static int backupOnePage(sqlite3_backup *p, Pgno iSrcPg, const u8 *zSrcData){
       ** Then clear the Btree layer MemPage.isInit flag. Both this module
       ** and the pager code use this trick (clearing the first byte
       ** of the page 'extra' space to invalidate the Btree layers
-      ** cached parse of the page). MemPage.isInit is marked 
+      ** cached parse of the page). MemPage.isInit is marked
       ** "MUST BE FIRST" for this purpose.
       */
       memcpy(zOut, zIn, nCopy);
@@ -46757,7 +46757,7 @@ static int backupOnePage(sqlite3_backup *p, Pgno iSrcPg, const u8 *zSrcData){
 ** exactly iSize bytes. If pFile is not larger than iSize bytes, then
 ** this function is a no-op.
 **
-** Return SQLITE_OK if everything is successful, or an SQLite error 
+** Return SQLITE_OK if everything is successful, or an SQLite error
 ** code if an error occurs.
 */
 static int backupTruncateFile(sqlite3_file *pFile, i64 iSize){
@@ -46813,7 +46813,7 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){
 
     /* Lock the destination database, if it is not locked already. */
     if( SQLITE_OK==rc && p->bDestLocked==0
-     && SQLITE_OK==(rc = sqlite3BtreeBeginTrans(p->pDest, 2)) 
+     && SQLITE_OK==(rc = sqlite3BtreeBeginTrans(p->pDest, 2))
     ){
       p->bDestLocked = 1;
       sqlite3BtreeGetMeta(p->pDest, BTREE_SCHEMA_VERSION, &p->iDestSchema);
@@ -46827,7 +46827,7 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){
       rc = sqlite3BtreeBeginTrans(p->pSrc, 0);
       bCloseTrans = 1;
     }
-  
+
     /* Now that there is a read-lock on the source database, query the
     ** source pager for the number of pages in the database.
     */
@@ -46855,31 +46855,31 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){
         attachBackupObject(p);
       }
     }
-  
+
     /* Update the schema version field in the destination database. This
     ** is to make sure that the schema-version really does change in
     ** the case where the source and destination databases have the
     ** same schema version.
     */
-    if( rc==SQLITE_DONE 
+    if( rc==SQLITE_DONE
      && (rc = sqlite3BtreeUpdateMeta(p->pDest,1,p->iDestSchema+1))==SQLITE_OK
     ){
       const int nSrcPagesize = sqlite3BtreeGetPageSize(p->pSrc);
       const int nDestPagesize = sqlite3BtreeGetPageSize(p->pDest);
       int nDestTruncate;
-  
+
       if( p->pDestDb ){
         sqlite3ResetInternalSchema(p->pDestDb, 0);
       }
 
       /* Set nDestTruncate to the final number of pages in the destination
       ** database. The complication here is that the destination page
-      ** size may be different to the source page size. 
+      ** size may be different to the source page size.
       **
-      ** If the source page size is smaller than the destination page size, 
+      ** If the source page size is smaller than the destination page size,
       ** round up. In this case the call to sqlite3OsTruncate() below will
       ** fix the size of the file. However it is important to call
-      ** sqlite3PagerTruncateImage() here so that any pages in the 
+      ** sqlite3PagerTruncateImage() here so that any pages in the
       ** destination file that lie beyond the nDestTruncate page mark are
       ** journalled by PagerCommitPhaseOne() before they are destroyed
       ** by the file truncation.
@@ -46901,7 +46901,7 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){
         **
         **   * The destination may need to be truncated, and
         **
-        **   * Data stored on the pages immediately following the 
+        **   * Data stored on the pages immediately following the
         **     pending-byte page in the source database may need to be
         **     copied into the destination database.
         */
@@ -46920,8 +46920,8 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){
           i64 iOff;
           i64 iEnd = MIN(PENDING_BYTE + nDestPagesize, iSize);
           for(
-            iOff=PENDING_BYTE+nSrcPagesize; 
-            rc==SQLITE_OK && iOff<iEnd; 
+            iOff=PENDING_BYTE+nSrcPagesize;
+            rc==SQLITE_OK && iOff<iEnd;
             iOff+=nSrcPagesize
           ){
             PgHdr *pSrcPg = 0;
@@ -46937,7 +46937,7 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){
       }else{
         rc = sqlite3PagerCommitPhaseOne(pDestPager, 0, 0);
       }
-  
+
       /* Finish committing the transaction to the destination database. */
       if( SQLITE_OK==rc
        && SQLITE_OK==(rc = sqlite3BtreeCommitPhaseTwo(p->pDest))
@@ -46945,7 +46945,7 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){
         rc = SQLITE_DONE;
       }
     }
-  
+
     /* If bCloseTrans is true, then this function opened a read transaction
     ** on the source database. Close the read transaction here. There is
     ** no need to check the return values of the btree methods here, as
@@ -46957,7 +46957,7 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){
       TESTONLY( rc2 |= ) sqlite3BtreeCommitPhaseTwo(p->pSrc);
       assert( rc2==SQLITE_OK );
     }
-  
+
     p->rc = rc;
   }
   if( p->pDestDb ){
@@ -47025,7 +47025,7 @@ SQLITE_API int sqlite3_backup_remaining(sqlite3_backup *p){
 }
 
 /*
-** Return the total number of pages in the source database as of the most 
+** Return the total number of pages in the source database as of the most
 ** recent call to sqlite3_backup_step().
 */
 SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p){
@@ -47034,7 +47034,7 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p){
 
 /*
 ** This function is called after the contents of page iPage of the
-** source database have been modified. If page iPage has already been 
+** source database have been modified. If page iPage has already been
 ** copied into the destination database, then the data written to the
 ** destination is now invalidated. The destination copy of iPage needs
 ** to be updated with the new data before the backup operation is
@@ -47066,7 +47066,7 @@ SQLITE_PRIVATE void sqlite3BackupUpdate(sqlite3_backup *pBackup, Pgno iPage, con
 ** Restart the backup process. This is called when the pager layer
 ** detects that the database has been modified by an external database
 ** connection. In this case there is no way of knowing which of the
-** pages that have been copied into the destination database are still 
+** pages that have been copied into the destination database are still
 ** valid and which are not, so the entire process needs to be restarted.
 **
 ** It is assumed that the mutex associated with the BtShared object
@@ -47086,8 +47086,8 @@ SQLITE_PRIVATE void sqlite3BackupRestart(sqlite3_backup *pBackup){
 ** Copy the complete content of pBtFrom into pBtTo.  A transaction
 ** must be active for both files.
 **
-** The size of file pTo may be reduced by this operation. If anything 
-** goes wrong, the transaction on pTo is rolled back. If successful, the 
+** The size of file pTo may be reduced by this operation. If anything
+** goes wrong, the transaction on pTo is rolled back. If successful, the
 ** transaction is committed before returning.
 */
 SQLITE_PRIVATE int sqlite3BtreeCopyFile(Btree *pTo, Btree *pFrom){
@@ -47109,9 +47109,9 @@ SQLITE_PRIVATE int sqlite3BtreeCopyFile(Btree *pTo, Btree *pFrom){
 
   /* 0x7FFFFFFF is the hard limit for the number of pages in a database
   ** file. By passing this as the number of pages to copy to
-  ** sqlite3_backup_step(), we can guarantee that the copy finishes 
+  ** sqlite3_backup_step(), we can guarantee that the copy finishes
   ** within a single call (unless an error occurs). The assert() statement
-  ** checks this assumption - (p->rc) should be set to either SQLITE_DONE 
+  ** checks this assumption - (p->rc) should be set to either SQLITE_DONE
   ** or an error code.
   */
   sqlite3_backup_step(&b, 0x7FFFFFFF);
@@ -47191,23 +47191,23 @@ SQLITE_PRIVATE int sqlite3VdbeChangeEncoding(Mem *pMem, int desiredEnc){
 }
 
 /*
-** Make sure pMem->z points to a writable allocation of at least 
+** Make sure pMem->z points to a writable allocation of at least
 ** n bytes.
 **
 ** If the memory cell currently contains string or blob data
-** and the third argument passed to this function is true, the 
+** and the third argument passed to this function is true, the
 ** current content of the cell is preserved. Otherwise, it may
-** be discarded.  
+** be discarded.
 **
 ** This function sets the MEM_Dyn flag and clears any xDel callback.
-** It also clears MEM_Ephem and MEM_Static. If the preserve flag is 
+** It also clears MEM_Ephem and MEM_Static. If the preserve flag is
 ** not set, Mem.n is zeroed.
 */
 SQLITE_PRIVATE int sqlite3VdbeMemGrow(Mem *pMem, int n, int preserve){
   assert( 1 >=
     ((pMem->zMalloc && pMem->zMalloc==pMem->z) ? 1 : 0) +
-    (((pMem->flags&MEM_Dyn)&&pMem->xDel) ? 1 : 0) + 
-    ((pMem->flags&MEM_Ephem) ? 1 : 0) + 
+    (((pMem->flags&MEM_Dyn)&&pMem->xDel) ? 1 : 0) +
+    ((pMem->flags&MEM_Ephem) ? 1 : 0) +
     ((pMem->flags&MEM_Static) ? 1 : 0)
   );
   assert( (pMem->flags&MEM_RowSet)==0 );
@@ -47346,7 +47346,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemStringify(Mem *pMem, int enc){
   /* For a Real or Integer, use sqlite3_mprintf() to produce the UTF-8
   ** string representation of the value. Then, if the required encoding
   ** is UTF-16le or UTF-16be do a translation.
-  ** 
+  **
   ** FIX ME: It would be better if sqlite3_snprintf() could do UTF-16.
   */
   if( fg & MEM_Int ){
@@ -47699,7 +47699,7 @@ SQLITE_PRIVATE void sqlite3VdbeMemSetRowSet(Mem *pMem){
     pMem->flags = MEM_Null;
   }else{
     assert( pMem->zMalloc );
-    pMem->u.pRowSet = sqlite3RowSetInit(db, pMem->zMalloc, 
+    pMem->u.pRowSet = sqlite3RowSetInit(db, pMem->zMalloc,
                                        sqlite3DbMallocSize(db, pMem->zMalloc));
     assert( pMem->u.pRowSet!=0 );
     pMem->flags = MEM_RowSet;
@@ -47719,7 +47719,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemTooBig(Mem *p){
     }
     return n>p->db->aLimit[SQLITE_LIMIT_LENGTH];
   }
-  return 0; 
+  return 0;
 }
 
 /*
@@ -47789,8 +47789,8 @@ SQLITE_PRIVATE void sqlite3VdbeMemMove(Mem *pTo, Mem *pFrom){
 ** Change the value of a Mem to be a string or a BLOB.
 **
 ** The memory management strategy depends on the value of the xDel
-** parameter. If the value passed is SQLITE_TRANSIENT, then the 
-** string is copied into a (possibly existing) buffer managed by the 
+** parameter. If the value passed is SQLITE_TRANSIENT, then the
+** string is copied into a (possibly existing) buffer managed by the
 ** Mem structure. Otherwise, any existing buffer is freed and the
 ** pointer copied.
 **
@@ -47899,7 +47899,7 @@ SQLITE_PRIVATE int sqlite3MemCompare(const Mem *pMem1, const Mem *pMem2, const C
   f2 = pMem2->flags;
   combined_flags = f1|f2;
   assert( (combined_flags & MEM_RowSet)==0 );
+
   /* If one value is NULL, it is less than the other. If both values
   ** are NULL, return 0.
   */
@@ -47954,7 +47954,7 @@ SQLITE_PRIVATE int sqlite3MemCompare(const Mem *pMem1, const Mem *pMem2, const C
     }
 
     assert( pMem1->enc==pMem2->enc );
-    assert( pMem1->enc==SQLITE_UTF8 || 
+    assert( pMem1->enc==SQLITE_UTF8 ||
             pMem1->enc==SQLITE_UTF16LE || pMem1->enc==SQLITE_UTF16BE );
 
     /* The collation sequence must be defined at this point, even if
@@ -47990,7 +47990,7 @@ SQLITE_PRIVATE int sqlite3MemCompare(const Mem *pMem1, const Mem *pMem2, const C
     /* If a NULL pointer was passed as the collate function, fall through
     ** to the blob case and use memcmp().  */
   }
+
   /* Both values must be blobs.  Compare using memcmp().  */
   rc = memcmp(pMem1->z, pMem2->z, (pMem1->n>pMem2->n)?pMem2->n:pMem1->n);
   if( rc==0 ){
@@ -48025,7 +48025,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemFromBtree(
 
   assert( sqlite3BtreeCursorIsValid(pCur) );
 
-  /* Note: the calls to BtreeKeyFetch() and DataFetch() below assert() 
+  /* Note: the calls to BtreeKeyFetch() and DataFetch() below assert()
   ** that both the BtShared and database handle mutexes are held. */
   assert( (pMem->flags & MEM_RowSet)==0 );
   if( key ){
@@ -48343,12 +48343,12 @@ SQLITE_PRIVATE void sqlite3VdbeTrace(Vdbe *p, FILE *trace){
 #endif
 
 /*
-** Resize the Vdbe.aOp array so that it is at least one op larger than 
+** Resize the Vdbe.aOp array so that it is at least one op larger than
 ** it was.
 **
 ** If an out-of-memory error occurs while resizing the array, return
-** SQLITE_NOMEM. In this case Vdbe.aOp and Vdbe.nOpAlloc remain 
-** unchanged (this is so that any opcodes already allocated can be 
+** SQLITE_NOMEM. In this case Vdbe.aOp and Vdbe.nOpAlloc remain
+** unchanged (this is so that any opcodes already allocated can be
 ** correctly deallocated along with the rest of the Vdbe).
 */
 static int growOpArray(Vdbe *p){
@@ -48509,19 +48509,19 @@ SQLITE_PRIVATE void sqlite3VdbeRunOnlyOnce(Vdbe *p){
 
 /*
 ** The following type and function are used to iterate through all opcodes
-** in a Vdbe main program and each of the sub-programs (triggers) it may 
+** in a Vdbe main program and each of the sub-programs (triggers) it may
 ** invoke directly or indirectly. It should be used as follows:
 **
 **   Op *pOp;
 **   VdbeOpIter sIter;
 **
 **   memset(&sIter, 0, sizeof(sIter));
-**   sIter.v = v;                            // v is of type Vdbe* 
+**   sIter.v = v;                            // v is of type Vdbe*
 **   while( (pOp = opIterNext(&sIter)) ){
 **     // Do something with pOp
 **   }
 **   sqlite3DbFree(v->db, sIter.apSub);
-** 
+**
 */
 typedef struct VdbeOpIter VdbeOpIter;
 struct VdbeOpIter {
@@ -48554,7 +48554,7 @@ static Op *opIterNext(VdbeOpIter *p){
       p->iSub++;
       p->iAddr = 0;
     }
-  
+
     if( pRet->p4type==P4_SUBPROGRAM ){
       int nByte = (p->nSub+1)*sizeof(SubProgram*);
       int j;
@@ -48604,11 +48604,11 @@ SQLITE_PRIVATE int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
 
   while( (pOp = opIterNext(&sIter))!=0 ){
     int opcode = pOp->opcode;
-    if( opcode==OP_Destroy || opcode==OP_VUpdate || opcode==OP_VRename 
+    if( opcode==OP_Destroy || opcode==OP_VUpdate || opcode==OP_VRename
 #ifndef SQLITE_OMIT_FOREIGN_KEY
-     || (opcode==OP_FkCounter && pOp->p1==0 && pOp->p2==1) 
+     || (opcode==OP_FkCounter && pOp->p1==0 && pOp->p2==1)
 #endif
-     || ((opcode==OP_Halt || opcode==OP_HaltIfNull) 
+     || ((opcode==OP_Halt || opcode==OP_HaltIfNull)
       && (pOp->p1==SQLITE_CONSTRAINT && pOp->p2==OE_Abort))
     ){
       hasAbort = 1;
@@ -48633,8 +48633,8 @@ SQLITE_PRIVATE int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
 **
 ** This routine is called once after all opcodes have been inserted.
 **
-** Variable *pMaxFuncArgs is set to the maximum value of any P2 argument 
-** to an OP_Function, OP_AggStep or OP_VFilter opcode. This is used by 
+** Variable *pMaxFuncArgs is set to the maximum value of any P2 argument
+** to an OP_Function, OP_AggStep or OP_VFilter opcode. This is used by
 ** sqlite3VdbeMakeReady() to size the Vdbe.apArg[] array.
 **
 ** The Op.opflags field is set on all opcodes.
@@ -48687,12 +48687,12 @@ SQLITE_PRIVATE int sqlite3VdbeCurrentAddr(Vdbe *p){
 /*
 ** This function returns a pointer to the array of opcodes associated with
 ** the Vdbe passed as the first argument. It is the callers responsibility
-** to arrange for the returned array to be eventually freed using the 
+** to arrange for the returned array to be eventually freed using the
 ** vdbeFreeOpArray() function.
 **
 ** Before returning, *pnOp is set to the number of entries in the returned
-** array. Also, *pnMaxArg is set to the larger of its current value and 
-** the number of entries in the Vdbe.apArg[] array required to execute the 
+** array. Also, *pnMaxArg is set to the larger of its current value and
+** the number of entries in the Vdbe.apArg[] array required to execute the
 ** returned program.
 */
 SQLITE_PRIVATE VdbeOp *sqlite3VdbeTakeOpArray(Vdbe *p, int *pnOp, int *pnMaxArg){
@@ -48861,8 +48861,8 @@ static void freeP4(sqlite3 *db, int p4type, void *p4){
 
 /*
 ** Free the space allocated for aOp and any p4 values allocated for the
-** opcodes contained within. If aOp is not NULL it is assumed to contain 
-** nOp entries. 
+** opcodes contained within. If aOp is not NULL it is assumed to contain
+** nOp entries.
 */
 static void vdbeFreeOpArray(sqlite3 *db, Op *aOp, int nOp){
   if( aOp ){
@@ -48871,7 +48871,7 @@ static void vdbeFreeOpArray(sqlite3 *db, Op *aOp, int nOp){
       freeP4(db, pOp->p4type, pOp->p4.p);
 #ifdef SQLITE_DEBUG
       sqlite3DbFree(db, pOp->zComment);
-#endif     
+#endif
     }
   }
   sqlite3DbFree(db, aOp);
@@ -48938,10 +48938,10 @@ SQLITE_PRIVATE void sqlite3VdbeChangeToNoop(Vdbe *p, int addr, int N){
 ** A copy is made of the KeyInfo structure into memory obtained from
 ** sqlite3_malloc, to be freed when the Vdbe is finalized.
 ** n==P4_KEYINFO_HANDOFF indicates that zP4 points to a KeyInfo structure
-** stored in memory that the caller has obtained from sqlite3_malloc. The 
+** stored in memory that the caller has obtained from sqlite3_malloc. The
 ** caller should not free the allocation, it will be freed when the Vdbe is
 ** finalized.
-** 
+**
 ** Other values of n (P4_STATIC, P4_COLLSEQ etc.) indicate that zP4 points
 ** to a string or structure that is guaranteed to exist for the lifetime of
 ** the Vdbe. In these cases we can just copy the pointer.
@@ -49216,7 +49216,7 @@ SQLITE_PRIVATE void sqlite3VdbePrintOp(FILE *pOut, int pc, Op *pOp){
   static const char *zFormat1 = "%4d %-13s %4d %4d %4d %-4s %.2X %s\n";
   if( pOut==0 ) pOut = stdout;
   zP4 = displayP4(pOp, zPtr, sizeof(zPtr));
-  fprintf(pOut, zFormat1, pc, 
+  fprintf(pOut, zFormat1, pc,
       sqlite3OpcodeName(pOp->opcode), pOp->p1, pOp->p2, pOp->p3, zP4, pOp->p5,
 #ifdef SQLITE_DEBUG
       pOp->zComment ? pOp->zComment : ""
@@ -49240,15 +49240,15 @@ static void releaseMemArray(Mem *p, int N){
       assert( (&p[1])==pEnd || p[0].db==p[1].db );
 
       /* This block is really an inlined version of sqlite3VdbeMemRelease()
-      ** that takes advantage of the fact that the memory cell value is 
+      ** that takes advantage of the fact that the memory cell value is
       ** being set to NULL after releasing any dynamic resources.
       **
-      ** The justification for duplicating code is that according to 
-      ** callgrind, this causes a certain test case to hit the CPU 4.7 
-      ** percent less (x86 linux, gcc version 4.1.2, -O6) than if 
+      ** The justification for duplicating code is that according to
+      ** callgrind, this causes a certain test case to hit the CPU 4.7
+      ** percent less (x86 linux, gcc version 4.1.2, -O6) than if
       ** sqlite3MemRelease() were called from here. With -O2, this jumps
-      ** to 6.6 percent. The test case is inserting 1000 rows into a table 
-      ** with no indexes using a single prepared INSERT statement, bind() 
+      ** to 6.6 percent. The test case is inserting 1000 rows into a table
+      ** with no indexes using a single prepared INSERT statement, bind()
       ** and reset(). Inserts are grouped into a transaction.
       */
       if( p->flags&(MEM_Agg|MEM_Dyn|MEM_Frame|MEM_RowSet) ){
@@ -49382,7 +49382,7 @@ SQLITE_PRIVATE int sqlite3VdbeList(
       pMem->type = SQLITE_INTEGER;
       pMem->u.i = i;                                /* Program counter */
       pMem++;
-  
+
       pMem->flags = MEM_Static|MEM_Str|MEM_Term;
       pMem->z = (char*)sqlite3OpcodeName(pOp->opcode);  /* Opcode */
       assert( pMem->z!=0 );
@@ -49455,7 +49455,7 @@ SQLITE_PRIVATE int sqlite3VdbeList(
       pMem->type = SQLITE_TEXT;
       pMem->enc = SQLITE_UTF8;
       pMem++;
-  
+
 #ifdef SQLITE_DEBUG
       if( pOp->zComment ){
         pMem->flags = MEM_Str|MEM_Term;
@@ -49570,7 +49570,7 @@ static void *allocSpace(
 ** Prepare a virtual machine for execution.  This involves things such
 ** as allocating stack space and initializing the program counter.
 ** After the VDBE has be prepped, it can be executed by one or more
-** calls to sqlite3VdbeExec().  
+** calls to sqlite3VdbeExec().
 **
 ** This is the only way to move a VDBE from VDBE_MAGIC_INIT to
 ** VDBE_MAGIC_RUN.
@@ -49578,7 +49578,7 @@ static void *allocSpace(
 ** This function may be called more than once on a single virtual machine.
 ** The first call is made while compiling the SQL statement. Subsequent
 ** calls are made as part of the process of resetting a statement to be
-** re-executed (from a call to sqlite3_reset()). The nVar, nMem, nCursor 
+** re-executed (from a call to sqlite3_reset()). The nVar, nMem, nCursor
 ** and isExplain parameters are only passed correct values the first time
 ** the function is called. On subsequent calls, from sqlite3_reset(), nVar
 ** is passed -1 and nMem, nCursor and isExplain are all passed zero.
@@ -49608,7 +49608,7 @@ SQLITE_PRIVATE void sqlite3VdbeMakeReady(
   /* For each cursor required, also allocate a memory cell. Memory
   ** cells (nMem+1-nCursor)..nMem, inclusive, will never be used by
   ** the vdbe program. Instead they are used to allocate space for
-  ** VdbeCursor/BtCursor structures. The blob of memory associated with 
+  ** VdbeCursor/BtCursor structures. The blob of memory associated with
   ** cursor 0 is stored in memory cell nMem. Memory cell (nMem-1)
   ** stores the blob of memory associated with cursor 1, etc.
   **
@@ -49616,7 +49616,7 @@ SQLITE_PRIVATE void sqlite3VdbeMakeReady(
   */
   nMem += nCursor;
 
-  /* Allocate space for memory registers, SQL variables, VDBE cursors and 
+  /* Allocate space for memory registers, SQL variables, VDBE cursors and
   ** an array to marshal SQL function arguments in. This is only done the
   ** first time this function is called for a given VDBE, not when it is
   ** being called from sqlite3_reset() to reset the virtual machine.
@@ -49636,10 +49636,10 @@ SQLITE_PRIVATE void sqlite3VdbeMakeReady(
     assert( EIGHT_BYTE_ALIGNMENT(zCsr) );
 
     /* Memory for registers, parameters, cursor, etc, is allocated in two
-    ** passes.  On the first pass, we try to reuse unused space at the 
+    ** passes.  On the first pass, we try to reuse unused space at the
     ** end of the opcode array.  If we are unable to satisfy all memory
     ** requirements by reusing the opcode array tail, then the second
-    ** pass will fill in the rest using a fresh allocation.  
+    ** pass will fill in the rest using a fresh allocation.
     **
     ** This two-pass approach that reuses as much memory as possible from
     ** the leftover space at the end of the opcode array can significantly
@@ -49704,7 +49704,7 @@ SQLITE_PRIVATE void sqlite3VdbeMakeReady(
 }
 
 /*
-** Close a VDBE cursor and release all the resources that cursor 
+** Close a VDBE cursor and release all the resources that cursor
 ** happens to hold.
 */
 SQLITE_PRIVATE void sqlite3VdbeFreeCursor(Vdbe *p, VdbeCursor *pCx){
@@ -49750,7 +49750,7 @@ SQLITE_PRIVATE int sqlite3VdbeFrameRestore(VdbeFrame *pFrame){
 /*
 ** Close all cursors.
 **
-** Also release any dynamic memory held by the VM in the Vdbe.aMem memory 
+** Also release any dynamic memory held by the VM in the Vdbe.aMem memory
 ** cell array. This is necessary as the memory cell array may contain
 ** pointers to VdbeFrame objects, which may in turn contain pointers to
 ** open cursors.
@@ -49790,7 +49790,7 @@ static void Cleanup(Vdbe *p){
   sqlite3 *db = p->db;
 
 #ifdef SQLITE_DEBUG
-  /* Execute assert() statements to ensure that the Vdbe.apCsr[] and 
+  /* Execute assert() statements to ensure that the Vdbe.apCsr[] and
   ** Vdbe.aMem[] arrays have already been cleaned up.  */
   int i;
   for(i=0; i<p->nCursor; i++) assert( p->apCsr==0 || p->apCsr[i]==0 );
@@ -49871,15 +49871,15 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
   int needXcommit = 0;
 
 #ifdef SQLITE_OMIT_VIRTUALTABLE
-  /* With this option, sqlite3VtabSync() is defined to be simply 
-  ** SQLITE_OK so p is not used. 
+  /* With this option, sqlite3VtabSync() is defined to be simply
+  ** SQLITE_OK so p is not used.
   */
   UNUSED_PARAMETER(p);
 #endif
 
   /* Before doing anything else, call the xSync() callback for any
   ** virtual module tables written in this transaction. This has to
-  ** be done before determining whether a master journal file is 
+  ** be done before determining whether a master journal file is
   ** required, as an xSync() callback may add an attached database
   ** to the transaction.
   */
@@ -49889,12 +49889,12 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
   }
 
   /* This loop determines (a) if the commit hook should be invoked and
-  ** (b) how many database files have open write transactions, not 
-  ** including the temp database. (b) is important because if more than 
+  ** (b) how many database files have open write transactions, not
+  ** including the temp database. (b) is important because if more than
   ** one database file has an open write transaction, a master journal
   ** file is required for an atomic commit.
-  */ 
-  for(i=0; i<db->nDb; i++){ 
+  */
+  for(i=0; i<db->nDb; i++){
     Btree *pBt = db->aDb[i].pBt;
     if( sqlite3BtreeIsInTrans(pBt) ){
       needXcommit = 1;
@@ -49915,8 +49915,8 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
   ** master-journal.
   **
   ** If the return value of sqlite3BtreeGetFilename() is a zero length
-  ** string, it means the main database is :memory: or a temp file.  In 
-  ** that case we do not support atomic multi-file commits, so use the 
+  ** string, it means the main database is :memory: or a temp file.  In
+  ** that case we do not support atomic multi-file commits, so use the
   ** simple case then too.
   */
   if( 0==sqlite3Strlen30(sqlite3BtreeGetFilename(db->aDb[0].pBt))
@@ -49929,7 +49929,7 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
       }
     }
 
-    /* Do the commit only if all databases successfully complete phase 1. 
+    /* Do the commit only if all databases successfully complete phase 1.
     ** If one of the BtreeCommitPhaseOne() calls fails, this indicates an
     ** IO error while deleting or truncating a journal file. It is unlikely,
     ** but could happen. In this case abandon processing and return the error.
@@ -49972,7 +49972,7 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
     }while( rc==SQLITE_OK && res );
     if( rc==SQLITE_OK ){
       /* Open the master journal. */
-      rc = sqlite3OsOpenMalloc(pVfs, zMaster, &pMaster, 
+      rc = sqlite3OsOpenMalloc(pVfs, zMaster, &pMaster,
           SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|
           SQLITE_OPEN_EXCLUSIVE|SQLITE_OPEN_MASTER_JOURNAL, 0
       );
@@ -49981,7 +49981,7 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
       sqlite3DbFree(db, zMaster);
       return rc;
     }
+
     /* Write the name of each database file in the transaction into the new
     ** master journal file. If an error occurs at this point close
     ** and delete the master journal file. All the individual journal files
@@ -50012,7 +50012,7 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
     /* Sync the master journal file. If the IOCAP_SEQUENTIAL device
     ** flag is set this is not required.
     */
-    if( needSync 
+    if( needSync
      && 0==(sqlite3OsDeviceCharacteristics(pMaster)&SQLITE_IOCAP_SEQUENTIAL)
      && SQLITE_OK!=(rc = sqlite3OsSync(pMaster, SQLITE_SYNC_NORMAL))
     ){
@@ -50032,7 +50032,7 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
     ** in case the master journal file name was written into the journal
     ** file before the failure occurred.
     */
-    for(i=0; rc==SQLITE_OK && i<db->nDb; i++){ 
+    for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
       Btree *pBt = db->aDb[i].pBt;
       if( pBt ){
         rc = sqlite3BtreeCommitPhaseOne(pBt, zMaster);
@@ -50064,7 +50064,7 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
     */
     disable_simulated_io_errors();
     sqlite3BeginBenignMalloc();
-    for(i=0; i<db->nDb; i++){ 
+    for(i=0; i<db->nDb; i++){
       Btree *pBt = db->aDb[i].pBt;
       if( pBt ){
         sqlite3BtreeCommitPhaseTwo(pBt);
@@ -50080,7 +50080,7 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
   return rc;
 }
 
-/* 
+/*
 ** This routine checks that the sqlite3.activeVdbeCnt count variable
 ** matches the number of vdbe's in the list sqlite3.pVdbe that are
 ** currently active. An assertion fails if the two counts do not match.
@@ -50110,7 +50110,7 @@ static void checkActiveVdbeCnt(sqlite3 *db){
 #endif
 
 /*
-** For every Btree that in database connection db which 
+** For every Btree that in database connection db which
 ** has been modified, "trip" or invalidate each cursor in
 ** that Btree might have been modified so that the cursor
 ** can never be used again.  This happens when a rollback
@@ -50139,17 +50139,17 @@ static void invalidateCursorsOnModifiedBtrees(sqlite3 *db){
 ** If the Vdbe passed as the first argument opened a statement-transaction,
 ** close it now. Argument eOp must be either SAVEPOINT_ROLLBACK or
 ** SAVEPOINT_RELEASE. If it is SAVEPOINT_ROLLBACK, then the statement
-** transaction is rolled back. If eOp is SAVEPOINT_RELEASE, then the 
+** transaction is rolled back. If eOp is SAVEPOINT_RELEASE, then the
 ** statement transaction is commtted.
 **
-** If an IO error occurs, an SQLITE_IOERR_XXX error code is returned. 
+** If an IO error occurs, an SQLITE_IOERR_XXX error code is returned.
 ** Otherwise SQLITE_OK.
 */
 SQLITE_PRIVATE int sqlite3VdbeCloseStatement(Vdbe *p, int eOp){
   sqlite3 *const db = p->db;
   int rc = SQLITE_OK;
 
-  /* If p->iStatement is greater than zero, then this Vdbe opened a 
+  /* If p->iStatement is greater than zero, then this Vdbe opened a
   ** statement transaction that should be closed here. The only exception
   ** is that an IO error may have occured, causing an emergency rollback.
   ** In this case (db->nStatement==0), and there is nothing to do.
@@ -50162,7 +50162,7 @@ SQLITE_PRIVATE int sqlite3VdbeCloseStatement(Vdbe *p, int eOp){
     assert( db->nStatement>0 );
     assert( p->iStatement==(db->nStatement+db->nSavepoint) );
 
-    for(i=0; i<db->nDb; i++){ 
+    for(i=0; i<db->nDb; i++){
       int rc2 = SQLITE_OK;
       Btree *pBt = db->aDb[i].pBt;
       if( pBt ){
@@ -50180,8 +50180,8 @@ SQLITE_PRIVATE int sqlite3VdbeCloseStatement(Vdbe *p, int eOp){
     db->nStatement--;
     p->iStatement = 0;
 
-    /* If the statement transaction is being rolled back, also restore the 
-    ** database handles deferred constraint counter to the value it had when 
+    /* If the statement transaction is being rolled back, also restore the
+    ** database handles deferred constraint counter to the value it had when
     ** the statement transaction was opened.  */
     if( eOp==SAVEPOINT_ROLLBACK ){
       db->nDeferredCons = p->nStmtDefCons;
@@ -50199,7 +50199,7 @@ SQLITE_PRIVATE int sqlite3VdbeCloseStatement(Vdbe *p, int eOp){
 **
 ** If SQLite is not threadsafe but does support shared-cache mode, then
 ** sqlite3BtreeEnterAll() is invoked to set the BtShared.db variables
-** of all of BtShared structures accessible via the database handle 
+** of all of BtShared structures accessible via the database handle
 ** associated with the VM. Of course only a subset of these structures
 ** will be accessed by the VM, and we could use Vdbe.btreeMask to figure
 ** that subset out, but there is no advantage to doing so.
@@ -50218,12 +50218,12 @@ SQLITE_PRIVATE void sqlite3VdbeMutexArrayEnter(Vdbe *p){
 #endif
 
 /*
-** This function is called when a transaction opened by the database 
-** handle associated with the VM passed as an argument is about to be 
+** This function is called when a transaction opened by the database
+** handle associated with the VM passed as an argument is about to be
 ** committed. If there are outstanding deferred foreign key constraint
 ** violations, return SQLITE_ERROR. Otherwise, SQLITE_OK.
 **
-** If there are outstanding FK violations and this function returns 
+** If there are outstanding FK violations and this function returns
 ** SQLITE_ERROR, set the result of the VM to SQLITE_CONSTRAINT and write
 ** an error message to it. Then return SQLITE_ERROR.
 */
@@ -50259,7 +50259,7 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
 
   /* This function contains the logic that determines if a statement or
   ** transaction will be committed or rolled back as a result of the
-  ** execution of this virtual machine. 
+  ** execution of this virtual machine.
   **
   ** If any of the following errors occur:
   **
@@ -50319,25 +50319,25 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
     if( p->rc==SQLITE_OK ){
       sqlite3VdbeCheckFk(p, 0);
     }
-  
-    /* If the auto-commit flag is set and this is the only active writer 
-    ** VM, then we do either a commit or rollback of the current transaction. 
+
+    /* If the auto-commit flag is set and this is the only active writer
+    ** VM, then we do either a commit or rollback of the current transaction.
     **
-    ** Note: This block also runs if one of the special errors handled 
-    ** above has occurred. 
+    ** Note: This block also runs if one of the special errors handled
+    ** above has occurred.
     */
-    if( !sqlite3VtabInSync(db) 
-     && db->autoCommit 
-     && db->writeVdbeCnt==(p->readOnly==0) 
+    if( !sqlite3VtabInSync(db)
+     && db->autoCommit
+     && db->writeVdbeCnt==(p->readOnly==0)
     ){
       if( p->rc==SQLITE_OK || (p->errorAction==OE_Fail && !isSpecialError) ){
         if( sqlite3VdbeCheckFk(p, 1) ){
           sqlite3BtreeMutexArrayLeave(&p->aMutex);
           return SQLITE_ERROR;
         }
-        /* The auto-commit flag is true, the vdbe program was successful 
+        /* The auto-commit flag is true, the vdbe program was successful
         ** or hit an 'OR FAIL' constraint and there are no deferred foreign
-        ** key constraints to hold up the transaction. This means a commit 
+        ** key constraints to hold up the transaction. This means a commit
         ** is required.  */
         rc = vdbeCommit(db, p);
         if( rc==SQLITE_BUSY ){
@@ -50366,7 +50366,7 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
         db->autoCommit = 1;
       }
     }
-  
+
     /* If eStatementOp is non-zero, then a statement transaction needs to
     ** be committed or rolled back. Call sqlite3VdbeCloseStatement() to
     ** do so. If this operation returns an error, and the current statement
@@ -50375,7 +50375,7 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
     **
     ** Note that sqlite3VdbeCloseStatement() can only fail if eStatementOp
     ** is SAVEPOINT_ROLLBACK.  But if p->rc==SQLITE_OK then eStatementOp
-    ** must be SAVEPOINT_RELEASE.  Hence the NEVER(p->rc==SQLITE_OK) in 
+    ** must be SAVEPOINT_RELEASE.  Hence the NEVER(p->rc==SQLITE_OK) in
     ** the following code.
     */
     if( eStatementOp ){
@@ -50386,9 +50386,9 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
         p->zErrMsg = 0;
       }
     }
-  
+
     /* If this was an INSERT, UPDATE or DELETE and no statement transaction
-    ** has been rolled back, update the database connection change-counter. 
+    ** has been rolled back, update the database connection change-counter.
     */
     if( p->changeCntOn ){
       if( eStatementOp!=SAVEPOINT_ROLLBACK ){
@@ -50398,7 +50398,7 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
       }
       p->nChange = 0;
     }
-  
+
     /* Rollback or commit any schema changes that occurred. */
     if( p->rc!=SQLITE_OK && db->flags&SQLITE_InternChanges ){
       sqlite3ResetInternalSchema(db, 0);
@@ -50424,7 +50424,7 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
   }
 
   /* If the auto-commit flag is set to true, then any locks that were held
-  ** by connection db have now been released. Call sqlite3ConnectionUnlocked() 
+  ** by connection db have now been released. Call sqlite3ConnectionUnlocked()
   ** to invoke any required unlock-notify callbacks.
   */
   if( db->autoCommit ){
@@ -50526,7 +50526,7 @@ SQLITE_PRIVATE int sqlite3VdbeReset(Vdbe *p){
   p->magic = VDBE_MAGIC_INIT;
   return p->rc & db->errMask;
 }
+
 /*
 ** Clean up and delete a VDBE after execution.  Return an integer which is
 ** the result code.  Write any error message text into *pzErrMsg.
@@ -50727,8 +50727,8 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialTypeLen(u32 serial_type){
 }
 
 /*
-** If we are on an architecture with mixed-endian floating 
-** points (ex: ARM7) then swap the lower 4 bytes with the 
+** If we are on an architecture with mixed-endian floating
+** points (ex: ARM7) then swap the lower 4 bytes with the
 ** upper 4 bytes.  Return the result.
 **
 ** For most architectures, this is a no-op.
@@ -50750,7 +50750,7 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialTypeLen(u32 serial_type){
 ** (2007-08-30)  Frank van Vugt has studied this problem closely
 ** and has send his findings to the SQLite developers.  Frank
 ** writes that some Linux kernels offer floating point hardware
-** emulation that uses only 32-bit mantissas instead of a full 
+** emulation that uses only 32-bit mantissas instead of a full
 ** 48-bits as required by the IEEE standard.  (This is the
 ** CONFIG_FPE_FASTFPE option.)  On such systems, floating point
 ** byte swapping becomes very complicated.  To avoid problems,
@@ -50780,7 +50780,7 @@ static u64 floatSwap(u64 in){
 #endif
 
 /*
-** Write the serialized data blob for the value stored in pMem into 
+** Write the serialized data blob for the value stored in pMem into
 ** buf. It is assumed that the caller has allocated sufficient space.
 ** Return the number of bytes written.
 **
@@ -50796,7 +50796,7 @@ static u64 floatSwap(u64 in){
 ** Return the number of bytes actually written into buf[].  The number
 ** of bytes in the zero-filled tail is included in the return value only
 ** if those bytes were zeroed in buf[].
-*/ 
+*/
 SQLITE_PRIVATE u32 sqlite3VdbeSerialPut(u8 *buf, int nBuf, Mem *pMem, int file_format){
   u32 serial_type = sqlite3VdbeSerialType(pMem, file_format);
   u32 len;
@@ -50846,7 +50846,7 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialPut(u8 *buf, int nBuf, Mem *pMem, int file_f
 /*
 ** Deserialize the data blob pointed to by buf as serial type serial_type
 ** and store the result in pMem.  Return the number of bytes read.
-*/ 
+*/
 SQLITE_PRIVATE u32 sqlite3VdbeSerialGet(
   const unsigned char *buf,     /* Buffer to deserialize from */
   u32 serial_type,              /* Serial type to deserialize */
@@ -50953,7 +50953,7 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialGet(
 **
 ** The returned structure should be closed by a call to
 ** sqlite3VdbeDeleteUnpackedRecord().
-*/ 
+*/
 SQLITE_PRIVATE UnpackedRecord *sqlite3VdbeRecordUnpack(
   KeyInfo *pKeyInfo,     /* Information about the record format */
   int nKey,              /* Size of the binary record */
@@ -50970,10 +50970,10 @@ SQLITE_PRIVATE UnpackedRecord *sqlite3VdbeRecordUnpack(
   u32 szHdr;
   Mem *pMem;
   int nOff;           /* Increase pSpace by this much to 8-byte align it */
-  
+
   /*
   ** We want to shift the pointer pSpace up such that it is 8-byte aligned.
-  ** Thus, we need to calculate a value, nOff, between 0 and 7, to shift 
+  ** Thus, we need to calculate a value, nOff, between 0 and 7, to shift
   ** it by.  If pSpace is already 8-byte aligned, nOff should be zero.
   */
   nOff = (8 - (SQLITE_PTR_TO_INT(pSpace) & 7)) & 7;
@@ -51037,14 +51037,14 @@ SQLITE_PRIVATE void sqlite3VdbeDeleteUnpackedRecord(UnpackedRecord *p){
 /*
 ** This function compares the two table rows or index records
 ** specified by {nKey1, pKey1} and pPKey2.  It returns a negative, zero
-** or positive integer if key1 is less than, equal to or 
+** or positive integer if key1 is less than, equal to or
 ** greater than key2.  The {nKey1, pKey1} key must be a blob
 ** created by th OP_MakeRecord opcode of the VDBE.  The pPKey2
 ** key must be a parsed key such as obtained from
 ** sqlite3VdbeParseRecord.
 **
 ** Key1 and Key2 do not have to contain the same number of fields.
-** The key with fewer fields is usually compares less than the 
+** The key with fewer fields is usually compares less than the
 ** longer key.  However if the UNPACKED_INCRKEY flags in pPKey2 is set
 ** and the common prefixes are equal, then key1 is less than key2.
 ** Or if the UNPACKED_MATCH_PREFIX flag is set and the prefixes are
@@ -51082,13 +51082,13 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
 
   /* Compilers may complain that mem1.u.i is potentially uninitialized.
   ** We could initialize it, as shown here, to silence those complaints.
-  ** But in fact, mem1.u.i will never actually be used initialized, and doing 
+  ** But in fact, mem1.u.i will never actually be used initialized, and doing
   ** the unnecessary initialization has a measurable negative performance
   ** impact, since this routine is a very high runner.  And so, we choose
   ** to ignore the compiler warnings and leave this variable uninitialized.
   */
   /*  mem1.u.i = 0;  // not needed, here to silence compiler warning */
-  
+
   idx1 = getVarint32(aKey1, szHdr1);
   d1 = szHdr1;
   if( pPKey2->flags & UNPACKED_IGNORE_ROWID ){
@@ -51117,9 +51117,9 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
       if( pKeyInfo->aSortOrder && i<nField && pKeyInfo->aSortOrder[i] ){
         rc = -rc;
       }
-    
+
       /* If the PREFIX_SEARCH flag is set and all fields except the final
-      ** rowid field were equal, then clear the PREFIX_SEARCH flag and set 
+      ** rowid field were equal, then clear the PREFIX_SEARCH flag and set
       ** pPKey2->rowid to the value of the rowid field in (pKey1, nKey1).
       ** This is used by the OP_IsUnique opcode.
       */
@@ -51129,7 +51129,7 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
         pPKey2->flags &= ~UNPACKED_PREFIX_SEARCH;
         pPKey2->rowid = mem1.u.i;
       }
-    
+
       return rc;
     }
     i++;
@@ -51145,7 +51145,7 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
   ** all the fields up to that point were equal. If the UNPACKED_INCRKEY
   ** flag is set, then break the tie by treating key2 as larger.
   ** If the UPACKED_PREFIX_MATCH flag is set, then keys with common prefixes
-  ** are considered to be equal.  Otherwise, the longer key is the 
+  ** are considered to be equal.  Otherwise, the longer key is the
   ** larger.  As it happens, the pPKey2 will always be the longer
   ** if there is a difference.
   */
@@ -51159,7 +51159,7 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
   }
   return rc;
 }
+
 
 /*
 ** pCur points at an index entry created using the OP_MakeRecord opcode.
@@ -51182,7 +51182,7 @@ SQLITE_PRIVATE int sqlite3VdbeIdxRowid(sqlite3 *db, BtCursor *pCur, i64 *rowid){
   /* Get the size of the index entry.  Only indices entries of less
   ** than 2GiB are support - anything large must be database corruption.
   ** Any corruption is detected in sqlite3BtreeParseCellPtr(), though, so
-  ** this code can safely assume that nCellKey is 32-bits  
+  ** this code can safely assume that nCellKey is 32-bits
   */
   assert( sqlite3BtreeCursorIsValid(pCur) );
   rc = sqlite3BtreeKeySize(pCur, &nCellKey);
@@ -51246,7 +51246,7 @@ idx_rowid_corruption:
 **
 ** pUnpacked is either created without a rowid or is truncated so that it
 ** omits the rowid at the end.  The rowid at the end of the index entry
-** is ignored as well.  Hence, this routine only compares the prefixes 
+** is ignored as well.  Hence, this routine only compares the prefixes
 ** of the keys prior to the final rowid, not the entire key.
 */
 SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare(
@@ -51281,7 +51281,7 @@ SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare(
 
 /*
 ** This routine sets the value to be returned by subsequent calls to
-** sqlite3_changes() on the database handle 'db'. 
+** sqlite3_changes() on the database handle 'db'.
 */
 SQLITE_PRIVATE void sqlite3VdbeSetChanges(sqlite3 *db, int nChange){
   assert( sqlite3_mutex_held(db->mutex) );
@@ -51323,7 +51323,7 @@ SQLITE_PRIVATE sqlite3 *sqlite3VdbeDb(Vdbe *v){
 
 /*
 ** Return a pointer to an sqlite3_value structure containing the value bound
-** parameter iVar of VM v. Except, if the value is an SQL NULL, return 
+** parameter iVar of VM v. Except, if the value is an SQL NULL, return
 ** 0 instead. Unless it is NULL, apply affinity aff (one of the SQLITE_AFF_*
 ** constants) to the value before returning it.
 **
@@ -51561,9 +51561,9 @@ static void setResultStrOrError(
   }
 }
 SQLITE_API void sqlite3_result_blob(
-  sqlite3_context *pCtx, 
-  const void *z, 
-  int n, 
+  sqlite3_context *pCtx,
+  const void *z,
+  int n,
   void (*xDel)(void *)
 ){
   assert( n>=0 );
@@ -51599,8 +51599,8 @@ SQLITE_API void sqlite3_result_null(sqlite3_context *pCtx){
   sqlite3VdbeMemSetNull(&pCtx->s);
 }
 SQLITE_API void sqlite3_result_text(
-  sqlite3_context *pCtx, 
-  const char *z, 
+  sqlite3_context *pCtx,
+  const char *z,
   int n,
   void (*xDel)(void *)
 ){
@@ -51609,27 +51609,27 @@ SQLITE_API void sqlite3_result_text(
 }
 #ifndef SQLITE_OMIT_UTF16
 SQLITE_API void sqlite3_result_text16(
-  sqlite3_context *pCtx, 
-  const void *z, 
-  int n, 
+  sqlite3_context *pCtx,
+  const void *z,
+  int n,
   void (*xDel)(void *)
 ){
   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
   setResultStrOrError(pCtx, z, n, SQLITE_UTF16NATIVE, xDel);
 }
 SQLITE_API void sqlite3_result_text16be(
-  sqlite3_context *pCtx, 
-  const void *z, 
-  int n, 
+  sqlite3_context *pCtx,
+  const void *z,
+  int n,
   void (*xDel)(void *)
 ){
   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
   setResultStrOrError(pCtx, z, n, SQLITE_UTF16BE, xDel);
 }
 SQLITE_API void sqlite3_result_text16le(
-  sqlite3_context *pCtx, 
-  const void *z, 
-  int n, 
+  sqlite3_context *pCtx,
+  const void *z,
+  int n,
   void (*xDel)(void *)
 ){
   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
@@ -51647,7 +51647,7 @@ SQLITE_API void sqlite3_result_zeroblob(sqlite3_context *pCtx, int n){
 SQLITE_API void sqlite3_result_error_code(sqlite3_context *pCtx, int errCode){
   pCtx->isError = errCode;
   if( pCtx->s.flags & MEM_Null ){
-    sqlite3VdbeMemSetStr(&pCtx->s, sqlite3ErrStr(errCode), -1, 
+    sqlite3VdbeMemSetStr(&pCtx->s, sqlite3ErrStr(errCode), -1,
                          SQLITE_UTF8, SQLITE_STATIC);
   }
 }
@@ -51656,7 +51656,7 @@ SQLITE_API void sqlite3_result_error_code(sqlite3_context *pCtx, int errCode){
 SQLITE_API void sqlite3_result_error_toobig(sqlite3_context *pCtx){
   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
   pCtx->isError = SQLITE_TOOBIG;
-  sqlite3VdbeMemSetStr(&pCtx->s, "string or blob too big", -1, 
+  sqlite3VdbeMemSetStr(&pCtx->s, "string or blob too big", -1,
                        SQLITE_UTF8, SQLITE_STATIC);
 }
 
@@ -51673,7 +51673,7 @@ SQLITE_API void sqlite3_result_error_nomem(sqlite3_context *pCtx){
 ** statement is completely executed or an error occurs.
 **
 ** This routine implements the bulk of the logic behind the sqlite_step()
-** API.  The only thing omitted is the automatic recompile if a 
+** API.  The only thing omitted is the automatic recompile if a
 ** schema change has occurred.  That detail is handled by the
 ** outer sqlite3_step() wrapper procedure.
 */
@@ -51683,7 +51683,7 @@ static int sqlite3Step(Vdbe *p){
 
   assert(p);
   if( p->magic!=VDBE_MAGIC_RUN ){
-    sqlite3_log(SQLITE_MISUSE, 
+    sqlite3_log(SQLITE_MISUSE,
           "attempt to step a halted statement: [%s]", p->zSql);
     return SQLITE_MISUSE_BKPT;
   }
@@ -51751,14 +51751,14 @@ static int sqlite3Step(Vdbe *p){
     p->rc = SQLITE_NOMEM;
   }
 end_of_step:
-  /* At this point local variable rc holds the value that should be 
-  ** returned if this statement was compiled using the legacy 
+  /* At this point local variable rc holds the value that should be
+  ** returned if this statement was compiled using the legacy
   ** sqlite3_prepare() interface. According to the docs, this can only
-  ** be one of the values in the first assert() below. Variable p->rc 
-  ** contains the value that would be returned if sqlite3_finalize() 
+  ** be one of the values in the first assert() below. Variable p->rc
+  ** contains the value that would be returned if sqlite3_finalize()
   ** were called on statement p.
   */
-  assert( rc==SQLITE_ROW  || rc==SQLITE_DONE   || rc==SQLITE_ERROR 
+  assert( rc==SQLITE_ROW  || rc==SQLITE_DONE   || rc==SQLITE_ERROR
        || rc==SQLITE_BUSY || rc==SQLITE_MISUSE
   );
   assert( p->rc!=SQLITE_ROW && p->rc!=SQLITE_DONE );
@@ -51766,7 +51766,7 @@ end_of_step:
     /* If this statement was prepared using sqlite3_prepare_v2(), and an
     ** error has occured, then return the error code in p->rc to the
     ** caller. Set the error code in the database handle to the same value.
-    */ 
+    */
     rc = db->errCode = p->rc;
   }
   return (rc&db->errMask);
@@ -51796,15 +51796,15 @@ SQLITE_API int sqlite3_step(sqlite3_stmt *pStmt){
     v->expired = 0;
   }
   if( rc2!=SQLITE_OK && ALWAYS(v->isPrepareV2) && ALWAYS(db->pErr) ){
-    /* This case occurs after failing to recompile an sql statement. 
-    ** The error message from the SQL compiler has already been loaded 
-    ** into the database handle. This block copies the error message 
+    /* This case occurs after failing to recompile an sql statement.
+    ** The error message from the SQL compiler has already been loaded
+    ** into the database handle. This block copies the error message
     ** from the database handle into the statement and sets the statement
-    ** program counter to 0 to ensure that when the statement is 
+    ** program counter to 0 to ensure that when the statement is
     ** finalized or reset the parser error message is available via
     ** sqlite3_errmsg() and sqlite3_errcode().
     */
-    const char *zErr = (const char *)sqlite3_value_text(db->pErr); 
+    const char *zErr = (const char *)sqlite3_value_text(db->pErr);
     sqlite3DbFree(db, v->zErrMsg);
     if( !db->mallocFailed ){
       v->zErrMsg = sqlite3DbStrDup(db, zErr);
@@ -51908,9 +51908,9 @@ SQLITE_API void *sqlite3_get_auxdata(sqlite3_context *pCtx, int iArg){
 ** deleted by calling the delete function specified when it was set.
 */
 SQLITE_API void sqlite3_set_auxdata(
-  sqlite3_context *pCtx, 
-  int iArg, 
-  void *pAux, 
+  sqlite3_context *pCtx,
+  int iArg,
+  void *pAux,
   void (*xDelete)(void*)
 ){
   struct AuxData *pAuxData;
@@ -51948,7 +51948,7 @@ failed:
 
 #ifndef SQLITE_OMIT_DEPRECATED
 /*
-** Return the number of times the Step function of a aggregate has been 
+** Return the number of times the Step function of a aggregate has been
 ** called.
 **
 ** This function is deprecated.  Do not use it for new code.  It is
@@ -52009,9 +52009,9 @@ static Mem *columnMem(sqlite3_stmt *pStmt, int i){
     ** this assert() from failing, when building with SQLITE_DEBUG defined
     ** using gcc, force nullMem to be 8-byte aligned using the magical
     ** __attribute__((aligned(8))) macro.  */
-    static const Mem nullMem 
+    static const Mem nullMem
 #if defined(SQLITE_DEBUG) && defined(__GNUC__)
-      __attribute__((aligned(8))) 
+      __attribute__((aligned(8)))
 #endif
       = {{0}, (double)0, 0, "", 0, MEM_Null, SQLITE_NULL, 0, 0, 0 };
 
@@ -52025,9 +52025,9 @@ static Mem *columnMem(sqlite3_stmt *pStmt, int i){
 }
 
 /*
-** This function is called after invoking an sqlite3_value_XXX function on a 
+** This function is called after invoking an sqlite3_value_XXX function on a
 ** column value (i.e. a value returned by evaluating an SQL expression in the
-** select list of a SELECT statement) that may cause a malloc() failure. If 
+** select list of a SELECT statement) that may cause a malloc() failure. If
 ** malloc() has failed, the threads mallocFailed flag is cleared and the result
 ** code of statement pStmt set to SQLITE_NOMEM.
 **
@@ -52065,8 +52065,8 @@ SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt *pStmt, int i){
   const void *val;
   val = sqlite3_value_blob( columnMem(pStmt,i) );
   /* Even though there is no encoding conversion, value_blob() might
-  ** need to call malloc() to expand the result of a zeroblob() 
-  ** expression. 
+  ** need to call malloc() to expand the result of a zeroblob()
+  ** expression.
   */
   columnMallocFailure(pStmt);
   return val;
@@ -52156,7 +52156,7 @@ static const void *columnName(
   Vdbe *p = (Vdbe *)pStmt;
   int n;
   sqlite3 *db = p->db;
-  
+
   assert( db!=0 );
   n = sqlite3_column_count(pStmt);
   if( N<n && N>=0 ){
@@ -52269,11 +52269,11 @@ SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt *pStmt, int N){
 
 
 /******************************* sqlite3_bind_  ***************************
-** 
+**
 ** Routines used to attach values to wildcards in a compiled SQL statement.
 */
 /*
-** Unbind the value bound to variable i in virtual machine p. This is the 
+** Unbind the value bound to variable i in virtual machine p. This is the
 ** the same as binding a NULL value to the column. If the "i" parameter is
 ** out of range, then SQLITE_RANGE is returned. Othewise SQLITE_OK.
 **
@@ -52292,7 +52292,7 @@ static int vdbeUnbind(Vdbe *p, int i){
   if( p->magic!=VDBE_MAGIC_RUN || p->pc>=0 ){
     sqlite3Error(p->db, SQLITE_MISUSE, 0);
     sqlite3_mutex_leave(p->db->mutex);
-    sqlite3_log(SQLITE_MISUSE, 
+    sqlite3_log(SQLITE_MISUSE,
         "bind on a busy prepared statement: [%s]", p->zSql);
     return SQLITE_MISUSE_BKPT;
   }
@@ -52307,7 +52307,7 @@ static int vdbeUnbind(Vdbe *p, int i){
   pVar->flags = MEM_Null;
   sqlite3Error(p->db, SQLITE_OK, 0);
 
-  /* If the bit corresponding to this variable in Vdbe.expmask is set, then 
+  /* If the bit corresponding to this variable in Vdbe.expmask is set, then
   ** binding a new value to this variable invalidates the current query plan.
   */
   if( p->isPrepareV2 &&
@@ -52354,10 +52354,10 @@ static int bindText(
 ** Bind a blob value to an SQL statement variable.
 */
 SQLITE_API int sqlite3_bind_blob(
-  sqlite3_stmt *pStmt, 
-  int i, 
-  const void *zData, 
-  int nData, 
+  sqlite3_stmt *pStmt,
+  int i,
+  const void *zData,
+  int nData,
   void (*xDel)(void*)
 ){
   return bindText(pStmt, i, zData, nData, xDel, 0);
@@ -52394,21 +52394,21 @@ SQLITE_API int sqlite3_bind_null(sqlite3_stmt *pStmt, int i){
   }
   return rc;
 }
-SQLITE_API int sqlite3_bind_text( 
-  sqlite3_stmt *pStmt, 
-  int i, 
-  const char *zData, 
-  int nData, 
+SQLITE_API int sqlite3_bind_text(
+  sqlite3_stmt *pStmt,
+  int i,
+  const char *zData,
+  int nData,
   void (*xDel)(void*)
 ){
   return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8);
 }
 #ifndef SQLITE_OMIT_UTF16
 SQLITE_API int sqlite3_bind_text16(
-  sqlite3_stmt *pStmt, 
-  int i, 
-  const void *zData, 
-  int nData, 
+  sqlite3_stmt *pStmt,
+  int i,
+  const void *zData,
+  int nData,
   void (*xDel)(void*)
 ){
   return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF16NATIVE);
@@ -52458,7 +52458,7 @@ SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt *pStmt, int i, int n){
 
 /*
 ** Return the number of wildcards that can be potentially bound to.
-** This routine is added to support DBD::SQLite.  
+** This routine is added to support DBD::SQLite.
 */
 SQLITE_API int sqlite3_bind_parameter_count(sqlite3_stmt *pStmt){
   Vdbe *p = (Vdbe*)pStmt;
@@ -52516,7 +52516,7 @@ SQLITE_PRIVATE int sqlite3VdbeParameterIndex(Vdbe *p, const char *zName, int nNa
   if( p==0 ){
     return 0;
   }
-  createVarMap(p); 
+  createVarMap(p);
   if( zName ){
     for(i=0; i<p->nVar; i++){
       const char *z = p->azVar[i];
@@ -52691,7 +52691,7 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
   char zBase[100];         /* Initial working space */
 
   db = p->db;
-  sqlite3StrAccumInit(&out, zBase, sizeof(zBase), 
+  sqlite3StrAccumInit(&out, zBase, sizeof(zBase),
                       db->aLimit[SQLITE_LIMIT_LENGTH]);
   out.db = db;
   while( zRawSql[0] ){
@@ -52771,7 +52771,7 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
 **    May you share freely, never taking more than you give.
 **
 *************************************************************************
-** The code in this file implements execution method of the 
+** The code in this file implements execution method of the
 ** Virtual Database Engine (VDBE).  A separate file ("vdbeaux.c")
 ** handles housekeeping details such as creating and deleting
 ** VDBE instances.  This file is solely interested in executing
@@ -52781,10 +52781,10 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
 ** to a VDBE.
 **
 ** The SQL parser generates a program which is then executed by
-** the VDBE to do the work of the SQL statement.  VDBE programs are 
+** the VDBE to do the work of the SQL statement.  VDBE programs are
 ** similar in form to assembly language.  The program consists of
-** a linear sequence of operations.  Each operation has an opcode 
-** and 5 operands.  Operands P1, P2, and P3 are integers.  Operand P4 
+** a linear sequence of operations.  Each operation has an opcode
+** and 5 operands.  Operands P1, P2, and P3 are integers.  Operand P4
 ** is a null-terminated string.  Operand P5 is an unsigned character.
 ** Few opcodes use all 5 operands.
 **
@@ -52793,7 +52793,7 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
 ** either an integer, a null-terminated string, a floating point
 ** number, or the SQL "NULL" value.  An implicit conversion from one
 ** type to the other occurs as necessary.
-** 
+**
 ** Most of the code in this file is taken up by the sqlite3VdbeExec()
 ** function which does the work of interpreting a VDBE program.
 ** But other routines are also provided to help in building up
@@ -52909,7 +52909,7 @@ SQLITE_API int sqlite3_found_count = 0;
 /*
 ** Argument pMem points at a register that will be passed to a
 ** user-defined function or returned to the user as the result of a query.
-** This routine sets the pMem->type variable used by the sqlite3_value_*() 
+** This routine sets the pMem->type variable used by the sqlite3_value_*()
 ** routines.
 */
 SQLITE_PRIVATE void sqlite3VdbeMemStoreType(Mem *pMem){
@@ -52942,7 +52942,7 @@ static VdbeCursor *allocateCursor(
   int isBtreeCursor     /* True for B-Tree.  False for pseudo-table or vtab */
 ){
   /* Find the memory cell that will be used to store the blob of memory
-  ** required for this VdbeCursor structure. It is convenient to use a 
+  ** required for this VdbeCursor structure. It is convenient to use a
   ** vdbe memory cell to manage the memory allocation required for a
   ** VdbeCursor structure for the following reasons:
   **
@@ -52963,9 +52963,9 @@ static VdbeCursor *allocateCursor(
 
   int nByte;
   VdbeCursor *pCx = 0;
-  nByte = 
-      ROUND8(sizeof(VdbeCursor)) + 
-      (isBtreeCursor?sqlite3BtreeCursorSize():0) + 
+  nByte =
+      ROUND8(sizeof(VdbeCursor)) +
+      (isBtreeCursor?sqlite3BtreeCursorSize():0) +
       2*nField*sizeof(u32);
 
   assert( iCur<p->nCursor );
@@ -53033,7 +53033,7 @@ static void applyNumericAffinity(Mem *pRec){
 ** SQLITE_AFF_INTEGER:
 ** SQLITE_AFF_REAL:
 ** SQLITE_AFF_NUMERIC:
-**    Try to convert pRec to an integer representation or a 
+**    Try to convert pRec to an integer representation or a
 **    floating-point representation if an integer representation
 **    is not possible.  Note that the integer representation is
 **    always preferred, even if the affinity is REAL, because
@@ -53085,12 +53085,12 @@ SQLITE_API int sqlite3_value_numeric_type(sqlite3_value *pVal){
 }
 
 /*
-** Exported version of applyAffinity(). This one works on sqlite3_value*, 
+** Exported version of applyAffinity(). This one works on sqlite3_value*,
 ** not the internal Mem* type.
 */
 SQLITE_PRIVATE void sqlite3ValueApplyAffinity(
-  sqlite3_value *pVal, 
-  u8 affinity, 
+  sqlite3_value *pVal,
+  u8 affinity,
   u8 enc
 ){
   applyAffinity((Mem *)pVal, affinity, enc);
@@ -53219,8 +53219,8 @@ static void registerTrace(FILE *out, int iReg, Mem *p){
 
 #ifdef VDBE_PROFILE
 
-/* 
-** hwtime.h contains inline assembler code for implementing 
+/*
+** hwtime.h contains inline assembler code for implementing
 ** high-performance timing routines.
 */
 /************** Include hwtime.h in the middle of vdbe.c *********************/
@@ -53278,7 +53278,7 @@ static void registerTrace(FILE *out, int iReg, Mem *p){
       __asm__ __volatile__ ("rdtsc" : "=A" (val));
       return val;
   }
+
 #elif (defined(__GNUC__) && defined(__ppc__))
 
   __inline__ sqlite_uint64 sqlite3Hwtime(void){
@@ -53350,9 +53350,9 @@ static int fileExists(sqlite3 *db, const char *zFile){
 /*
 ** This function is only called from within an assert() expression. It
 ** checks that the sqlite3.nTransaction variable is correctly set to
-** the number of non-transaction savepoints currently in the 
+** the number of non-transaction savepoints currently in the
 ** linked list starting at sqlite3.pSavepoint.
-** 
+**
 ** Usage:
 **
 **     assert( checkSavepointCount(db) );
@@ -53843,7 +53843,7 @@ SQLITE_PRIVATE int sqlite3VdbeExec(
 #endif
 #ifdef SQLITE_DEBUG
   sqlite3BeginBenignMalloc();
-  if( p->pc==0 
+  if( p->pc==0
    && ((p->db->flags & SQLITE_VdbeListing) || fileExists(db, "vdbe_explain"))
   ){
     int i;
@@ -53885,7 +53885,7 @@ SQLITE_PRIVATE int sqlite3VdbeExec(
       sqlite3EndBenignMalloc();
     }
 #endif
-      
+
 
     /* Check to see if we need to simulate an interrupt.  This only happens
     ** if we have a special test build.
@@ -53960,7 +53960,7 @@ SQLITE_PRIVATE int sqlite3VdbeExec(
       assert( pOp->p3<=p->nMem );
     }
 #endif
-  
+
     switch( pOp->opcode ){
 
 /*****************************************************************************
@@ -54001,7 +54001,7 @@ SQLITE_PRIVATE int sqlite3VdbeExec(
 /* Opcode:  Goto * P2 * * *
 **
 ** An unconditional jump to address P2.
-** The next instruction executed will be 
+** The next instruction executed will be
 ** the one at index P2 from the beginning of
 ** the program.
 */
@@ -54078,7 +54078,7 @@ case OP_HaltIfNull: {      /* in3 */
 ** whether or not to rollback the current transaction.  Do not rollback
 ** if P2==OE_Fail. Do the rollback if P2==OE_Rollback.  If P2==OE_Abort,
 ** then back out all changes that have occurred during this execution of the
-** VDBE, but do not rollback the transaction. 
+** VDBE, but do not rollback the transaction.
 **
 ** If P4 is not null then it is an error message string.
 **
@@ -54095,7 +54095,7 @@ case OP_Halt: {
     sqlite3VdbeSetChanges(db, p->nChange);
     pc = sqlite3VdbeFrameRestore(pFrame);
     if( pOp->p2==OE_Ignore ){
-      /* Instruction pc is the OP_Program that invoked the sub-program 
+      /* Instruction pc is the OP_Program that invoked the sub-program
       ** currently being halted. If the p2 instruction of this OP_Halt
       ** instruction is set to OE_Ignore, then the sub-program is throwing
       ** an IGNORE exception. In this case jump to the address specified
@@ -54167,7 +54167,7 @@ case OP_Real: {            /* same as TK_FLOAT, out2-prerelease */
 
 /* Opcode: String8 * P2 * P4 *
 **
-** P4 points to a nul terminated UTF-8 string. This opcode is transformed 
+** P4 points to a nul terminated UTF-8 string. This opcode is transformed
 ** into an OP_String before it is executed for the first time.
 */
 case OP_String8: {         /* same as TK_STRING, out2-prerelease */
@@ -54198,7 +54198,7 @@ case OP_String8: {         /* same as TK_STRING, out2-prerelease */
   }
   /* Fall through to the next case, OP_String */
 }
-  
+
 /* Opcode: String P1 P2 * P4 *
 **
 ** The string value P4 of length P1 (bytes) is stored in register P2.
@@ -54492,14 +54492,14 @@ case OP_Concat: {           /* same as TK_CONCAT, in1, in2, out3 */
 /* Opcode: Divide P1 P2 P3 * *
 **
 ** Divide the value in register P1 by the value in register P2
-** and store the result in register P3 (P3=P2/P1). If the value in 
-** register P1 is zero, then the result is NULL. If either input is 
+** and store the result in register P3 (P3=P2/P1). If the value in
+** register P1 is zero, then the result is NULL. If either input is
 ** NULL, the result is NULL.
 */
 /* Opcode: Remainder P1 P2 P3 * *
 **
 ** Compute the remainder after integer division of the value in
-** register P1 by the value in register P2 and store the result in P3. 
+** register P1 by the value in register P2 and store the result in P3.
 ** If the value in register P2 is zero the result is NULL.
 ** If either operand is NULL, the result is NULL.
 */
@@ -54618,7 +54618,7 @@ case OP_CollSeq: {
 ** successors.  The result of the function is stored in register P3.
 ** Register P3 must not be one of the function inputs.
 **
-** P1 is a 32-bit bitmask indicating whether or not each argument to the 
+** P1 is a 32-bit bitmask indicating whether or not each argument to the
 ** function was determined to be constant at compile time. If the first
 ** argument was constant then bit 0 of P1 is set. This is used to determine
 ** whether meta data associated with a user function argument using the
@@ -54773,7 +54773,7 @@ case OP_ShiftRight: {           /* same as TK_RSHIFT, in1, in2, out3 */
 }
 
 /* Opcode: AddImm  P1 P2 * * *
-** 
+**
 ** Add the constant P2 to the value in register P1.
 ** The result is always an integer.
 **
@@ -54787,7 +54787,7 @@ case OP_AddImm: {            /* in1 */
 }
 
 /* Opcode: MustBeInt P1 P2 * * *
-** 
+**
 ** Force the value in register P1 to be an integer.  If the value
 ** in P1 is not an integer and cannot be converted into an integer
 ** without data loss, then jump immediately to P2, or if P2==0
@@ -54879,7 +54879,7 @@ case OP_ToBlob: {                  /* same as TK_TO_BLOB, in1 */
 ** Force the value in register P1 to be numeric (either an
 ** integer or a floating-point number.)
 ** If the value is text or blob, try to convert it to an using the
-** equivalent of atoi() or atof() and store 0 if no such conversion 
+** equivalent of atoi() or atof() and store 0 if no such conversion
 ** is possible.
 **
 ** A NULL value is not changed by this routine.  It remains NULL.
@@ -54932,21 +54932,21 @@ case OP_ToReal: {                  /* same as TK_TO_REAL, in1 */
 /* Opcode: Lt P1 P2 P3 P4 P5
 **
 ** Compare the values in register P1 and P3.  If reg(P3)<reg(P1) then
-** jump to address P2.  
+** jump to address P2.
 **
 ** If the SQLITE_JUMPIFNULL bit of P5 is set and either reg(P1) or
-** reg(P3) is NULL then take the jump.  If the SQLITE_JUMPIFNULL 
+** reg(P3) is NULL then take the jump.  If the SQLITE_JUMPIFNULL
 ** bit is clear then fall thru if either operand is NULL.
 **
 ** The SQLITE_AFF_MASK portion of P5 must be an affinity character -
-** SQLITE_AFF_TEXT, SQLITE_AFF_INTEGER, and so forth. An attempt is made 
+** SQLITE_AFF_TEXT, SQLITE_AFF_INTEGER, and so forth. An attempt is made
 ** to coerce both inputs according to this affinity before the
 ** comparison is made. If the SQLITE_AFF_MASK is 0x00, then numeric
 ** affinity is used. Note that the affinity conversions are stored
 ** back into the input registers P1 and P3.  So this opcode can cause
 ** persistent changes to registers P1 and P3.
 **
-** Once any conversions have taken place, and neither value is NULL, 
+** Once any conversions have taken place, and neither value is NULL,
 ** the values are compared. If both values are blobs then memcmp() is
 ** used to determine the results of the comparison.  If both values
 ** are text, then the appropriate collating function specified in
@@ -55229,7 +55229,7 @@ case OP_Or: {             /* same as TK_OR, in1, in2, out3 */
 /* Opcode: Not P1 P2 * * *
 **
 ** Interpret the value in register P1 as a boolean value.  Store the
-** boolean complement in register P2.  If the value in register P1 is 
+** boolean complement in register P2.  If the value in register P1 is
 ** NULL, then a NULL is stored in P2.
 */
 case OP_Not: {                /* same as TK_NOT, in1, out2 */
@@ -55308,7 +55308,7 @@ case OP_IsNull: {            /* same as TK_ISNULL, jump, in1 */
 
 /* Opcode: NotNull P1 P2 * * *
 **
-** Jump to P2 if the value in register P1 is not NULL.  
+** Jump to P2 if the value in register P1 is not NULL.
 */
 case OP_NotNull: {            /* same as TK_NOTNULL, jump, in1 */
   pIn1 = &aMem[pOp->p1];
@@ -55323,7 +55323,7 @@ case OP_NotNull: {            /* same as TK_NOTNULL, jump, in1 */
 ** Interpret the data that cursor P1 points to as a structure built using
 ** the MakeRecord instruction.  (See the MakeRecord opcode for additional
 ** information about the format of the data.)  Extract the P2-th column
-** from this record.  If there are less that (P2+1) 
+** from this record.  If there are less that (P2+1)
 ** values in the record, extract a NULL.
 **
 ** The value extracted is stored in register P3.
@@ -55785,7 +55785,7 @@ case OP_MakeRecord: {
 
 /* Opcode: Count P1 P2 * * *
 **
-** Store the number of entries (an integer value) in the table or index 
+** Store the number of entries (an integer value) in the table or index
 ** opened by cursor P1 in register P2
 */
 #ifndef SQLITE_OMIT_BTREECOUNT
@@ -56135,9 +56135,9 @@ case OP_ReadCookie: {               /* out2-prerelease */
 /* Opcode: SetCookie P1 P2 P3 * *
 **
 ** Write the content of register P3 (interpreted as an integer)
-** into cookie number P2 of database P1.  P2==1 is the schema version.  
-** P2==2 is the database format. P2==3 is the recommended pager cache 
-** size, and so forth.  P1==0 is the main database file and P1==1 is the 
+** into cookie number P2 of database P1.  P2==1 is the schema version.
+** P2==2 is the database format. P2==3 is the recommended pager cache
+** size, and so forth.  P1==0 is the main database file and P1==1 is the
 ** database file used to store temporary tables.
 **
 ** A transaction must be started before executing this opcode.
@@ -56175,7 +56175,7 @@ case OP_SetCookie: {       /* in3 */
 /* Opcode: VerifyCookie P1 P2 *
 **
 ** Check the value of global database parameter number 0 (the
-** schema version) and make sure it is equal to P2.  
+** schema version) and make sure it is equal to P2.
 ** P1 is the database number which is 0 for the main database file
 ** and 1 for the file holding temporary tables and some higher number
 ** for auxiliary databases.
@@ -56230,8 +56230,8 @@ case OP_VerifyCookie: {
 /* Opcode: OpenRead P1 P2 P3 P4 P5
 **
 ** Open a read-only cursor for the database table whose root page is
-** P2 in a database file.  The database file is determined by P3. 
-** P3==0 means the main database, P3==1 means the database used for 
+** P2 in a database file.  The database file is determined by P3.
+** P3==0 means the main database, P3==1 means the database used for
 ** temporary tables, and P3>1 means used the corresponding attached
 ** database.  Give the new cursor an identifier of P1.  The P1
 ** values need not be contiguous but all P1 values should be small integers.
@@ -56250,9 +56250,9 @@ case OP_VerifyCookie: {
 ** SQLITE_BUSY error code.
 **
 ** The P4 value may be either an integer (P4_INT32) or a pointer to
-** a KeyInfo structure (P4_KEYINFO). If it is a pointer to a KeyInfo 
-** structure, then said structure defines the content and collating 
-** sequence of the index being opened. Otherwise, if P4 is an integer 
+** a KeyInfo structure (P4_KEYINFO). If it is a pointer to a KeyInfo
+** structure, then said structure defines the content and collating
+** sequence of the index being opened. Otherwise, if P4 is an integer
 ** value, it is set to the number of columns in the table.
 **
 ** See also OpenWrite.
@@ -56264,9 +56264,9 @@ case OP_VerifyCookie: {
 ** root page.
 **
 ** The P4 value may be either an integer (P4_INT32) or a pointer to
-** a KeyInfo structure (P4_KEYINFO). If it is a pointer to a KeyInfo 
-** structure, then said structure defines the content and collating 
-** sequence of the index being opened. Otherwise, if P4 is an integer 
+** a KeyInfo structure (P4_KEYINFO). If it is a pointer to a KeyInfo
+** structure, then said structure defines the content and collating
+** sequence of the index being opened. Otherwise, if P4 is an integer
 ** value, it is set to the number of columns in the table, or to the
 ** largest index of any column of the table that is actually used.
 **
@@ -56362,7 +56362,7 @@ case OP_OpenWrite: {
 /* Opcode: OpenEphemeral P1 P2 * P4 *
 **
 ** Open a new cursor P1 to a transient table.
-** The cursor is always opened read/write even if 
+** The cursor is always opened read/write even if
 ** the main database is read-only.  The transient or virtual
 ** table is deleted automatically when the cursor is closed.
 **
@@ -56428,7 +56428,7 @@ case OP_OpenEphemeral: {
 **
 ** Open a new cursor that points to a fake table that contains a single
 ** row of data.  The content of that one row in the content of memory
-** register P2.  In other words, cursor P1 becomes an alias for the 
+** register P2.  In other words, cursor P1 becomes an alias for the
 ** MEM_Blob content contained in register P2.
 **
 ** A pseudo-table created by this opcode is used to hold a single
@@ -56468,52 +56468,52 @@ case OP_Close: {
 
 /* Opcode: SeekGe P1 P2 P3 P4 *
 **
-** If cursor P1 refers to an SQL table (B-Tree that uses integer keys), 
-** use the value in register P3 as the key.  If cursor P1 refers 
-** to an SQL index, then P3 is the first in an array of P4 registers 
-** that are used as an unpacked index key. 
+** If cursor P1 refers to an SQL table (B-Tree that uses integer keys),
+** use the value in register P3 as the key.  If cursor P1 refers
+** to an SQL index, then P3 is the first in an array of P4 registers
+** that are used as an unpacked index key.
 **
-** Reposition cursor P1 so that  it points to the smallest entry that 
-** is greater than or equal to the key value. If there are no records 
+** Reposition cursor P1 so that  it points to the smallest entry that
+** is greater than or equal to the key value. If there are no records
 ** greater than or equal to the key and P2 is not zero, then jump to P2.
 **
 ** See also: Found, NotFound, Distinct, SeekLt, SeekGt, SeekLe
 */
 /* Opcode: SeekGt P1 P2 P3 P4 *
 **
-** If cursor P1 refers to an SQL table (B-Tree that uses integer keys), 
-** use the value in register P3 as a key. If cursor P1 refers 
-** to an SQL index, then P3 is the first in an array of P4 registers 
-** that are used as an unpacked index key. 
+** If cursor P1 refers to an SQL table (B-Tree that uses integer keys),
+** use the value in register P3 as a key. If cursor P1 refers
+** to an SQL index, then P3 is the first in an array of P4 registers
+** that are used as an unpacked index key.
 **
-** Reposition cursor P1 so that  it points to the smallest entry that 
-** is greater than the key value. If there are no records greater than 
+** Reposition cursor P1 so that  it points to the smallest entry that
+** is greater than the key value. If there are no records greater than
 ** the key and P2 is not zero, then jump to P2.
 **
 ** See also: Found, NotFound, Distinct, SeekLt, SeekGe, SeekLe
 */
-/* Opcode: SeekLt P1 P2 P3 P4 * 
+/* Opcode: SeekLt P1 P2 P3 P4 *
 **
-** If cursor P1 refers to an SQL table (B-Tree that uses integer keys), 
-** use the value in register P3 as a key. If cursor P1 refers 
-** to an SQL index, then P3 is the first in an array of P4 registers 
-** that are used as an unpacked index key. 
+** If cursor P1 refers to an SQL table (B-Tree that uses integer keys),
+** use the value in register P3 as a key. If cursor P1 refers
+** to an SQL index, then P3 is the first in an array of P4 registers
+** that are used as an unpacked index key.
 **
-** Reposition cursor P1 so that  it points to the largest entry that 
-** is less than the key value. If there are no records less than 
+** Reposition cursor P1 so that  it points to the largest entry that
+** is less than the key value. If there are no records less than
 ** the key and P2 is not zero, then jump to P2.
 **
 ** See also: Found, NotFound, Distinct, SeekGt, SeekGe, SeekLe
 */
 /* Opcode: SeekLe P1 P2 P3 P4 *
 **
-** If cursor P1 refers to an SQL table (B-Tree that uses integer keys), 
-** use the value in register P3 as a key. If cursor P1 refers 
-** to an SQL index, then P3 is the first in an array of P4 registers 
-** that are used as an unpacked index key. 
+** If cursor P1 refers to an SQL table (B-Tree that uses integer keys),
+** use the value in register P3 as a key. If cursor P1 refers
+** to an SQL index, then P3 is the first in an array of P4 registers
+** that are used as an unpacked index key.
 **
-** Reposition cursor P1 so that it points to the largest entry that 
-** is less than or equal to the key value. If there are no records 
+** Reposition cursor P1 so that it points to the largest entry that
+** is less than or equal to the key value. If there are no records
 ** less than or equal to the key and P2 is not zero, then jump to P2.
 **
 ** See also: Found, NotFound, Distinct, SeekGt, SeekGe, SeekLt
@@ -56695,7 +56695,7 @@ case OP_Seek: {    /* in2 */
   }
   break;
 }
-  
+
 
 /* Opcode: Found P1 P2 P3 P4 *
 **
@@ -56712,9 +56712,9 @@ case OP_Seek: {    /* in2 */
 ** If P4==0 then register P3 holds a blob constructed by MakeRecord.  If
 ** P4>0 then register P3 is the first of P4 registers that form an unpacked
 ** record.
-** 
+**
 ** Cursor P1 is on an index btree.  If the record identified by P3 and P4
-** is not the prefix of any entry in P1 then a jump is made to P2.  If P1 
+** is not the prefix of any entry in P1 then a jump is made to P2.  If P1
 ** does contain an entry whose prefix matches the P3/P4 record then control
 ** falls through to the next instruction and P1 is left pointing at the
 ** matching entry.
@@ -56787,7 +56787,7 @@ case OP_Found: {        /* jump, in3 */
 ** the list field being the integer ROWID of the entry that the index
 ** entry refers to.
 **
-** The P3 register contains an integer record number. Call this record 
+** The P3 register contains an integer record number. Call this record
 ** number R. Register P4 is the first in a set of N contiguous registers
 ** that make up an unpacked index key that can be used with cursor P1.
 ** The value of N can be inferred from the cursor. N includes the rowid
@@ -56868,9 +56868,9 @@ case OP_IsUnique: {        /* jump, in3 */
 
 /* Opcode: NotExists P1 P2 P3 * *
 **
-** Use the content of register P3 as a integer key.  If a record 
-** with that key does not exist in table of P1, then jump to P2. 
-** If the record does exist, then fall thru.  The cursor is left 
+** Use the content of register P3 as a integer key.  If a record
+** with that key does not exist in table of P1, then jump to P2.
+** If the record does exist, then fall thru.  The cursor is left
 ** pointing to the record if it exists.
 **
 ** The difference between this operation and NotFound is that this
@@ -56926,7 +56926,7 @@ case OP_NotExists: {        /* jump, in3 */
 ** Find the next available sequence number for cursor P1.
 ** Write the sequence number into register P2.
 ** The sequence number on the cursor is incremented after this
-** instruction.  
+** instruction.
 */
 case OP_Sequence: {           /* out2-prerelease */
   assert( pOp->p1>=0 && pOp->p1<p->nCursor );
@@ -56943,9 +56943,9 @@ case OP_Sequence: {           /* out2-prerelease */
 ** table that cursor P1 points to.  The new record number is written
 ** written to register P2.
 **
-** If P3>0 then P3 is a register in the root frame of this VDBE that holds 
+** If P3>0 then P3 is a register in the root frame of this VDBE that holds
 ** the largest previously generated record number. No new record numbers are
-** allowed to be less than this value. When this value reaches its maximum, 
+** allowed to be less than this value. When this value reaches its maximum,
 ** a SQLITE_FULL error is generated. The P3 register is updated with the '
 ** generated record number. This P3 mechanism is used to help implement the
 ** AUTOINCREMENT feature.
@@ -57106,7 +57106,7 @@ case OP_NewRowid: {           /* out2-prerelease */
 ** the update hook.
 **
 ** Parameter P4 may point to a string containing the table-name, or
-** may be NULL. If it is not NULL, then the update-hook 
+** may be NULL. If it is not NULL, then the update-hook
 ** (sqlite3.xUpdateCallback) is invoked following a successful insert.
 **
 ** (WARNING/TODO: If P1 is a pseudo-cursor and P2 is dynamically
@@ -57123,7 +57123,7 @@ case OP_NewRowid: {           /* out2-prerelease */
 ** This works exactly like OP_Insert except that the key is the
 ** integer value P3, not the value of the integer stored in register P3.
 */
-case OP_Insert: 
+case OP_Insert:
 case OP_InsertInt: {
 #if 0  /* local variables moved into u.bf */
   Mem *pData;       /* MEM cell holding data for the record to be inserted */
@@ -57273,8 +57273,8 @@ case OP_ResetCount: {
 /* Opcode: RowData P1 P2 * * *
 **
 ** Write into register P2 the complete row data for cursor P1.
-** There is no interpretation of the data.  
-** It is just copied onto the P2 register exactly as 
+** There is no interpretation of the data.
+** It is just copied onto the P2 register exactly as
 ** it is found in the database file.
 **
 ** If the P1 cursor must be pointing to a valid row (not a NULL row)
@@ -57283,8 +57283,8 @@ case OP_ResetCount: {
 /* Opcode: RowKey P1 P2 * * *
 **
 ** Write into register P2 the complete row key for cursor P1.
-** There is no interpretation of the data.  
-** The key is copied onto the P3 register exactly as 
+** There is no interpretation of the data.
+** The key is copied onto the P3 register exactly as
 ** it is found in the database file.
 **
 ** If the P1 cursor must be pointing to a valid row (not a NULL row)
@@ -57427,7 +57427,7 @@ case OP_NullRow: {
 
 /* Opcode: Last P1 P2 * * *
 **
-** The next use of the Rowid or Column or Next instruction for P1 
+** The next use of the Rowid or Column or Next instruction for P1
 ** will refer to the last entry in the database table or index.
 ** If the table or index is empty and P2>0, then jump immediately to P2.
 ** If P2 is 0 or if the table or index is not empty, fall through
@@ -57482,7 +57482,7 @@ case OP_Sort: {        /* jump */
 }
 /* Opcode: Rewind P1 P2 * * *
 **
-** The next use of the Rowid or Column or Next instruction for P1 
+** The next use of the Rowid or Column or Next instruction for P1
 ** will refer to the first entry in the database table or index.
 ** If the table or index is empty and P2>0, then jump immediately to P2.
 ** If P2 is 0 or if the table or index is not empty, fall through
@@ -57616,7 +57616,7 @@ case OP_IdxInsert: {        /* in2 */
 /* Opcode: IdxDelete P1 P2 P3 * *
 **
 ** The content of P3 registers starting at register P2 form
-** an unpacked index key. This opcode removes that entry from the 
+** an unpacked index key. This opcode removes that entry from the
 ** index opened by cursor P1.
 */
 case OP_IdxDelete: {
@@ -57687,28 +57687,28 @@ case OP_IdxRowid: {              /* out2-prerelease */
 
 /* Opcode: IdxGE P1 P2 P3 P4 P5
 **
-** The P4 register values beginning with P3 form an unpacked index 
-** key that omits the ROWID.  Compare this key value against the index 
+** The P4 register values beginning with P3 form an unpacked index
+** key that omits the ROWID.  Compare this key value against the index
 ** that P1 is currently pointing to, ignoring the ROWID on the P1 index.
 **
 ** If the P1 index entry is greater than or equal to the key value
 ** then jump to P2.  Otherwise fall through to the next instruction.
 **
-** If P5 is non-zero then the key value is increased by an epsilon 
+** If P5 is non-zero then the key value is increased by an epsilon
 ** prior to the comparison.  This make the opcode work like IdxGT except
 ** that if the key from register P3 is a prefix of the key in the cursor,
 ** the result is false whereas it would be true with IdxGT.
 */
 /* Opcode: IdxLT P1 P2 P3 * P5
 **
-** The P4 register values beginning with P3 form an unpacked index 
-** key that omits the ROWID.  Compare this key value against the index 
+** The P4 register values beginning with P3 form an unpacked index
+** key that omits the ROWID.  Compare this key value against the index
 ** that P1 is currently pointing to, ignoring the ROWID on the P1 index.
 **
 ** If the P1 index entry is less than the key value then jump to P2.
 ** Otherwise fall through to the next instruction.
 **
-** If P5 is non-zero then the key value is increased by an epsilon prior 
+** If P5 is non-zero then the key value is increased by an epsilon prior
 ** to the comparison.  This makes the opcode work like IdxLE.
 */
 case OP_IdxLT:          /* jump */
@@ -57761,8 +57761,8 @@ case OP_IdxGE: {        /* jump */
 ** might be moved into the newly deleted root page in order to keep all
 ** root pages contiguous at the beginning of the database.  The former
 ** value of the root page that moved - its value before the move occurred -
-** is stored in register P2.  If no page 
-** movement was required (because the table being dropped was already 
+** is stored in register P2.  If no page
+** movement was required (because the table being dropped was already
 ** the last one in the database) then a zero is stored in register P2.
 ** If AUTOVACUUM is disabled then a zero is stored in register P2.
 **
@@ -57817,8 +57817,8 @@ case OP_Destroy: {     /* out2-prerelease */
 ** that is used to store tables create using CREATE TEMPORARY TABLE.
 **
 ** If the P3 value is non-zero, then the table referred to must be an
-** intkey table (an SQL table, not an index). In this case the row change 
-** count is incremented by the number of rows in the table being cleared. 
+** intkey table (an SQL table, not an index). In this case the row change
+** count is incremented by the number of rows in the table being cleared.
 ** If P3 is greater than zero, then the value stored in register P3 is
 ** also incremented by the number of rows in the table being cleared.
 **
@@ -57973,7 +57973,7 @@ case OP_ParseSchema: {
 case OP_LoadAnalysis: {
   assert( pOp->p1>=0 && pOp->p1<db->nDb );
   rc = sqlite3AnalysisLoad(db, pOp->p1);
-  break;  
+  break;
 }
 #endif /* !defined(SQLITE_OMIT_ANALYZE) */
 
@@ -58023,7 +58023,7 @@ case OP_DropTrigger: {
 **
 ** The register P3 contains the maximum number of allowed errors.
 ** At most reg(P3) errors will be reported.
-** In other words, the analysis stops as soon as reg(P1) errors are 
+** In other words, the analysis stops as soon as reg(P1) errors are
 ** seen.  Reg(P1) is updated with the number of errors remaining.
 **
 ** The root page numbers of all tables in the database are integer
@@ -58186,13 +58186,13 @@ case OP_RowSetTest: {                     /* jump, in1, in3 */
 
 /* Opcode: Program P1 P2 P3 P4 *
 **
-** Execute the trigger program passed as P4 (type P4_SUBPROGRAM). 
+** Execute the trigger program passed as P4 (type P4_SUBPROGRAM).
 **
-** P1 contains the address of the memory cell that contains the first memory 
-** cell in an array of values used as arguments to the sub-program. P2 
-** contains the address to jump to if the sub-program throws an IGNORE 
-** exception using the RAISE() function. Register P3 contains the address 
-** of a memory cell in this (the parent) VM that is used to allocate the 
+** P1 contains the address of the memory cell that contains the first memory
+** cell in an array of values used as arguments to the sub-program. P2
+** contains the address to jump to if the sub-program throws an IGNORE
+** exception using the RAISE() function. Register P3 contains the address
+** of a memory cell in this (the parent) VM that is used to allocate the
 ** memory required by the sub-vdbe at runtime.
 **
 ** P4 is a pointer to the VM containing the trigger program.
@@ -58301,10 +58301,10 @@ case OP_Program: {        /* jump */
 
 /* Opcode: Param P1 P2 * * *
 **
-** This opcode is only ever present in sub-programs called via the 
-** OP_Program instruction. Copy a value currently stored in a memory 
-** cell of the calling (parent) frame to cell P2 in the current frames 
-** address space. This is used by trigger programs to access the new.* 
+** This opcode is only ever present in sub-programs called via the
+** OP_Program instruction. Copy a value currently stored in a memory
+** cell of the calling (parent) frame to cell P2 in the current frames
+** address space. This is used by trigger programs to access the new.*
 ** and old.* values.
 **
 ** The address of the cell in the parent frame is determined by adding
@@ -58328,8 +58328,8 @@ case OP_Param: {           /* out2-prerelease */
 /* Opcode: FkCounter P1 P2 * * *
 **
 ** Increment a "constraint counter" by P2 (P2 may be negative or positive).
-** If P1 is non-zero, the database constraint counter is incremented 
-** (deferred foreign key constraints). Otherwise, if P1 is zero, the 
+** If P1 is non-zero, the database constraint counter is incremented
+** (deferred foreign key constraints). Otherwise, if P1 is zero, the
 ** statement counter is incremented (immediate foreign key constraints).
 */
 case OP_FkCounter: {
@@ -58344,7 +58344,7 @@ case OP_FkCounter: {
 /* Opcode: FkIfZero P1 P2 * * *
 **
 ** This opcode tests if a foreign key constraint-counter is currently zero.
-** If so, jump to instruction P2. Otherwise, fall through to the next 
+** If so, jump to instruction P2. Otherwise, fall through to the next
 ** instruction.
 **
 ** If P1 is non-zero, then the jump is taken if the database constraint-counter
@@ -58367,7 +58367,7 @@ case OP_FkIfZero: {         /* jump */
 **
 ** P1 is a register in the root frame of this VM (the root frame is
 ** different from the current frame if this instruction is being executed
-** within a sub-program). Set the value of register P1 to the maximum of 
+** within a sub-program). Set the value of register P1 to the maximum of
 ** its current value and the value in register P2.
 **
 ** This instruction throws an error if the memory cell is not initially
@@ -58412,7 +58412,7 @@ case OP_IfPos: {        /* jump, in1 */
 
 /* Opcode: IfNeg P1 P2 * * *
 **
-** If the value of register P1 is less than zero, jump to P2. 
+** If the value of register P1 is less than zero, jump to P2.
 **
 ** It is illegal to use this instruction on a register that does
 ** not contain an integer.  An assertion fault will result if you try.
@@ -58429,7 +58429,7 @@ case OP_IfNeg: {        /* jump, in1 */
 /* Opcode: IfZero P1 P2 P3 * *
 **
 ** The register P1 must contain an integer.  Add literal P3 to the
-** value in register P1.  If the result is exactly 0, jump to P2. 
+** value in register P1.  If the result is exactly 0, jump to P2.
 **
 ** It is illegal to use this instruction on a register that does
 ** not contain an integer.  An assertion fault will result if you try.
@@ -58571,11 +58571,11 @@ case OP_IncrVacuum: {        /* jump */
 /* Opcode: Expire P1 * * * *
 **
 ** Cause precompiled statements to become expired. An expired statement
-** fails with an error code of SQLITE_SCHEMA if it is ever executed 
+** fails with an error code of SQLITE_SCHEMA if it is ever executed
 ** (via sqlite3_step()).
-** 
+**
 ** If P1 is 0, then all SQL statements become expired. If P1 is non-zero,
-** then only the currently executing statement is affected. 
+** then only the currently executing statement is affected.
 */
 case OP_Expire: {
   if( !pOp->p1 ){
@@ -58590,7 +58590,7 @@ case OP_Expire: {
 /* Opcode: TableLock P1 P2 P3 P4 *
 **
 ** Obtain a lock on a particular table. This instruction is only used when
-** the shared-cache feature is enabled. 
+** the shared-cache feature is enabled.
 **
 ** P1 is the index of the database in sqlite3.aDb[] of the database
 ** on which the lock is acquired.  A readlock is obtained if P3==0 or
@@ -58604,7 +58604,7 @@ case OP_Expire: {
 case OP_TableLock: {
   u8 isWriteLock = (u8)pOp->p3;
   if( isWriteLock || 0==(db->flags&SQLITE_ReadUncommitted) ){
-    int p1 = pOp->p1; 
+    int p1 = pOp->p1;
     assert( p1>=0 && p1<db->nDb );
     assert( (p->btreeMask & (1<<p1))!=0 );
     assert( isWriteLock==0 || isWriteLock==1 );
@@ -58621,7 +58621,7 @@ case OP_TableLock: {
 #ifndef SQLITE_OMIT_VIRTUALTABLE
 /* Opcode: VBegin * * * P4 *
 **
-** P4 may be a pointer to an sqlite3_vtab structure. If so, call the 
+** P4 may be a pointer to an sqlite3_vtab structure. If so, call the
 ** xBegin method for that table.
 **
 ** Also, whether or not P4 is set, check that this is not being called from
@@ -58792,7 +58792,7 @@ case OP_VFilter: {   /* jump */
 /* Opcode: VColumn P1 P2 P3 * *
 **
 ** Store the value of the P2-th column of
-** the row of the virtual-table that the 
+** the row of the virtual-table that the
 ** P1 cursor is pointing to into register P3.
 */
 case OP_VColumn: {
@@ -58929,23 +58929,23 @@ case OP_VRename: {
 **
 ** P4 is a pointer to a virtual table object, an sqlite3_vtab structure.
 ** This opcode invokes the corresponding xUpdate method. P2 values
-** are contiguous memory cells starting at P3 to pass to the xUpdate 
-** invocation. The value in register (P3+P2-1) corresponds to the 
+** are contiguous memory cells starting at P3 to pass to the xUpdate
+** invocation. The value in register (P3+P2-1) corresponds to the
 ** p2th element of the argv array passed to xUpdate.
 **
 ** The xUpdate method will do a DELETE or an INSERT or both.
 ** The argv[0] element (which corresponds to memory cell P3)
-** is the rowid of a row to delete.  If argv[0] is NULL then no 
-** deletion occurs.  The argv[1] element is the rowid of the new 
-** row.  This can be NULL to have the virtual table select the new 
-** rowid for itself.  The subsequent elements in the array are 
+** is the rowid of a row to delete.  If argv[0] is NULL then no
+** deletion occurs.  The argv[1] element is the rowid of the new
+** row.  This can be NULL to have the virtual table select the new
+** rowid for itself.  The subsequent elements in the array are
 ** the values of columns in the new row.
 **
 ** If P2==1 then no insert is performed.  argv[0] is the rowid of
 ** a row to delete.
 **
 ** P1 is a boolean flag. If it is set to true and the xUpdate call
-** is successful, then the value returned by sqlite3_last_insert_rowid() 
+** is successful, then the value returned by sqlite3_last_insert_rowid()
 ** is set to the value of the rowid for the row just inserted.
 */
 case OP_VUpdate: {
@@ -59104,7 +59104,7 @@ vdbe_error_halt:
   assert( rc );
   p->rc = rc;
   testcase( sqlite3GlobalConfig.xLog!=0 );
-  sqlite3_log(rc, "statement aborts at %d: [%s] %s", 
+  sqlite3_log(rc, "statement aborts at %d: [%s] %s",
                    pc, p->zSql, p->zErrMsg);
   sqlite3VdbeHalt(p);
   if( rc==SQLITE_IOERR_NOMEM ) db->mallocFailed = 1;
@@ -59204,7 +59204,7 @@ SQLITE_API int sqlite3_blob_open(
   int nAttempt = 0;
   int iCol;               /* Index of zColumn in row-record */
 
-  /* This VDBE program seeks a btree cursor to the identified 
+  /* This VDBE program seeks a btree cursor to the identified
   ** db/table/row entry. The reason for using a vdbe program instead
   ** of writing code to use the b-tree layer directly is that the
   ** vdbe program will take advantage of the various transaction,
@@ -59212,11 +59212,11 @@ SQLITE_API int sqlite3_blob_open(
   **
   ** After seeking the cursor, the vdbe executes an OP_ResultRow.
   ** Code external to the Vdbe then "borrows" the b-tree cursor and
-  ** uses it to implement the blob_read(), blob_write() and 
+  ** uses it to implement the blob_read(), blob_write() and
   ** blob_bytes() functions.
   **
   ** The sqlite3_blob_close() function finalizes the vdbe program,
-  ** which closes the b-tree cursor and (possibly) commits the 
+  ** which closes the b-tree cursor and (possibly) commits the
   ** transaction.
   */
   static const VdbeOpList openBlob[] = {
@@ -59291,7 +59291,7 @@ SQLITE_API int sqlite3_blob_open(
     }
 
     /* If the value is being opened for writing, check that the
-    ** column is not indexed, and that it is not part of a foreign key. 
+    ** column is not indexed, and that it is not part of a foreign key.
     ** It is against the rules to open a column to which either of these
     ** descriptions applies for writing.  */
     if( flags ){
@@ -59301,7 +59301,7 @@ SQLITE_API int sqlite3_blob_open(
       if( db->flags&SQLITE_ForeignKeys ){
         /* Check that the column is not part of an FK child key definition. It
         ** is not necessary to check if it is part of a parent key, as parent
-        ** key columns must be indexed. The check below will pick up this 
+        ** key columns must be indexed. The check below will pick up this
         ** case.  */
         FKey *pFKey;
         for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){
@@ -59346,7 +59346,7 @@ SQLITE_API int sqlite3_blob_open(
       sqlite3VdbeChangeP2(v, 1, pTab->pSchema->schema_cookie);
 
       /* Make sure a mutex is held on the table to be accessed */
-      sqlite3VdbeUsesBtree(v, iDb); 
+      sqlite3VdbeUsesBtree(v, iDb);
 
       /* Configure the OP_TableLock instruction */
       sqlite3VdbeChangeP1(v, 2, iDb);
@@ -59354,7 +59354,7 @@ SQLITE_API int sqlite3_blob_open(
       sqlite3VdbeChangeP3(v, 2, flags);
       sqlite3VdbeChangeP4(v, 2, pTab->zName, P4_TRANSIENT);
 
-      /* Remove either the OP_OpenWrite or OpenRead. Set the P2 
+      /* Remove either the OP_OpenWrite or OpenRead. Set the P2
       ** parameter of the other to pTab->tnum.  */
       sqlite3VdbeChangeToNoop(v, 4 - flags, 1);
       sqlite3VdbeChangeP2(v, 3 + flags, pTab->tnum);
@@ -59364,7 +59364,7 @@ SQLITE_API int sqlite3_blob_open(
       ** think that the table has one more column than it really
       ** does. An OP_Column to retrieve this imaginary column will
       ** always return an SQL NULL. This is useful because it means
-      ** we can invoke OP_Column to fill in the vdbe cursors type 
+      ** we can invoke OP_Column to fill in the vdbe cursors type
       ** and offset cache without causing any IO.
       */
       sqlite3VdbeChangeP4(v, 3+flags, SQLITE_INT_TO_PTR(pTab->nCol+1),P4_INT32);
@@ -59373,7 +59373,7 @@ SQLITE_API int sqlite3_blob_open(
         sqlite3VdbeMakeReady(v, 1, 1, 1, 0, 0, 0);
       }
     }
-   
+
     sqlite3BtreeLeaveAll(db);
     if( db->mallocFailed ){
       goto blob_open_out;
@@ -59465,10 +59465,10 @@ SQLITE_API int sqlite3_blob_close(sqlite3_blob *pBlob){
 ** Perform a read or write operation on a blob
 */
 static int blobReadWrite(
-  sqlite3_blob *pBlob, 
-  void *z, 
-  int n, 
-  int iOffset, 
+  sqlite3_blob *pBlob,
+  void *z,
+  int n,
+  int iOffset,
   int (*xCall)(BtCursor*, u32, u32, void*)
 ){
   int rc;
@@ -59562,7 +59562,7 @@ SQLITE_API int sqlite3_blob_bytes(sqlite3_blob *pBlob){
 ** be used to service read() and write() requests. The actual file
 ** on disk is not created or populated until either:
 **
-**   1) The in-memory representation grows too large for the allocated 
+**   1) The in-memory representation grows too large for the allocated
 **      buffer, or
 **   2) The sqlite3JournalCreate() function is called.
 */
@@ -59586,7 +59586,7 @@ struct JournalFile {
 typedef struct JournalFile JournalFile;
 
 /*
-** If it does not already exists, create and populate the on-disk file 
+** If it does not already exists, create and populate the on-disk file
 ** for JournalFile p.
 */
 static int createFile(JournalFile *p){
@@ -59726,7 +59726,7 @@ static struct sqlite3_io_methods JournalFileMethods = {
   0              /* xDeviceCharacteristics */
 };
 
-/* 
+/*
 ** Open a journal file.
 */
 SQLITE_PRIVATE int sqlite3JournalOpen(
@@ -59765,7 +59765,7 @@ SQLITE_PRIVATE int sqlite3JournalCreate(sqlite3_file *p){
   return createFile((JournalFile *)p);
 }
 
-/* 
+/*
 ** Return the number of bytes required to store a JournalFile that uses vfs
 ** pVfs to create the underlying on-disk files.
 */
@@ -59863,7 +59863,7 @@ static int memjrnlRead(
 
   if( p->readpoint.iOffset!=iOfst || iOfst==0 ){
     sqlite3_int64 iOff = 0;
-    for(pChunk=p->pFirst; 
+    for(pChunk=p->pFirst;
         ALWAYS(pChunk) && (iOff+JOURNAL_CHUNKSIZE)<=iOfst;
         pChunk=pChunk->pNext
     ){
@@ -60007,7 +60007,7 @@ static struct sqlite3_io_methods MemJournalMethods = {
   0                 /* xDeviceCharacteristics */
 };
 
-/* 
+/*
 ** Open a journal file.
 */
 SQLITE_PRIVATE void sqlite3MemJournalOpen(sqlite3_file *pJfd){
@@ -60018,14 +60018,14 @@ SQLITE_PRIVATE void sqlite3MemJournalOpen(sqlite3_file *pJfd){
 }
 
 /*
-** Return true if the file-handle passed as an argument is 
-** an in-memory journal 
+** Return true if the file-handle passed as an argument is
+** an in-memory journal
 */
 SQLITE_PRIVATE int sqlite3IsMemJournal(sqlite3_file *pJfd){
   return pJfd->pMethods==&MemJournalMethods;
 }
 
-/* 
+/*
 ** Return the number of bytes required to store a MemJournal that uses vfs
 ** pVfs to create the underlying on-disk files.
 */
@@ -60125,7 +60125,7 @@ SQLITE_PRIVATE int sqlite3WalkSelectExpr(Walker *pWalker, Select *p){
 ** Walk the parse trees associated with all subqueries in the
 ** FROM clause of SELECT statement p.  Do not invoke the select
 ** callback on p, but do invoke it on each FROM clause subquery
-** and on any subqueries further down in the tree.  Return 
+** and on any subqueries further down in the tree.  Return
 ** WRC_Abort or WRC_Continue;
 */
 SQLITE_PRIVATE int sqlite3WalkSelectFrom(Walker *pWalker, Select *p){
@@ -60142,7 +60142,7 @@ SQLITE_PRIVATE int sqlite3WalkSelectFrom(Walker *pWalker, Select *p){
     }
   }
   return WRC_Continue;
-} 
+}
 
 /*
 ** Call sqlite3WalkExpr() for every expression in Select statement p.
@@ -60200,7 +60200,7 @@ SQLITE_PRIVATE int sqlite3WalkSelect(Walker *pWalker, Select *p){
 **
 ** The reason for suppressing the TK_AS term when the expression is a simple
 ** column reference is so that the column reference will be recognized as
-** usable by indices within the WHERE clause processing logic. 
+** usable by indices within the WHERE clause processing logic.
 **
 ** Hack:  The TK_AS operator is inhibited if zType[0]=='G'.  This means
 ** that in a GROUP BY clause, the expression is evaluated twice.  Hence:
@@ -60258,7 +60258,7 @@ static void resolveAlias(
     pDup->flags |= EP_ExpCollate;
   }
 
-  /* Before calling sqlite3ExprDelete(), set the EP_Static flag. This 
+  /* Before calling sqlite3ExprDelete(), set the EP_Static flag. This
   ** prevents ExprDelete() from deleting the Expr structure itself,
   ** allowing it to be repopulated by the memcpy() on the following line.
   */
@@ -60270,7 +60270,7 @@ static void resolveAlias(
 
 /*
 ** Given the name of a column of the form X.Y.Z or Y.Z or just Z, look up
-** that name in the set of source tables in pSrcList and make the pExpr 
+** that name in the set of source tables in pSrcList and make the pExpr
 ** expression node refer back to that source column.  The following changes
 ** are made to pExpr:
 **
@@ -60332,7 +60332,7 @@ static int lookupName(
         Table *pTab;
         int iDb;
         Column *pCol;
-  
+
         pTab = pItem->pTab;
         assert( pTab!=0 && pTab->zName!=0 );
         iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
@@ -60394,7 +60394,7 @@ static int lookupName(
     }
 
 #ifndef SQLITE_OMIT_TRIGGER
-    /* If we have not already resolved the name, then maybe 
+    /* If we have not already resolved the name, then maybe
     ** it is a new.* or old.* trigger argument reference
     */
     if( zDb==0 && zTab!=0 && cnt==0 && pParse->pTriggerTab!=0 ){
@@ -60409,7 +60409,7 @@ static int lookupName(
         pTab = pParse->pTriggerTab;
       }
 
-      if( pTab ){ 
+      if( pTab ){
         int iCol;
         pSchema = pTab->pSchema;
         cntTab++;
@@ -60486,7 +60486,7 @@ static int lookupName(
           assert( zTab==0 && zDb==0 );
           goto lookupname_end;
         }
-      } 
+      }
     }
 
     /* Advance to the next name context.  The loop will exit when either
@@ -60634,7 +60634,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
       SrcList *pSrcList = pNC->pSrcList;
       struct SrcList_item *pItem;
       assert( pSrcList && pSrcList->nSrc==1 );
-      pItem = pSrcList->a; 
+      pItem = pSrcList->a;
       pExpr->op = TK_COLUMN;
       pExpr->pTab = pItem->pTab;
       pExpr->iTable = pItem->iCursor;
@@ -60649,7 +60649,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
     case TK_ID: {
       return lookupName(pParse, 0, 0, pExpr->u.zToken, pNC, pExpr);
     }
-  
+
     /* A table name and column name:     ID.ID
     ** Or a database, table and column:  ID.ID.ID
     */
@@ -60738,7 +60738,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
       sqlite3WalkExprList(pWalker, pList);
       if( is_agg ) pNC->allowAgg = 1;
       /* FIX ME:  Compute pExpr->affinity based on the expected return
-      ** type of the function 
+      ** type of the function
       */
       return WRC_Prune;
     }
@@ -60879,7 +60879,7 @@ static void resolveOutOfRangeError(
   int i,                 /* The index (1-based) of the term out of range */
   int mx                 /* Largest permissible value of i */
 ){
-  sqlite3ErrorMsg(pParse, 
+  sqlite3ErrorMsg(pParse,
     "%r %s BY term out of range - should be "
     "between 1 and %d", i, zType, mx);
 }
@@ -61100,7 +61100,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
   ExprList *pGroupBy;     /* The GROUP BY clause */
   Select *pLeftmost;      /* Left-most of SELECT of a compound */
   sqlite3 *db;            /* Database connection */
-  
+
 
   assert( p!=0 );
   if( p->selFlags & SF_Resolved ){
@@ -61140,14 +61140,14 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
         sqlite3ResolveExprNames(&sNC, p->pOffset) ){
       return WRC_Abort;
     }
-  
+
     /* Set up the local name-context to pass to sqlite3ResolveExprNames() to
     ** resolve the result-set expression list.
     */
     sNC.allowAgg = 1;
     sNC.pSrcList = p->pSrc;
     sNC.pNext = pOuterNC;
-  
+
     /* Resolve names in the result set. */
     pEList = p->pEList;
     assert( pEList!=0 );
@@ -61157,7 +61157,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
         return WRC_Abort;
       }
     }
-  
+
     /* Recursively resolve names in all subqueries
     */
     for(i=0; i<p->pSrc->nSrc; i++){
@@ -61170,8 +61170,8 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
         if( pParse->nErr || db->mallocFailed ) return WRC_Abort;
       }
     }
-  
-    /* If there are no aggregate functions in the result-set, and no GROUP BY 
+
+    /* If there are no aggregate functions in the result-set, and no GROUP BY
     ** expression, do not allow aggregates in any of the other expressions.
     */
     assert( (p->selFlags & SF_Aggregate)==0 );
@@ -61181,14 +61181,14 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
     }else{
       sNC.allowAgg = 0;
     }
-  
+
     /* If a HAVING clause is present, then there must be a GROUP BY clause.
     */
     if( p->pHaving && !pGroupBy ){
       sqlite3ErrorMsg(pParse, "a GROUP BY clause is required before HAVING");
       return WRC_Abort;
     }
-  
+
     /* Add the expression list to the name-context before parsing the
     ** other expressions in the SELECT statement. This is so that
     ** expressions in the WHERE clause (etc.) can refer to expressions by
@@ -61205,7 +61205,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
     }
 
     /* The ORDER BY and GROUP BY clauses may not refer to terms in
-    ** outer queries 
+    ** outer queries
     */
     sNC.pNext = 0;
     sNC.allowAgg = 1;
@@ -61221,13 +61221,13 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
     if( db->mallocFailed ){
       return WRC_Abort;
     }
-  
-    /* Resolve the GROUP BY clause.  At the same time, make sure 
+
+    /* Resolve the GROUP BY clause.  At the same time, make sure
     ** the GROUP BY clause does not contain aggregate functions.
     */
     if( pGroupBy ){
       struct ExprList_item *pItem;
-    
+
       if( resolveOrderGroupBy(&sNC, p, pGroupBy, "GROUP") || db->mallocFailed ){
         return WRC_Abort;
       }
@@ -61262,7 +61262,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
 ** checking on function usage and set a flag if any aggregate functions
 ** are seen.
 **
-** To resolve table columns references we look for nodes (or subtrees) of the 
+** To resolve table columns references we look for nodes (or subtrees) of the
 ** form X.Y.Z or Y.Z or just Z where
 **
 **      X:   The name of a database.  Ex:  "main" or "temp" or
@@ -61294,7 +61294,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
 **
 **      SELECT a+b AS x, c+d AS y FROM t1 ORDER BY a+b;
 **
-** Function calls are checked to make sure that the function is 
+** Function calls are checked to make sure that the function is
 ** defined and that the correct number of arguments are specified.
 ** If the function is an aggregate function, then the pNC->hasAgg is
 ** set and the opcode is changed from TK_FUNCTION to TK_AGG_FUNCTION.
@@ -61304,7 +61304,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
 ** An error message is left in pParse if anything is amiss.  The number
 ** if errors is returned.
 */
-SQLITE_PRIVATE int sqlite3ResolveExprNames( 
+SQLITE_PRIVATE int sqlite3ResolveExprNames(
   NameContext *pNC,       /* Namespace to resolve expressions in. */
   Expr *pExpr             /* The expression to be analyzed. */
 ){
@@ -61391,7 +61391,7 @@ SQLITE_PRIVATE void sqlite3ResolveSelectNames(
 ** Return the 'affinity' of the expression pExpr if any.
 **
 ** If pExpr is a column, a reference to a column via an 'AS' alias,
-** or a sub-select with a column as the return value, then the 
+** or a sub-select with a column as the return value, then the
 ** affinity of that column is returned. Otherwise, 0x00 is returned,
 ** indicating no affinity for the expression.
 **
@@ -61415,7 +61415,7 @@ SQLITE_PRIVATE char sqlite3ExprAffinity(Expr *pExpr){
     return sqlite3AffinityType(pExpr->u.zToken);
   }
 #endif
-  if( (op==TK_AGG_COLUMN || op==TK_COLUMN || op==TK_REGISTER) 
+  if( (op==TK_AGG_COLUMN || op==TK_COLUMN || op==TK_REGISTER)
    && pExpr->pTab!=0
   ){
     /* op==TK_REGISTER && pExpr->pTab!=0 happens when pExpr was originally
@@ -61483,7 +61483,7 @@ SQLITE_PRIVATE CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){
     }
     p = p->pLeft;
   }
-  if( sqlite3CheckCollSeq(pParse, pColl) ){ 
+  if( sqlite3CheckCollSeq(pParse, pColl) ){
     pColl = 0;
   }
   return pColl;
@@ -61579,8 +61579,8 @@ static u8 binaryCompareP5(Expr *pExpr1, Expr *pExpr2, int jumpIfNull){
 ** it is not considered.
 */
 SQLITE_PRIVATE CollSeq *sqlite3BinaryCompareCollSeq(
-  Parse *pParse, 
-  Expr *pLeft, 
+  Parse *pParse,
+  Expr *pLeft,
   Expr *pRight
 ){
   CollSeq *pColl;
@@ -61634,7 +61634,7 @@ SQLITE_PRIVATE int sqlite3ExprCheckHeight(Parse *pParse, int nHeight){
   int rc = SQLITE_OK;
   int mxHeight = pParse->db->aLimit[SQLITE_LIMIT_EXPR_DEPTH];
   if( nHeight>mxHeight ){
-    sqlite3ErrorMsg(pParse, 
+    sqlite3ErrorMsg(pParse,
        "Expression tree is too large (maximum depth %d)", mxHeight
     );
     rc = SQLITE_ERROR;
@@ -61680,10 +61680,10 @@ static void heightOfSelect(Select *p, int *pnHeight){
 }
 
 /*
-** Set the Expr.nHeight variable in the structure passed as an 
-** argument. An expression with no children, Expr.pList or 
+** Set the Expr.nHeight variable in the structure passed as an
+** argument. An expression with no children, Expr.pList or
 ** Expr.pSelect member has a height of 1. Any other expression
-** has a height equal to the maximum height of any other 
+** has a height equal to the maximum height of any other
 ** referenced Expr plus one.
 */
 static void exprSetHeight(Expr *p){
@@ -61770,7 +61770,7 @@ SQLITE_PRIVATE Expr *sqlite3ExprAlloc(
         pNew->u.zToken = (char*)&pNew[1];
         memcpy(pNew->u.zToken, pToken->z, pToken->n);
         pNew->u.zToken[pToken->n] = 0;
-        if( dequote && nExtra>=3 
+        if( dequote && nExtra>=3
              && ((c = pToken->z[0])=='\'' || c=='"' || c=='[' || c=='`') ){
           sqlite3Dequote(pNew->u.zToken);
           if( c=='"' ) pNew->flags |= EP_DblQuoted;
@@ -61779,7 +61779,7 @@ SQLITE_PRIVATE Expr *sqlite3ExprAlloc(
     }
 #if SQLITE_MAX_EXPR_DEPTH>0
     pNew->nHeight = 1;
-#endif  
+#endif
   }
   return pNew;
 }
@@ -61890,7 +61890,7 @@ SQLITE_PRIVATE Expr *sqlite3ExprFunction(Parse *pParse, ExprList *pList, Token *
 
 /*
 ** Assign a variable number to an expression that encodes a wildcard
-** in the original SQL statement.  
+** in the original SQL statement.
 **
 ** Wildcards consisting of a single "?" are assigned the next sequential
 ** variable number.
@@ -61965,7 +61965,7 @@ SQLITE_PRIVATE void sqlite3ExprAssignVarNumber(Parse *pParse, Expr *pExpr){
         pParse->apVarExpr[pParse->nVarExpr++] = pExpr;
       }
     }
-  } 
+  }
   if( !pParse->nErr && pParse->nVar>db->aLimit[SQLITE_LIMIT_VARIABLE_NUMBER] ){
     sqlite3ErrorMsg(pParse, "too many SQL variables");
   }
@@ -61994,7 +61994,7 @@ SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3 *db, Expr *p){
 }
 
 /*
-** Return the number of bytes allocated for the expression structure 
+** Return the number of bytes allocated for the expression structure
 ** passed as the first argument. This is always one of EXPR_FULLSIZE,
 ** EXPR_REDUCEDSIZE or EXPR_TOKENONLYSIZE.
 */
@@ -62009,14 +62009,14 @@ static int exprStructSize(Expr *p){
 ** to store a copy of an expression or expression tree.  They differ in
 ** how much of the tree is measured.
 **
-**     dupedExprStructSize()     Size of only the Expr structure 
+**     dupedExprStructSize()     Size of only the Expr structure
 **     dupedExprNodeSize()       Size of Expr + space for token
 **     dupedExprSize()           Expr + token + subtree components
 **
 ***************************************************************************
 **
-** The dupedExprStructSize() function returns two values OR-ed together:  
-** (1) the space required for a copy of the Expr structure only and 
+** The dupedExprStructSize() function returns two values OR-ed together:
+** (1) the space required for a copy of the Expr structure only and
 ** (2) the EP_xxx flags that indicate what the structure size should be.
 ** The return values is always one of:
 **
@@ -62045,7 +62045,7 @@ static int dupedExprStructSize(Expr *p, int flags){
     nSize = EXPR_FULLSIZE;
   }else{
     assert( !ExprHasAnyProperty(p, EP_TokenOnly|EP_Reduced) );
-    assert( !ExprHasProperty(p, EP_FromJoin) ); 
+    assert( !ExprHasProperty(p, EP_FromJoin) );
     assert( (p->flags2 & EP2_MallocedToken)==0 );
     assert( (p->flags2 & EP2_Irreducible)==0 );
     if( p->pLeft || p->pRight || p->pColl || p->x.pList ){
@@ -62058,7 +62058,7 @@ static int dupedExprStructSize(Expr *p, int flags){
 }
 
 /*
-** This function returns the space in bytes required to store the copy 
+** This function returns the space in bytes required to store the copy
 ** of the Expr structure and a copy of the Expr.u.zToken string (if that
 ** string is defined.)
 */
@@ -62071,16 +62071,16 @@ static int dupedExprNodeSize(Expr *p, int flags){
 }
 
 /*
-** Return the number of bytes required to create a duplicate of the 
+** Return the number of bytes required to create a duplicate of the
 ** expression passed as the first argument. The second argument is a
 ** mask containing EXPRDUP_XXX flags.
 **
 ** The value returned includes space to create a copy of the Expr struct
 ** itself and the buffer referred to by Expr.u.zToken, if any.
 **
-** If the EXPRDUP_REDUCE flag is set, then the return value includes 
-** space to duplicate all Expr nodes in the tree formed by Expr.pLeft 
-** and Expr.pRight variables (but not for any structures pointed to or 
+** If the EXPRDUP_REDUCE flag is set, then the return value includes
+** space to duplicate all Expr nodes in the tree formed by Expr.pLeft
+** and Expr.pRight variables (but not for any structures pointed to or
 ** descended from the Expr.x.pList or Expr.x.pSelect variables).
 */
 static int dupedExprSize(Expr *p, int flags){
@@ -62095,8 +62095,8 @@ static int dupedExprSize(Expr *p, int flags){
 }
 
 /*
-** This function is similar to sqlite3ExprDup(), except that if pzBuffer 
-** is not NULL then *pzBuffer is assumed to point to a buffer large enough 
+** This function is similar to sqlite3ExprDup(), except that if pzBuffer
+** is not NULL then *pzBuffer is assumed to point to a buffer large enough
 ** to store the copy of expression p, the copies of p->u.zToken
 ** (if applicable), and the copies of the p->pLeft and p->pRight expressions,
 ** if any. Before returning, *pzBuffer is set to the first byte passed the
@@ -62193,7 +62193,7 @@ static Expr *exprDup(sqlite3 *db, Expr *p, int flags, u8 **pzBuffer){
 ** without effecting the originals.
 **
 ** The expression list, ID, and source lists return by sqlite3ExprListDup(),
-** sqlite3IdListDup(), and sqlite3SrcListDup() can not be further expanded 
+** sqlite3IdListDup(), and sqlite3SrcListDup() can not be further expanded
 ** by subsequent calls to sqlite*ListAppend() routines.
 **
 ** Any tables that the SrcList might point to are not duplicated.
@@ -62219,7 +62219,7 @@ SQLITE_PRIVATE ExprList *sqlite3ExprListDup(sqlite3 *db, ExprList *p, int flags)
   if( pItem==0 ){
     sqlite3DbFree(db, pNew);
     return 0;
-  } 
+  }
   pOldItem = p->a;
   for(i=0; i<p->nExpr; i++, pItem++, pOldItem++){
     Expr *pOldExpr = pOldItem->pExpr;
@@ -62236,7 +62236,7 @@ SQLITE_PRIVATE ExprList *sqlite3ExprListDup(sqlite3 *db, ExprList *p, int flags)
 
 /*
 ** If cursors, triggers, views and subqueries are all omitted from
-** the build, then none of the following routines, except for 
+** the build, then none of the following routines, except for
 ** sqlite3SelectDup(), can be called. sqlite3SelectDup() is sometimes
 ** called with a NULL argument.
 */
@@ -62366,7 +62366,7 @@ SQLITE_PRIVATE ExprList *sqlite3ExprListAppend(
   }
   return pList;
 
-no_mem:     
+no_mem:
   /* Avoid leaking memory if malloc has failed. */
   sqlite3ExprDelete(db, pExpr);
   sqlite3ExprListDelete(db, pList);
@@ -62598,7 +62598,7 @@ SQLITE_PRIVATE int sqlite3ExprIsInteger(Expr *p, int *pValue){
 ** Return FALSE if there is no chance that the expression can be NULL.
 **
 ** If the expression might be NULL or if the expression is too complex
-** to tell return TRUE.  
+** to tell return TRUE.
 **
 ** This routine is used as an optimization, to skip OP_IsNull opcodes
 ** when we know that a value cannot be NULL.  Hence, a false positive
@@ -62626,7 +62626,7 @@ SQLITE_PRIVATE int sqlite3ExprCanBeNull(const Expr *p){
 
 /*
 ** Generate an OP_IsNull instruction that tests register iReg and jumps
-** to location iDest if the value in iReg is NULL.  The value in iReg 
+** to location iDest if the value in iReg is NULL.  The value in iReg
 ** was computed by pExpr.  If we can look at pExpr at compile-time and
 ** determine that it can never generate a NULL, then the OP_IsNull operation
 ** can be omitted.
@@ -62741,7 +62741,7 @@ static int isCandidateForInOpt(Select *p){
 ** either to test for membership of the (...) set or to iterate through
 ** its members, skipping duplicates.
 **
-** The index of the cursor opened on the b-tree (database table, database index 
+** The index of the cursor opened on the b-tree (database table, database index
 ** or ephermal table) is stored in pX->iTable before this function returns.
 ** The returned value of this function indicates the b-tree type, as follows:
 **
@@ -62761,13 +62761,13 @@ static int isCandidateForInOpt(Select *p){
 ** to be unique - either because it is an INTEGER PRIMARY KEY or it
 ** has a UNIQUE constraint or UNIQUE index.
 **
-** If the prNotFound parameter is not 0, then the b-tree will be used 
-** for fast set membership tests. In this case an epheremal table must 
-** be used unless <column> is an INTEGER PRIMARY KEY or an index can 
+** If the prNotFound parameter is not 0, then the b-tree will be used
+** for fast set membership tests. In this case an epheremal table must
+** be used unless <column> is an INTEGER PRIMARY KEY or an index can
 ** be found with <column> as its left-most column.
 **
 ** When the b-tree is being used for membership tests, the calling function
-** needs to know whether or not the structure contains an SQL NULL 
+** needs to know whether or not the structure contains an SQL NULL
 ** value in order to correctly evaluate expressions like "X IN (Y, Z)".
 ** If there is any chance that the (...) might contain a NULL value at
 ** runtime, then a register is allocated and the register number written
@@ -62799,7 +62799,7 @@ SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, int *prNotFound){
   assert( pX->op==TK_IN );
 
   /* Check to see if an existing table or index can be used to
-  ** satisfy the query.  This is preferable to generating a new 
+  ** satisfy the query.  This is preferable to generating a new
   ** ephemeral table.
   */
   p = (ExprHasProperty(pX, EP_xIsSelect) ? pX->x.pSelect : 0);
@@ -62810,7 +62810,7 @@ SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, int *prNotFound){
     Vdbe *v = sqlite3GetVdbe(pParse);      /* Virtual machine being coded */
     Table *pTab = p->pSrc->a[0].pTab;      /* Table <table>. */
     int iDb;                               /* Database idx for pTab */
-   
+
     /* Code an OP_VerifyCookie and OP_TableLock for <table>. */
     iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
     sqlite3CodeVerifySchema(pParse, iDb);
@@ -62840,7 +62840,7 @@ SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, int *prNotFound){
       ** to this collation sequence.  */
       CollSeq *pReq = sqlite3BinaryCompareCollSeq(pParse, pX->pLeft, pExpr);
 
-      /* Check that the affinity that will be used to perform the 
+      /* Check that the affinity that will be used to perform the
       ** comparison is the same as the affinity of the column. If
       ** it is not, it is not possible to use any index.
       */
@@ -62855,11 +62855,11 @@ SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, int *prNotFound){
           int iMem = ++pParse->nMem;
           int iAddr;
           char *pKey;
-  
+
           pKey = (char *)sqlite3IndexKeyinfo(pParse, pIdx);
           iAddr = sqlite3VdbeAddOp1(v, OP_If, iMem);
           sqlite3VdbeAddOp2(v, OP_Integer, 1, iMem);
-  
+
           sqlite3VdbeAddOp4(v, OP_OpenRead, iTab, pIdx->tnum, iDb,
                                pKey,P4_KEYINFO_HANDOFF);
           VdbeComment((v, "%s", pIdx->zName));
@@ -62970,7 +62970,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(
       affinity = sqlite3ExprAffinity(pLeft);
 
       /* Whether this is an 'x IN(SELECT...)' or an 'x IN(<exprlist>)'
-      ** expression it is handled the same way.  An ephemeral table is 
+      ** expression it is handled the same way.  An ephemeral table is
       ** filled with single-field index keys representing the results
       ** from the SELECT or the <exprlist>.
       **
@@ -63004,7 +63004,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(
           return 0;
         }
         pEList = pExpr->x.pSelect->pEList;
-        if( ALWAYS(pEList!=0 && pEList->nExpr>0) ){ 
+        if( ALWAYS(pEList!=0 && pEList->nExpr>0) ){
           keyInfo.aColl[0] = sqlite3BinaryCompareCollSeq(pParse, pExpr->pLeft,
               pEList->a[0].pExpr);
         }
@@ -63131,7 +63131,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(
 ** if the LHS is NULL or if the LHS is not contained within the RHS and the
 ** RHS contains one or more NULL values.
 **
-** This routine generates code will jump to destIfFalse if the LHS is not 
+** This routine generates code will jump to destIfFalse if the LHS is not
 ** contained within the RHS.  If due to NULLs we cannot determine if the LHS
 ** is contained in the RHS then jump to destIfNull.  If the LHS is contained
 ** within the RHS then fall through.
@@ -63180,9 +63180,9 @@ static void sqlite3ExprCodeIN(
     */
     sqlite3VdbeAddOp4(v, OP_Affinity, r1, 1, 0, &affinity, 1);
 
-    /* If the set membership test fails, then the result of the 
+    /* If the set membership test fails, then the result of the
     ** "x IN (...)" expression must be either 0 or NULL. If the set
-    ** contains no NULL values, then the result is 0. If the set 
+    ** contains no NULL values, then the result is 0. If the set
     ** contains one or more NULL values, then the result of the
     ** expression is also NULL.
     */
@@ -63228,7 +63228,7 @@ static void sqlite3ExprCodeIN(
       sqlite3VdbeAddOp2(v, OP_If, rRhsHasNull, destIfNull);
       sqlite3VdbeAddOp2(v, OP_Goto, 0, destIfFalse);
 
-      /* The OP_Found at the top of this branch jumps here when true, 
+      /* The OP_Found at the top of this branch jumps here when true,
       ** causing the overall IN expression evaluation to fall through.
       */
       sqlite3VdbeJumpHere(v, j1);
@@ -63256,7 +63256,7 @@ static char *dup8bytes(Vdbe *v, const char *in){
 ** Generate an instruction that will put the floating point
 ** value described by z[0..n-1] into register iMem.
 **
-** The z[] string will probably not be zero-terminated.  But the 
+** The z[] string will probably not be zero-terminated.  But the
 ** z[n] character is guaranteed to be something that does not look
 ** like the continuation of the number.
 */
@@ -63278,7 +63278,7 @@ static void codeReal(Vdbe *v, const char *z, int negateFlag, int iMem){
 ** Generate an instruction that will put the integer describe by
 ** text z[0..n-1] into register iMem.
 **
-** The z[] string will probably not be zero-terminated.  But the 
+** The z[] string will probably not be zero-terminated.  But the
 ** z[n] character is guaranteed to be something that does not look
 ** like the continuation of the number.
 */
@@ -63481,7 +63481,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeGetColumn(
       sqlite3ExprCachePinRegister(pParse, p->iReg);
       return p->iReg;
     }
-  }  
+  }
   assert( v!=0 );
   if( iColumn<0 ){
     sqlite3VdbeAddOp2(v, OP_Rowid, iTable, iReg);
@@ -63595,7 +63595,7 @@ SQLITE_PRIVATE void sqlite3ExprHardCopy(Parse *pParse, int iReg, int nReg){
 ** same order that it is executed.
 **
 ** Aliases are numbered starting with 1.  So iAlias is in the range
-** of 1 to pParse->nAlias inclusive.  
+** of 1 to pParse->nAlias inclusive.
 **
 ** pParse->aAlias[iAlias-1] records the register number where the value
 ** of the iAlias-th alias is stored.  If zero, that means that the
@@ -63835,7 +63835,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target)
     case TK_BITOR:
     case TK_SLASH:
     case TK_LSHIFT:
-    case TK_RSHIFT: 
+    case TK_RSHIFT:
     case TK_CONCAT: {
       assert( TK_AND==OP_And );
       assert( TK_OR==OP_Or );
@@ -63990,7 +63990,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target)
       ** see if it is a column in a virtual table.  This is done because
       ** the left operand of infix functions (the operand we want to
       ** control overloading) ends up as the second argument to the
-      ** function.  The expression "A glob B" is equivalent to 
+      ** function.  The expression "A glob B" is equivalent to
       ** "glob(B,A).  We want to use the A in "A glob B" to test
       ** for function overloading.  But we use the B term in "glob(B,A)".
       */
@@ -64009,7 +64009,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target)
         }
       }
       if( pDef->flags & SQLITE_FUNC_NEEDCOLL ){
-        if( !pColl ) pColl = db->pDfltColl; 
+        if( !pColl ) pColl = db->pDfltColl;
         sqlite3VdbeAddOp4(v, OP_CollSeq, 0, 0, 0, (char *)pColl, P4_COLLSEQ);
       }
       sqlite3VdbeAddOp4(v, OP_Function, constMask, r1, target,
@@ -64092,7 +64092,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target)
       **
       ** The expression is implemented using an OP_Param opcode. The p1
       ** parameter is set to 0 for an old.rowid reference, or to (i+1)
-      ** to reference another column of the old.* pseudo-table, where 
+      ** to reference another column of the old.* pseudo-table, where
       ** i is the index of the column. For a new.rowid reference, p1 is
       ** set to (n+1), where n is the number of columns in each pseudo-table.
       ** For a reference to any other column in the new.* pseudo-table, p1
@@ -64106,7 +64106,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target)
       **
       **   p1==0   ->    old.rowid     p1==3   ->    new.rowid
       **   p1==1   ->    old.a         p1==4   ->    new.a
-      **   p1==2   ->    old.b         p1==5   ->    new.b       
+      **   p1==2   ->    old.b         p1==5   ->    new.b
       */
       Table *pTab = pExpr->pTab;
       int p1 = pExpr->iTable * (pTab->nCol+1) + 1 + pExpr->iColumn;
@@ -64126,7 +64126,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target)
 #ifndef SQLITE_OMIT_FLOATING_POINT
       /* If the column has REAL affinity, it may currently be stored as an
       ** integer. Use OP_RealAffinity to make sure it is really real.  */
-      if( pExpr->iColumn>=0 
+      if( pExpr->iColumn>=0
        && pTab->aCol[pExpr->iColumn].affinity==SQLITE_AFF_REAL
       ){
         sqlite3VdbeAddOp1(v, OP_RealAffinity, target);
@@ -64213,14 +64213,14 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target)
       }else{
         sqlite3VdbeAddOp2(v, OP_Null, 0, target);
       }
-      assert( db->mallocFailed || pParse->nErr>0 
+      assert( db->mallocFailed || pParse->nErr>0
            || pParse->iCacheLevel==iCacheLevel );
       sqlite3VdbeResolveLabel(v, endLabel);
       break;
     }
 #ifndef SQLITE_OMIT_TRIGGER
     case TK_RAISE: {
-      assert( pExpr->affinity==OE_Rollback 
+      assert( pExpr->affinity==OE_Rollback
            || pExpr->affinity==OE_Abort
            || pExpr->affinity==OE_Fail
            || pExpr->affinity==OE_Ignore
@@ -64296,7 +64296,7 @@ SQLITE_PRIVATE int sqlite3ExprCode(Parse *pParse, Expr *pExpr, int target){
 ** and modify the expression so that the next time it is evaluated,
 ** the result is a copy of the cache register.
 **
-** This routine is used for expressions that are used multiple 
+** This routine is used for expressions that are used multiple
 ** times.  They are evaluated once and the results of the expression
 ** are reused.
 */
@@ -64311,7 +64311,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeAndCache(Parse *pParse, Expr *pExpr, int targe
   ** no way for a TK_REGISTER to exist here.  But it seems prudent to
   ** keep the ALWAYS() in case the conditions above change with future
   ** modifications or enhancements. */
-  if( ALWAYS(pExpr->op!=TK_REGISTER) ){  
+  if( ALWAYS(pExpr->op!=TK_REGISTER) ){
     int iMem;
     iMem = ++pParse->nMem;
     sqlite3VdbeAddOp2(v, OP_Copy, inReg, iMem);
@@ -64328,12 +64328,12 @@ SQLITE_PRIVATE int sqlite3ExprCodeAndCache(Parse *pParse, Expr *pExpr, int targe
 **
 **    *  Any expression that evaluates to two or more opcodes.
 **
-**    *  Any OP_Integer, OP_Real, OP_String, OP_Blob, OP_Null, 
-**       or OP_Variable that does not need to be placed in a 
+**    *  Any OP_Integer, OP_Real, OP_String, OP_Blob, OP_Null,
+**       or OP_Variable that does not need to be placed in a
 **       specific register.
 **
 ** There is no point in factoring out single-instruction constant
-** expressions that need to be placed in a particular register.  
+** expressions that need to be placed in a particular register.
 ** We could factor them out, but then we would end up adding an
 ** OP_SCopy instruction to move the value into the correct register
 ** later.  We might as well just use the original instruction and
@@ -64399,7 +64399,7 @@ static int evalConstExpr(Walker *pWalker, Expr *pExpr){
     case TK_CONST_FUNC: {
       /* The arguments to a function have a fixed destination.
       ** Mark them this way to avoid generated unneeded OP_SCopy
-      ** instructions. 
+      ** instructions.
       */
       ExprList *pList = pExpr->x.pList;
       assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
@@ -64479,7 +64479,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeExprList(
 **
 **    x BETWEEN y AND z
 **
-** The above is equivalent to 
+** The above is equivalent to
 **
 **    x>=y AND x<=z
 **
@@ -64650,7 +64650,7 @@ SQLITE_PRIVATE void sqlite3ExprIfTrue(Parse *pParse, Expr *pExpr, int dest, int
     }
   }
   sqlite3ReleaseTempReg(pParse, regFree1);
-  sqlite3ReleaseTempReg(pParse, regFree2);  
+  sqlite3ReleaseTempReg(pParse, regFree2);
 }
 
 /*
@@ -64871,7 +64871,7 @@ static int addAggInfoColumn(sqlite3 *db, AggInfo *pInfo){
        &i
   );
   return i;
-}    
+}
 
 /*
 ** Add a new element to the pAggInfo->aFunc[] array.  Return the index of
@@ -64880,7 +64880,7 @@ static int addAggInfoColumn(sqlite3 *db, AggInfo *pInfo){
 static int addAggInfoFunc(sqlite3 *db, AggInfo *pInfo){
   int i;
   pInfo->aFunc = sqlite3ArrayAllocate(
-       db, 
+       db,
        pInfo->aFunc,
        sizeof(pInfo->aFunc[0]),
        3,
@@ -64889,7 +64889,7 @@ static int addAggInfoFunc(sqlite3 *db, AggInfo *pInfo){
        &i
   );
   return i;
-}    
+}
 
 /*
 ** This is the xExprCallback for a tree walker.  It is used to
@@ -64917,7 +64917,7 @@ static int analyzeAggregate(Walker *pWalker, Expr *pExpr){
           assert( !ExprHasAnyProperty(pExpr, EP_TokenOnly|EP_Reduced) );
           if( pExpr->iTable==pItem->iCursor ){
             /* If we reach this point, it means that pExpr refers to a table
-            ** that is in the FROM clause of the aggregate query.  
+            ** that is in the FROM clause of the aggregate query.
             **
             ** Make an entry for the column in pAggInfo->aCol[] if there
             ** is not an entry there already.
@@ -64931,7 +64931,7 @@ static int analyzeAggregate(Walker *pWalker, Expr *pExpr){
               }
             }
             if( (k>=pAggInfo->nColumn)
-             && (k = addAggInfoColumn(pParse->db, pAggInfo))>=0 
+             && (k = addAggInfoColumn(pParse->db, pAggInfo))>=0
             ){
               pCol = &pAggInfo->aCol[k];
               pCol->pTab = pExpr->pTab;
@@ -64977,7 +64977,7 @@ static int analyzeAggregate(Walker *pWalker, Expr *pExpr){
       /* The pNC->nDepth==0 test causes aggregate functions in subqueries
       ** to be ignored */
       if( pNC->nDepth==0 ){
-        /* Check to see if pExpr is a duplicate of another aggregate 
+        /* Check to see if pExpr is a duplicate of another aggregate
         ** function that is already in the pAggInfo structure
         */
         struct AggInfo_func *pItem = pAggInfo->aFunc;
@@ -65146,9 +65146,9 @@ SQLITE_PRIVATE void sqlite3ReleaseTempRange(Parse *pParse, int iReg, int nReg){
 
 
 /*
-** This function is used by SQL generated to implement the 
+** This function is used by SQL generated to implement the
 ** ALTER TABLE command. The first argument is the text of a CREATE TABLE or
-** CREATE INDEX command. The second is a table name. The table name in 
+** CREATE INDEX command. The second is a table name. The table name in
 ** the CREATE TABLE or CREATE INDEX statement is replaced with the third
 ** argument and the result returned. Examples:
 **
@@ -65176,7 +65176,7 @@ static void renameTableFunc(
 
   UNUSED_PARAMETER(NotUsed);
 
-  /* The principle used to locate the table name in the CREATE TABLE 
+  /* The principle used to locate the table name in the CREATE TABLE
   ** statement is that the table name is the first non-space token that
   ** is immediately followed by a TK_LP or TK_USING token.
   */
@@ -65201,7 +65201,7 @@ static void renameTableFunc(
       assert( len>0 );
     } while( token!=TK_LP && token!=TK_USING );
 
-    zRet = sqlite3MPrintf(db, "%.*s\"%w\"%s", ((u8*)tname.z) - zSql, zSql, 
+    zRet = sqlite3MPrintf(db, "%.*s\"%w\"%s", ((u8*)tname.z) - zSql, zSql,
        zTableName, tname.z+tname.n);
     sqlite3_result_text(context, zRet, -1, SQLITE_DYNAMIC);
   }
@@ -65210,7 +65210,7 @@ static void renameTableFunc(
 /*
 ** This C function implements an SQL user function that is used by SQL code
 ** generated by the ALTER TABLE ... RENAME command to modify the definition
-** of any foreign key constraints that use the table being renamed as the 
+** of any foreign key constraints that use the table being renamed as the
 ** parent table. It is passed three arguments:
 **
 **   1) The complete text of the CREATE TABLE statement being modified,
@@ -65253,7 +65253,7 @@ static void renameParentFunc(
       if( zParent==0 ) break;
       sqlite3Dequote(zParent);
       if( 0==sqlite3StrICmp((const char *)zOld, zParent) ){
-        char *zOut = sqlite3MPrintf(db, "%s%.*s\"%w\"", 
+        char *zOut = sqlite3MPrintf(db, "%s%.*s\"%w\"",
             (zOutput?zOutput:""), z-zInput, zInput, (const char *)zNew
         );
         sqlite3DbFree(db, zOutput);
@@ -65264,7 +65264,7 @@ static void renameParentFunc(
     }
   }
 
-  zResult = sqlite3MPrintf(db, "%s%s", (zOutput?zOutput:""), zInput), 
+  zResult = sqlite3MPrintf(db, "%s%s", (zOutput?zOutput:""), zInput),
   sqlite3_result_text(context, zResult, -1, SQLITE_DYNAMIC);
   sqlite3DbFree(db, zOutput);
 }
@@ -65272,9 +65272,9 @@ static void renameParentFunc(
 
 #ifndef SQLITE_OMIT_TRIGGER
 /* This function is used by SQL generated to implement the
-** ALTER TABLE command. The first argument is the text of a CREATE TRIGGER 
-** statement. The second is a table name. The table name in the CREATE 
-** TRIGGER statement is replaced with the third argument and the result 
+** ALTER TABLE command. The first argument is the text of a CREATE TRIGGER
+** statement. The second is a table name. The table name in the CREATE
+** TRIGGER statement is replaced with the third argument and the result
 ** returned. This is analagous to renameTableFunc() above, except for CREATE
 ** TRIGGER, not CREATE INDEX and CREATE TABLE.
 */
@@ -65296,7 +65296,7 @@ static void renameTriggerFunc(
 
   UNUSED_PARAMETER(NotUsed);
 
-  /* The principle used to locate the table name in the CREATE TRIGGER 
+  /* The principle used to locate the table name in the CREATE TRIGGER
   ** statement is that the table name is the first token that is immediatedly
   ** preceded by either TK_ON or TK_DOT and immediatedly followed by one
   ** of TK_WHEN, TK_BEGIN or TK_FOR.
@@ -65323,12 +65323,12 @@ static void renameTriggerFunc(
       assert( len>0 );
 
       /* Variable 'dist' stores the number of tokens read since the most
-      ** recent TK_DOT or TK_ON. This means that when a WHEN, FOR or BEGIN 
+      ** recent TK_DOT or TK_ON. This means that when a WHEN, FOR or BEGIN
       ** token is read and 'dist' equals 2, the condition stated above
       ** to be met.
       **
       ** Note that ON cannot be a database, table or column name, so
-      ** there is no need to worry about syntax like 
+      ** there is no need to worry about syntax like
       ** "CREATE TRIGGER ... ON ON.ON BEGIN ..." etc.
       */
       dist++;
@@ -65340,7 +65340,7 @@ static void renameTriggerFunc(
     /* Variable tname now contains the token that is the old table-name
     ** in the CREATE TRIGGER statement.
     */
-    zRet = sqlite3MPrintf(db, "%.*s\"%w\"%s", ((u8*)tname.z) - zSql, zSql, 
+    zRet = sqlite3MPrintf(db, "%.*s\"%w\"%s", ((u8*)tname.z) - zSql, zSql,
        zTableName, tname.z+tname.n);
     sqlite3_result_text(context, zRet, -1, SQLITE_DYNAMIC);
   }
@@ -65368,16 +65368,16 @@ SQLITE_PRIVATE void sqlite3AlterFunctions(sqlite3 *db){
 **
 **   name=<constant1> OR name=<constant2> OR ...
 **
-** If argument zWhere is NULL, then a pointer string containing the text 
+** If argument zWhere is NULL, then a pointer string containing the text
 ** "name=<constant>" is returned, where <constant> is the quoted version
 ** of the string passed as argument zConstant. The returned buffer is
 ** allocated using sqlite3DbMalloc(). It is the responsibility of the
 ** caller to ensure that it is eventually freed.
 **
-** If argument zWhere is not NULL, then the string returned is 
+** If argument zWhere is not NULL, then the string returned is
 ** "<where> OR name=<constant>", where <where> is the contents of zWhere.
 ** In this case zWhere is passed to sqlite3DbFree() before returning.
-** 
+**
 */
 static char *whereOrName(sqlite3 *db, char *zWhere, char *zConstant){
   char *zNew;
@@ -65410,7 +65410,7 @@ static char *whereForeignKeys(Parse *pParse, Table *pTab){
 /*
 ** Generate the text of a WHERE expression which can be used to select all
 ** temporary triggers on table pTab from the sqlite_temp_master table. If
-** table pTab has no temporary triggers, or is itself stored in the 
+** table pTab has no temporary triggers, or is itself stored in the
 ** temporary database, NULL is returned.
 */
 static char *whereTempTriggers(Parse *pParse, Table *pTab){
@@ -65418,9 +65418,9 @@ static char *whereTempTriggers(Parse *pParse, Table *pTab){
   char *zWhere = 0;
   const Schema *pTempSchema = pParse->db->aDb[1].pSchema; /* Temp db schema */
 
-  /* If the table is not located in the temp-db (in which case NULL is 
+  /* If the table is not located in the temp-db (in which case NULL is
   ** returned, loop through the tables list of triggers. For each trigger
-  ** that is not part of the temp-db schema, add a clause to the WHERE 
+  ** that is not part of the temp-db schema, add a clause to the WHERE
   ** expression being built up in zWhere.
   */
   if( pTab->pSchema!=pTempSchema ){
@@ -65439,7 +65439,7 @@ static char *whereTempTriggers(Parse *pParse, Table *pTab){
 ** pTab from the database, including triggers and temporary triggers.
 ** Argument zName is the name of the table in the database schema at
 ** the time the generated code is executed. This can be different from
-** pTab->zName if this function is being called to code part of an 
+** pTab->zName if this function is being called to code part of an
 ** "ALTER TABLE RENAME TO" statement.
 */
 static void reloadTableSchema(Parse *pParse, Table *pTab, const char *zName){
@@ -65474,8 +65474,8 @@ static void reloadTableSchema(Parse *pParse, Table *pTab, const char *zName){
   sqlite3VdbeAddOp4(v, OP_ParseSchema, iDb, 0, 0, zWhere, P4_DYNAMIC);
 
 #ifndef SQLITE_OMIT_TRIGGER
-  /* Now, if the table is not stored in the temp database, reload any temp 
-  ** triggers. Don't use IN(...) in case SQLITE_OMIT_SUBQUERY is defined. 
+  /* Now, if the table is not stored in the temp database, reload any temp
+  ** triggers. Don't use IN(...) in case SQLITE_OMIT_SUBQUERY is defined.
   */
   if( (zWhere=whereTempTriggers(pParse, pTab))!=0 ){
     sqlite3VdbeAddOp4(v, OP_ParseSchema, 1, 0, 0, zWhere, P4_DYNAMIC);
@@ -65484,8 +65484,8 @@ static void reloadTableSchema(Parse *pParse, Table *pTab, const char *zName){
 }
 
 /*
-** Generate code to implement the "ALTER TABLE xxx RENAME TO yyy" 
-** command. 
+** Generate code to implement the "ALTER TABLE xxx RENAME TO yyy"
+** command.
 */
 SQLITE_PRIVATE void sqlite3AlterRenameTable(
   Parse *pParse,            /* Parser context. */
@@ -65495,7 +65495,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
   int iDb;                  /* Database that contains the table */
   char *zDb;                /* Name of database iDb */
   Table *pTab;              /* Table being renamed */
-  char *zName = 0;          /* NULL-terminated version of pName */ 
+  char *zName = 0;          /* NULL-terminated version of pName */
   sqlite3 *db = pParse->db; /* Database connection */
   int nTabName;             /* Number of UTF-8 characters in zTabName */
   const char *zTabName;     /* Original name of the table */
@@ -65504,7 +65504,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
   char *zWhere = 0;         /* Where clause to locate temp triggers */
 #endif
   VTable *pVTab = 0;        /* Non-zero if this is a v-tab with an xRename() */
-  
+
   if( NEVER(db->mallocFailed) ) goto exit_rename_table;
   assert( pSrc->nSrc==1 );
   assert( sqlite3BtreeHoldsAllMutexes(pParse->db) );
@@ -65522,7 +65522,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
   ** in database iDb. If so, this is an error.
   */
   if( sqlite3FindTable(db, zName, zDb) || sqlite3FindIndex(db, zName, zDb) ){
-    sqlite3ErrorMsg(pParse, 
+    sqlite3ErrorMsg(pParse,
         "there is already another table or index with this name: %s", zName);
     goto exit_rename_table;
   }
@@ -65530,7 +65530,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
   /* Make sure it is not a system table being altered, or a reserved name
   ** that the table is being renamed to.
   */
-  if( sqlite3Strlen30(pTab->zName)>6 
+  if( sqlite3Strlen30(pTab->zName)>6
    && 0==sqlite3StrNICmp(pTab->zName, "sqlite_", 7)
   ){
     sqlite3ErrorMsg(pParse, "table %s may not be altered", pTab->zName);
@@ -65566,7 +65566,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
   }
 #endif
 
-  /* Begin a transaction and code the VerifyCookie for database iDb. 
+  /* Begin a transaction and code the VerifyCookie for database iDb.
   ** Then modify the schema cookie (since the ALTER TABLE modifies the
   ** schema). Open a statement transaction if the table is a virtual
   ** table.
@@ -65598,11 +65598,11 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
 
 #if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
   if( db->flags&SQLITE_ForeignKeys ){
-    /* If foreign-key support is enabled, rewrite the CREATE TABLE 
+    /* If foreign-key support is enabled, rewrite the CREATE TABLE
     ** statements corresponding to all child tables of foreign key constraints
     ** for which the renamed table is the parent table.  */
     if( (zWhere=whereForeignKeys(pParse, pTab))!=0 ){
-      sqlite3NestedParse(pParse, 
+      sqlite3NestedParse(pParse,
           "UPDATE \"%w\".%s SET "
               "sql = sqlite_rename_parent(sql, %Q, %Q) "
               "WHERE %s;", zDb, SCHEMA_TABLE(iDb), zTabName, zName, zWhere);
@@ -65628,8 +65628,8 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
              "'sqlite_autoindex_' || %Q || substr(name,%d+18) "
             "ELSE name END "
       "WHERE tbl_name=%Q AND "
-          "(type='table' OR type='index' OR type='trigger');", 
-      zDb, SCHEMA_TABLE(iDb), zName, zName, zName, 
+          "(type='table' OR type='index' OR type='trigger');",
+      zDb, SCHEMA_TABLE(iDb), zName, zName, zName,
 #ifndef SQLITE_OMIT_TRIGGER
       zName,
 #endif
@@ -65637,7 +65637,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
   );
 
 #ifndef SQLITE_OMIT_AUTOINCREMENT
-  /* If the sqlite_sequence table exists in this database, then update 
+  /* If the sqlite_sequence table exists in this database, then update
   ** it with the new table name.
   */
   if( sqlite3FindTable(db, "sqlite_sequence", zDb) ){
@@ -65653,7 +65653,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
   ** the temp database.
   */
   if( (zWhere=whereTempTriggers(pParse, pTab))!=0 ){
-    sqlite3NestedParse(pParse, 
+    sqlite3NestedParse(pParse,
         "UPDATE sqlite_temp_master SET "
             "sql = sqlite_rename_trigger(sql, %Q), "
             "tbl_name = %Q "
@@ -65748,7 +65748,7 @@ SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
   }
 #endif
 
-  /* If the default value for the new column was specified with a 
+  /* If the default value for the new column was specified with a
   ** literal NULL, then set pDflt to 0. This simplifies checking
   ** for an SQL NULL default below.
   */
@@ -65769,12 +65769,12 @@ SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
     return;
   }
   if( (db->flags&SQLITE_ForeignKeys) && pNew->pFKey && pDflt ){
-    sqlite3ErrorMsg(pParse, 
+    sqlite3ErrorMsg(pParse,
         "Cannot add a REFERENCES column with non-NULL default value");
     return;
   }
   if( pCol->notNull && !pDflt ){
-    sqlite3ErrorMsg(pParse, 
+    sqlite3ErrorMsg(pParse,
         "Cannot add a NOT NULL column with default value NULL");
     return;
   }
@@ -65802,10 +65802,10 @@ SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
     while( zEnd>zCol && (*zEnd==';' || sqlite3Isspace(*zEnd)) ){
       *zEnd-- = '\0';
     }
-    sqlite3NestedParse(pParse, 
+    sqlite3NestedParse(pParse,
         "UPDATE \"%w\".%s SET "
           "sql = substr(sql,1,%d) || ', ' || %Q || substr(sql,%d) "
-        "WHERE type = 'table' AND name = %Q", 
+        "WHERE type = 'table' AND name = %Q",
       zDb, SCHEMA_TABLE(iDb), pNew->addColOffset, zCol, pNew->addColOffset+1,
       zTab
     );
@@ -65824,14 +65824,14 @@ SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
 
 /*
 ** This function is called by the parser after the table-name in
-** an "ALTER TABLE <table-name> ADD" statement is parsed. Argument 
+** an "ALTER TABLE <table-name> ADD" statement is parsed. Argument
 ** pSrc is the full-name of the table being altered.
 **
 ** This routine makes a (partial) copy of the Table structure
 ** for the table being altered and sets Parse.pNewTable to point
 ** to it. Routines called by the parser as the column definition
-** is parsed (i.e. sqlite3AddColumn()) add the new Column data to 
-** the copy. The copy of the Table structure is deleted by tokenize.c 
+** is parsed (i.e. sqlite3AddColumn()) add the new Column data to
+** the copy. The copy of the Table structure is deleted by tokenize.c
 ** after parsing is finished.
 **
 ** Routine sqlite3AlterFinishAddColumn() will be called to complete
@@ -65941,7 +65941,7 @@ exit_begin_add_column:
 **
 ** If the sqlite_stat1 tables does not previously exist, it is created.
 ** Similarly, if the sqlite_stat2 table does not exist and the library
-** is compiled with SQLITE_ENABLE_STAT2 defined, it is created. 
+** is compiled with SQLITE_ENABLE_STAT2 defined, it is created.
 **
 ** Argument zWhere may be a pointer to a buffer containing a table name,
 ** or it may be a NULL pointer. If it is not NULL, then all entries in
@@ -65981,9 +65981,9 @@ static void openStatTable(
     const char *zTab = aTable[i].zName;
     Table *pStat;
     if( (pStat = sqlite3FindTable(db, zTab, pDb->zName))==0 ){
-      /* The sqlite_stat[12] table does not exist. Create it. Note that a 
-      ** side-effect of the CREATE TABLE statement is to leave the rootpage 
-      ** of the new table in register pParse->regRoot. This is important 
+      /* The sqlite_stat[12] table does not exist. Create it. Note that a
+      ** side-effect of the CREATE TABLE statement is to leave the rootpage
+      ** of the new table in register pParse->regRoot. This is important
       ** because the OpenWrite opcode below will be needing it. */
       sqlite3NestedParse(pParse,
           "CREATE TABLE %Q.%s(%s)", pDb->zName, zTab, aTable[i].zCols
@@ -65991,7 +65991,7 @@ static void openStatTable(
       aRoot[i] = pParse->regRoot;
       aCreateTbl[i] = 1;
     }else{
-      /* The table already exists. If zWhere is not NULL, delete all entries 
+      /* The table already exists. If zWhere is not NULL, delete all entries
       ** associated with the table zWhere. If zWhere is NULL, delete the
       ** entire contents of the table. */
       aRoot[i] = pStat->tnum;
@@ -66117,18 +66117,18 @@ static void analyzeOneTable(
 
     /* The block of memory cells initialized here is used as follows.
     **
-    **    iMem:                
+    **    iMem:
     **        The total number of rows in the table.
     **
-    **    iMem+1 .. iMem+nCol: 
-    **        Number of distinct entries in index considering the 
-    **        left-most N columns only, where N is between 1 and nCol, 
+    **    iMem+1 .. iMem+nCol:
+    **        Number of distinct entries in index considering the
+    **        left-most N columns only, where N is between 1 and nCol,
     **        inclusive.
     **
-    **    iMem+nCol+1 .. Mem+2*nCol:  
+    **    iMem+nCol+1 .. Mem+2*nCol:
     **        Previous value of indexed columns, from left to right.
     **
-    ** Cells iMem through iMem+nCol are initialized to 0. The others are 
+    ** Cells iMem through iMem+nCol are initialized to 0. The others are
     ** initialized to contain an SQL NULL.
     */
     for(i=0; i<=nCol; i++){
@@ -66153,7 +66153,7 @@ static void analyzeOneTable(
         ** value that should be stored in the sqlite_stat2 table. If so,
         ** store it.  */
         int ne = sqlite3VdbeAddOp3(v, OP_Ne, regRecno, 0, regSamplerecno);
-        assert( regTabname+1==regIdxname 
+        assert( regTabname+1==regIdxname
              && regTabname+2==regSampleno
              && regTabname+3==regCol
         );
@@ -66185,8 +66185,8 @@ static void analyzeOneTable(
       sqlite3VdbeChangeP5(v, SQLITE_JUMPIFNULL);
     }
     if( db->mallocFailed ){
-      /* If a malloc failure has occurred, then the result of the expression 
-      ** passed as the second argument to the call to sqlite3VdbeJumpHere() 
+      /* If a malloc failure has occurred, then the result of the expression
+      ** passed as the second argument to the call to sqlite3VdbeJumpHere()
       ** below may be negative. Which causes an assert() to fail (or an
       ** out-of-bounds write if SQLITE_DEBUG is not defined).  */
       return;
@@ -66217,7 +66217,7 @@ static void analyzeOneTable(
     **
     **        I = (K+D-1)/D
     **
-    ** If K==0 then no entry is made into the sqlite_stat1 table.  
+    ** If K==0 then no entry is made into the sqlite_stat1 table.
     ** If K>0 then it is always the case the D>0 so division by zero
     ** is never possible.
     */
@@ -66354,7 +66354,7 @@ SQLITE_PRIVATE void sqlite3Analyze(Parse *pParse, Token *pName1, Token *pName2){
           analyzeTable(pParse, pTab);
         }
       }
-    }   
+    }
   }
 }
 
@@ -66370,7 +66370,7 @@ struct analysisInfo {
 
 /*
 ** This callback is invoked once for each index when reading the
-** sqlite_stat1 table.  
+** sqlite_stat1 table.
 **
 **     argv[0] = name of the index
 **     argv[1] = results of analysis - on integer for each column
@@ -66435,11 +66435,11 @@ SQLITE_PRIVATE void sqlite3DeleteIndexSamples(Index *pIdx){
 ** Index.aSample[] arrays.
 **
 ** If the sqlite_stat1 table is not present in the database, SQLITE_ERROR
-** is returned. In this case, even if SQLITE_ENABLE_STAT2 was defined 
-** during compilation and the sqlite_stat2 table is present, no data is 
+** is returned. In this case, even if SQLITE_ENABLE_STAT2 was defined
+** during compilation and the sqlite_stat2 table is present, no data is
 ** read from it.
 **
-** If SQLITE_ENABLE_STAT2 was defined during compilation and the 
+** If SQLITE_ENABLE_STAT2 was defined during compilation and the
 ** sqlite_stat2 table is not present in the database, SQLITE_ERROR is
 ** returned. However, in this case, data is read from the sqlite_stat1
 ** table (if it is present) before returning.
@@ -66473,7 +66473,7 @@ SQLITE_PRIVATE int sqlite3AnalysisLoad(sqlite3 *db, int iDb){
   }
 
   /* Load new statistics out of the sqlite_stat1 table */
-  zSql = sqlite3MPrintf(db, 
+  zSql = sqlite3MPrintf(db,
       "SELECT idx, stat FROM %Q.sqlite_stat1", sInfo.zDatabase);
   if( zSql==0 ){
     rc = SQLITE_NOMEM;
@@ -66491,7 +66491,7 @@ SQLITE_PRIVATE int sqlite3AnalysisLoad(sqlite3 *db, int iDb){
   if( rc==SQLITE_OK ){
     sqlite3_stmt *pStmt = 0;
 
-    zSql = sqlite3MPrintf(db, 
+    zSql = sqlite3MPrintf(db,
         "SELECT idx,sampleno,sample FROM %Q.sqlite_stat2", sInfo.zDatabase);
     if( !zSql ){
       rc = SQLITE_NOMEM;
@@ -66653,7 +66653,7 @@ static void attachFunc(
   **     * Specified database name already being used.
   */
   if( db->nDb>=db->aLimit[SQLITE_LIMIT_ATTACHED]+2 ){
-    zErrDyn = sqlite3MPrintf(db, "too many attached databases - max %d", 
+    zErrDyn = sqlite3MPrintf(db, "too many attached databases - max %d",
       db->aLimit[SQLITE_LIMIT_ATTACHED]
     );
     goto attach_error;
@@ -66703,7 +66703,7 @@ static void attachFunc(
     if( !aNew->pSchema ){
       rc = SQLITE_NOMEM;
     }else if( aNew->pSchema->file_format && aNew->pSchema->enc!=ENC(db) ){
-      zErrDyn = sqlite3MPrintf(db, 
+      zErrDyn = sqlite3MPrintf(db,
         "attached databases must use the same text encoding as main database");
       rc = SQLITE_ERROR;
     }
@@ -66733,7 +66733,7 @@ static void attachFunc(
         zErrDyn = sqlite3DbStrDup(db, "Invalid key value");
         rc = SQLITE_ERROR;
         break;
-        
+
       case SQLITE_TEXT:
       case SQLITE_BLOB:
         nKey = sqlite3_value_bytes(argv[2]);
@@ -66751,7 +66751,7 @@ static void attachFunc(
 #endif
 
   /* If the file was opened successfully, read the schema for the new database.
-  ** If this fails, or if opening the file failed, then close the file and 
+  ** If this fails, or if opening the file failed, then close the file and
   ** remove the entry from the db->aDb[] array. i.e. put everything back the way
   ** we found it.
   */
@@ -66779,7 +66779,7 @@ static void attachFunc(
     }
     goto attach_error;
   }
-  
+
   return;
 
 attach_error:
@@ -66869,7 +66869,7 @@ static void codeAttach(
   memset(&sName, 0, sizeof(NameContext));
   sName.pParse = pParse;
 
-  if( 
+  if(
       SQLITE_OK!=(rc = resolveAttachExpr(&sName, pFilename)) ||
       SQLITE_OK!=(rc = resolveAttachExpr(&sName, pDbname)) ||
       SQLITE_OK!=(rc = resolveAttachExpr(&sName, pKey))
@@ -66911,7 +66911,7 @@ static void codeAttach(
     */
     sqlite3VdbeAddOp1(v, OP_Expire, (type==SQLITE_ATTACH));
   }
-  
+
 attach_end:
   sqlite3ExprDelete(db, pFilename);
   sqlite3ExprDelete(db, pDbname);
@@ -67231,10 +67231,10 @@ SQLITE_PRIVATE int sqlite3AuthReadCol(
 
 /*
 ** The pExpr should be a TK_COLUMN expression.  The table referred to
-** is in pTabList or else it is the NEW or OLD table of a trigger.  
+** is in pTabList or else it is the NEW or OLD table of a trigger.
 ** Check to see if it is OK to read this particular column.
 **
-** If the auth function returns SQLITE_IGNORE, change the TK_COLUMN 
+** If the auth function returns SQLITE_IGNORE, change the TK_COLUMN
 ** instruction into a TK_NULL.  If the auth function returns SQLITE_DENY,
 ** then generate an error.
 */
@@ -67333,7 +67333,7 @@ SQLITE_PRIVATE int sqlite3AuthCheck(
 */
 SQLITE_PRIVATE void sqlite3AuthContextPush(
   Parse *pParse,
-  AuthContext *pContext, 
+  AuthContext *pContext,
   const char *zContext
 ){
   assert( pParse );
@@ -67404,7 +67404,7 @@ struct TableLock {
 };
 
 /*
-** Record the fact that we want to lock a table at run-time.  
+** Record the fact that we want to lock a table at run-time.
 **
 ** The table to be locked has root page iTab and is found in database iDb.
 ** A read or a write lock can be taken depending on isWritelock.
@@ -67455,7 +67455,7 @@ SQLITE_PRIVATE void sqlite3TableLock(
 */
 static void codeTableLocks(Parse *pParse){
   int i;
-  Vdbe *pVdbe; 
+  Vdbe *pVdbe;
 
   pVdbe = sqlite3GetVdbe(pParse);
   assert( pVdbe!=0 ); /* sqlite3GetVdbe cannot fail: VDBE already allocated */
@@ -67494,7 +67494,7 @@ SQLITE_PRIVATE void sqlite3FinishCoding(Parse *pParse){
   ** vdbe program
   */
   v = sqlite3GetVdbe(pParse);
-  assert( !pParse->isMultiWrite 
+  assert( !pParse->isMultiWrite
        || sqlite3VdbeAssertMayAbort(v, pParse->mayAbort));
   if( v ){
     sqlite3VdbeAddOp0(v, OP_Halt);
@@ -67528,8 +67528,8 @@ SQLITE_PRIVATE void sqlite3FinishCoding(Parse *pParse){
       }
 #endif
 
-      /* Once all the cookies have been verified and transactions opened, 
-      ** obtain the required table-locks. This is a no-op unless the 
+      /* Once all the cookies have been verified and transactions opened,
+      ** obtain the required table-locks. This is a no-op unless the
       ** shared-cache feature is enabled.
       */
       codeTableLocks(pParse);
@@ -67674,7 +67674,7 @@ SQLITE_PRIVATE Table *sqlite3LocateTable(
 }
 
 /*
-** Locate the in-memory structure that describes 
+** Locate the in-memory structure that describes
 ** a particular index given the name of that index
 ** and the name of the database that contains the index.
 ** Return NULL if not found.
@@ -67855,7 +67855,7 @@ static void sqliteResetColumnNames(Table *pTable){
 **
 ** This routine just deletes the data structure.  It does not unlink
 ** the table data structure from the hash table.  But it does destroy
-** memory structures of the indices and foreign keys associated with 
+** memory structures of the indices and foreign keys associated with
 ** the table.
 */
 SQLITE_PRIVATE void sqlite3DeleteTable(Table *pTable){
@@ -67966,7 +67966,7 @@ SQLITE_PRIVATE int sqlite3FindDbName(sqlite3 *db, const char *zName){
     Db *pDb;
     int n = sqlite3Strlen30(zName);
     for(i=(db->nDb-1), pDb=&db->aDb[i]; i>=0; i--, pDb--){
-      if( (!OMIT_TEMPDB || i!=1 ) && n==sqlite3Strlen30(pDb->zName) && 
+      if( (!OMIT_TEMPDB || i!=1 ) && n==sqlite3Strlen30(pDb->zName) &&
           0==sqlite3StrICmp(pDb->zName, zName) ){
         break;
       }
@@ -67978,7 +67978,7 @@ SQLITE_PRIVATE int sqlite3FindDbName(sqlite3 *db, const char *zName){
 /*
 ** The token *pName contains the name of a database (either "main" or
 ** "temp" or the name of an attached db). This routine returns the
-** index of the named database in db->aDb[], or -1 if the named db 
+** index of the named database in db->aDb[], or -1 if the named db
 ** does not exist.
 */
 SQLITE_PRIVATE int sqlite3FindDb(sqlite3 *db, Token *pName){
@@ -67994,7 +67994,7 @@ SQLITE_PRIVATE int sqlite3FindDb(sqlite3 *db, Token *pName){
 ** pName1 and pName2. If the table name was fully qualified, for example:
 **
 ** CREATE TABLE xxx.yyy (...);
-** 
+**
 ** Then pName1 is set to "xxx" and pName2 "yyy". On the other hand if
 ** the table name is not fully qualified, i.e.:
 **
@@ -68044,7 +68044,7 @@ SQLITE_PRIVATE int sqlite3TwoPartName(
 ** is reserved for internal use.
 */
 SQLITE_PRIVATE int sqlite3CheckObjectName(Parse *pParse, const char *zName){
-  if( !pParse->db->init.busy && pParse->nested==0 
+  if( !pParse->db->init.busy && pParse->nested==0
           && (pParse->db->flags & SQLITE_WriteSchema)==0
           && 0==sqlite3StrNICmp(zName, "sqlite_", 7) ){
     sqlite3ErrorMsg(pParse, "object name reserved for internal use: %s", zName);
@@ -68089,7 +68089,7 @@ SQLITE_PRIVATE void sqlite3StartTable(
   ** pName1 and pName2. If the table name was fully qualified, for example:
   **
   ** CREATE TABLE xxx.yyy (...);
-  ** 
+  **
   ** Then pName1 is set to "xxx" and pName2 "yyy". On the other hand if
   ** the table name is not fully qualified, i.e.:
   **
@@ -68198,7 +68198,7 @@ SQLITE_PRIVATE void sqlite3StartTable(
   ** the SQLITE_MASTER table.  Note in particular that we must go ahead
   ** and allocate the record number for the table entry now.  Before any
   ** PRIMARY KEY or UNIQUE keywords are parsed.  Those keywords will cause
-  ** indices to be created and the table record must come before the 
+  ** indices to be created and the table record must come before the
   ** indices.  Hence, the record number for the table must be allocated
   ** now.
   */
@@ -68214,7 +68214,7 @@ SQLITE_PRIVATE void sqlite3StartTable(
     }
 #endif
 
-    /* If the file format and encoding in the database have not been set, 
+    /* If the file format and encoding in the database have not been set,
     ** set them now.
     */
     reg1 = pParse->regRowid = ++pParse->nMem;
@@ -68320,7 +68320,7 @@ SQLITE_PRIVATE void sqlite3AddColumn(Parse *pParse, Token *pName){
   pCol = &p->aCol[p->nCol];
   memset(pCol, 0, sizeof(p->aCol[0]));
   pCol->zName = z;
+
   /* If there is no type specified, columns have the default affinity
   ** 'NONE'. If there is a type specified, then sqlite3AddColumnType() will
   ** be called next to set pCol->affinity correctly.
@@ -68346,11 +68346,11 @@ SQLITE_PRIVATE void sqlite3AddNotNull(Parse *pParse, int onError){
 ** Scan the column type name zType (length nType) and return the
 ** associated affinity type.
 **
-** This routine does a case-independent search of zType for the 
+** This routine does a case-independent search of zType for the
 ** substrings in the following table. If one of the substrings is
 ** found, the corresponding affinity is returned. If zType contains
-** more than one of the substrings, entries toward the top of 
-** the table take priority. For example, if zType is 'BLOBINT', 
+** more than one of the substrings, entries toward the top of
+** the table take priority. For example, if zType is 'BLOBINT',
 ** SQLITE_AFF_INTEGER is returned.
 **
 ** Substring     | Affinity
@@ -68375,7 +68375,7 @@ SQLITE_PRIVATE char sqlite3AffinityType(const char *zIn){
     h = (h<<8) + sqlite3UpperToLower[(*zIn)&0xff];
     zIn++;
     if( h==(('c'<<24)+('h'<<16)+('a'<<8)+'r') ){             /* CHAR */
-      aff = SQLITE_AFF_TEXT; 
+      aff = SQLITE_AFF_TEXT;
     }else if( h==(('c'<<24)+('l'<<16)+('o'<<8)+'b') ){       /* CLOB */
       aff = SQLITE_AFF_TEXT;
     }else if( h==(('t'<<24)+('e'<<16)+('x'<<8)+'t') ){       /* TEXT */
@@ -68411,7 +68411,7 @@ SQLITE_PRIVATE char sqlite3AffinityType(const char *zIn){
 ** in the sequence.  Use this information to construct a string
 ** that contains the typename of the column and store that string
 ** in zType.
-*/ 
+*/
 SQLITE_PRIVATE void sqlite3AddColumnType(Parse *pParse, Token *pType){
   Table *p;
   Column *pCol;
@@ -68460,7 +68460,7 @@ SQLITE_PRIVATE void sqlite3AddDefaultValue(Parse *pParse, ExprSpan *pSpan){
 }
 
 /*
-** Designate the PRIMARY KEY for the table.  pList is a list of names 
+** Designate the PRIMARY KEY for the table.  pList is a list of names
 ** of columns that form the primary key.  If pList is NULL, then the
 ** most recently added column of the table is the primary key.
 **
@@ -68489,7 +68489,7 @@ SQLITE_PRIVATE void sqlite3AddPrimaryKey(
   int iCol = -1, i;
   if( pTab==0 || IN_DECLARE_VTAB ) goto primary_key_exit;
   if( pTab->tabFlags & TF_HasPrimaryKey ){
-    sqlite3ErrorMsg(pParse, 
+    sqlite3ErrorMsg(pParse,
       "table \"%s\" has more than one primary key", pTab->zName);
     goto primary_key_exit;
   }
@@ -68576,7 +68576,7 @@ SQLITE_PRIVATE void sqlite3AddCollateType(Parse *pParse, Token *pToken){
   if( sqlite3LocateCollSeq(pParse, zColl) ){
     Index *pIdx;
     p->aCol[i].zColl = zColl;
-  
+
     /* If the column is declared as "<name> PRIMARY KEY COLLATE <type>",
     ** then an index may have been created on this column before the
     ** collation type was added. Correct this if it is the case.
@@ -68672,13 +68672,13 @@ static int identLength(const char *z){
 }
 
 /*
-** The first parameter is a pointer to an output buffer. The second 
+** The first parameter is a pointer to an output buffer. The second
 ** parameter is a pointer to an integer that contains the offset at
 ** which to write into the output buffer. This function copies the
 ** nul-terminated string pointed to by the third parameter, zSignedIdent,
 ** to the specified offset in the buffer and updates *pIdx to refer
 ** to the first byte after the last byte written before returning.
-** 
+**
 ** If the string zSignedIdent consists entirely of alpha-numeric
 ** characters, does not begin with a digit and is not an SQL keyword,
 ** then it is copied to the output buffer exactly as it is. Otherwise,
@@ -68722,7 +68722,7 @@ static char *createTableStmt(sqlite3 *db, Table *p){
     n += identLength(pCol->zName) + 5;
   }
   n += identLength(p->zName);
-  if( n<50 ){ 
+  if( n<50 ){
     zSep = "";
     zSep2 = ",";
     zEnd = ")";
@@ -68763,10 +68763,10 @@ static char *createTableStmt(sqlite3 *db, Table *p){
     testcase( pCol->affinity==SQLITE_AFF_NUMERIC );
     testcase( pCol->affinity==SQLITE_AFF_INTEGER );
     testcase( pCol->affinity==SQLITE_AFF_REAL );
-    
+
     zType = azType[pCol->affinity - SQLITE_AFF_TEXT];
     len = sqlite3Strlen30(zType);
-    assert( pCol->affinity==SQLITE_AFF_NONE 
+    assert( pCol->affinity==SQLITE_AFF_NONE
             || pCol->affinity==sqlite3AffinityType(zType) );
     memcpy(&zStmt[k], zType, len);
     k += len;
@@ -68792,7 +68792,7 @@ static char *createTableStmt(sqlite3 *db, Table *p){
 ** the sqlite_master table.  We do not want to create it again.
 **
 ** If the pSelect argument is not NULL, it means that this routine
-** was called to create a table generated from a 
+** was called to create a table generated from a
 ** "CREATE TABLE ... AS SELECT ..." statement.  The column names of
 ** the new table will match the result set of the SELECT.
 */
@@ -68866,7 +68866,7 @@ SQLITE_PRIVATE void sqlite3EndTable(
 
     sqlite3VdbeAddOp1(v, OP_Close, 0);
 
-    /* 
+    /*
     ** Initialize zType for the new view or table.
     */
     if( p->pSelect==0 ){
@@ -68922,12 +68922,12 @@ SQLITE_PRIVATE void sqlite3EndTable(
       zStmt = createTableStmt(db, p);
     }else{
       n = (int)(pEnd->z - pParse->sNameToken.z) + 1;
-      zStmt = sqlite3MPrintf(db, 
+      zStmt = sqlite3MPrintf(db,
           "CREATE %s %.*s", zType2, n, pParse->sNameToken.z
       );
     }
 
-    /* A slot for the record has already been allocated in the 
+    /* A slot for the record has already been allocated in the
     ** SQLITE_MASTER table.  We just need to update that slot with all
     ** the information we've collected.
     */
@@ -69115,7 +69115,7 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
   ** Actually, the error above is now caught prior to reaching this point.
   ** But the following test is still important as it does come up
   ** in the following:
-  ** 
+  **
   **     CREATE TABLE main.ex1(a);
   **     CREATE TEMP VIEW ex1 AS SELECT a FROM ex1;
   **     SELECT * FROM temp.ex1;
@@ -69168,7 +69168,7 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
     nErr++;
   }
 #endif /* SQLITE_OMIT_VIEW */
-  return nErr;  
+  return nErr;
 }
 #endif /* !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE) */
 
@@ -69201,7 +69201,7 @@ static void sqliteViewResetAll(sqlite3 *db, int idx){
 ** on tables and/or indices that are the process of being deleted.
 ** If you are unlucky, one of those deleted indices or tables might
 ** have the same rootpage number as the real table or index that is
-** being moved.  So we cannot stop searching after the first match 
+** being moved.  So we cannot stop searching after the first match
 ** because the first match might be for one of the deleted indices
 ** or tables and not the table/index that is actually being moved.
 ** We must continue looping until all tables and indices with
@@ -69235,7 +69235,7 @@ SQLITE_PRIVATE void sqlite3RootPageMoved(Db *pDb, int iFrom, int iTo){
 ** Also write code to modify the sqlite_master table and internal schema
 ** if a root-page of another table is moved by the btree-layer whilst
 ** erasing iTable (this can happen with an auto-vacuum database).
-*/ 
+*/
 static void destroyRootPage(Parse *pParse, int iTable, int iDb){
   Vdbe *v = sqlite3GetVdbe(pParse);
   int r1 = sqlite3GetTempReg(pParse);
@@ -69251,7 +69251,7 @@ static void destroyRootPage(Parse *pParse, int iTable, int iDb){
   ** is in register NNN.  See grammar rules associated with the TK_REGISTER
   ** token for additional information.
   */
-  sqlite3NestedParse(pParse, 
+  sqlite3NestedParse(pParse,
      "UPDATE %Q.%s SET rootpage=%d WHERE #%d AND rootpage=#%d",
      pParse->db->aDb[iDb].zName, SCHEMA_TABLE(iDb), iTable, r1, r1);
 #endif
@@ -69275,7 +69275,7 @@ static void destroyTable(Parse *pParse, Table *pTab){
 #else
   /* If the database may be auto-vacuum capable (if SQLITE_OMIT_AUTOVACUUM
   ** is not defined), then it is important to call OP_Destroy on the
-  ** table and index root-pages in order, starting with the numerically 
+  ** table and index root-pages in order, starting with the numerically
   ** largest root-page number. This guarantees that none of the root-pages
   ** to be destroyed is relocated by an earlier OP_Destroy. i.e. if the
   ** following were coded:
@@ -69285,7 +69285,7 @@ static void destroyTable(Parse *pParse, Table *pTab){
   ** OP_Destroy 5 0
   **
   ** and root page 5 happened to be the largest root-page number in the
-  ** database, then root page 5 would be moved to page 4 by the 
+  ** database, then root page 5 would be moved to page 4 by the
   ** "OP_Destroy 4 0" opcode. The subsequent "OP_Destroy 5 0" would hit
   ** a free-list page.
   */
@@ -69333,7 +69333,7 @@ SQLITE_PRIVATE void sqlite3DropTable(Parse *pParse, SrcList *pName, int isView,
   assert( pParse->nErr==0 );
   assert( pName->nSrc==1 );
   if( noErr ) db->suppressErr++;
-  pTab = sqlite3LocateTable(pParse, isView, 
+  pTab = sqlite3LocateTable(pParse, isView,
                             pName->a[0].zName, pName->a[0].zDatabase);
   if( noErr ) db->suppressErr--;
 
@@ -69425,7 +69425,7 @@ SQLITE_PRIVATE void sqlite3DropTable(Parse *pParse, SrcList *pName, int isView,
     */
     pTrigger = sqlite3TriggerList(pParse, pTab);
     while( pTrigger ){
-      assert( pTrigger->pSchema==pTab->pSchema || 
+      assert( pTrigger->pSchema==pTab->pSchema ||
           pTrigger->pSchema==db->aDb[1].pSchema );
       sqlite3DropTriggerPtr(pParse, pTrigger);
       pTrigger = pTrigger->pNext;
@@ -69452,7 +69452,7 @@ SQLITE_PRIVATE void sqlite3DropTable(Parse *pParse, SrcList *pName, int isView,
     ** created in the temp database that refers to a table in another
     ** database.
     */
-    sqlite3NestedParse(pParse, 
+    sqlite3NestedParse(pParse,
         "DELETE FROM %Q.%s WHERE tbl_name=%Q and type!='trigger'",
         pDb->zName, SCHEMA_TABLE(iDb), pTab->zName);
 
@@ -69566,8 +69566,8 @@ SQLITE_PRIVATE void sqlite3CreateForeignKey(
         }
       }
       if( j>=p->nCol ){
-        sqlite3ErrorMsg(pParse, 
-          "unknown column \"%s\" in foreign key definition", 
+        sqlite3ErrorMsg(pParse,
+          "unknown column \"%s\" in foreign key definition",
           pFromCol->a[i].zName);
         goto fk_end;
       }
@@ -69586,7 +69586,7 @@ SQLITE_PRIVATE void sqlite3CreateForeignKey(
   pFKey->aAction[0] = (u8)(flags & 0xff);            /* ON DELETE action */
   pFKey->aAction[1] = (u8)((flags >> 8 ) & 0xff);    /* ON UPDATE action */
 
-  pNextTo = (FKey *)sqlite3HashInsert(&p->pSchema->fkeyHash, 
+  pNextTo = (FKey *)sqlite3HashInsert(&p->pSchema->fkeyHash,
       pFKey->zTo, sqlite3Strlen30(pFKey->zTo), (void *)pFKey
   );
   if( pNextTo==pFKey ){
@@ -69671,7 +69671,7 @@ static void sqlite3RefillIndex(Parse *pParse, Index *pIndex, int memRootPage){
     sqlite3VdbeAddOp2(v, OP_Clear, tnum, iDb);
   }
   pKey = sqlite3IndexKeyinfo(pParse, pIndex);
-  sqlite3VdbeAddOp4(v, OP_OpenWrite, iIdx, tnum, iDb, 
+  sqlite3VdbeAddOp4(v, OP_OpenWrite, iIdx, tnum, iDb,
                     (char *)pKey, P4_KEYINFO_HANDOFF);
   if( memRootPage>=0 ){
     sqlite3VdbeChangeP5(v, 1);
@@ -69688,7 +69688,7 @@ static void sqlite3RefillIndex(Parse *pParse, Index *pIndex, int memRootPage){
     /* The registers accessed by the OP_IsUnique opcode were allocated
     ** using sqlite3GetTempRange() inside of the sqlite3GenerateIndexKey()
     ** call above. Just before that function was freed they were released
-    ** (made available to the compiler for reuse) using 
+    ** (made available to the compiler for reuse) using
     ** sqlite3ReleaseTempRange(). So in some ways having the OP_IsUnique
     ** opcode use the values stored within seems dangerous. However, since
     ** we can be sure that no other temp registers have been allocated
@@ -69708,8 +69708,8 @@ static void sqlite3RefillIndex(Parse *pParse, Index *pIndex, int memRootPage){
 }
 
 /*
-** Create a new index for an SQL table.  pName1.pName2 is the name of the index 
-** and pTblList is the name of the table that is to be indexed.  Both will 
+** Create a new index for an SQL table.  pName1.pName2 is the name of the index
+** and pTblList is the name of the table that is to be indexed.  Both will
 ** be NULL for a primary key or an index that is created to satisfy a
 ** UNIQUE constraint.  If pTable and pIndex are NULL, use pParse->pNewTable
 ** as the table to be indexed.  pParse->pNewTable is a table that is
@@ -69717,7 +69717,7 @@ static void sqlite3RefillIndex(Parse *pParse, Index *pIndex, int memRootPage){
 **
 ** pList is a list of columns to be indexed.  pList will be NULL if this
 ** is a primary key or unique-constraint on the most recent column added
-** to the table currently under construction.  
+** to the table currently under construction.
 **
 ** If the index is created successfully, return a pointer to the new Index
 ** structure. This is used by sqlite3AddPrimaryKey() to mark the index
@@ -69767,7 +69767,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
   */
   if( pTblName!=0 ){
 
-    /* Use the two-part index name to determine the database 
+    /* Use the two-part index name to determine the database
     ** to search for the table. 'Fix' the table name to this db
     ** before looking up the table.
     */
@@ -69795,7 +69795,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
       ** sqlite3FixSrcList can never fail. */
       assert(0);
     }
-    pTab = sqlite3LocateTable(pParse, 0, pTblName->a[0].zName, 
+    pTab = sqlite3LocateTable(pParse, 0, pTblName->a[0].zName,
         pTblName->a[0].zDatabase);
     if( !pTab || db->mallocFailed ) goto exit_create_index;
     assert( db->aDb[iDb].pSchema==pTab->pSchema );
@@ -69809,7 +69809,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
 
   assert( pTab!=0 );
   assert( pParse->nErr==0 );
-  if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0 
+  if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0
        && memcmp(&pTab->zName[7],"altertab_",9)!=0 ){
     sqlite3ErrorMsg(pParse, "table %s may not be indexed", pTab->zName);
     goto exit_create_index;
@@ -69829,7 +69829,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
 
   /*
   ** Find the name of the index.  Make sure there is not already another
-  ** index or table with the same name.  
+  ** index or table with the same name.
   **
   ** Exception:  If we are reading the names of permanent indices from the
   ** sqlite_master table (because some other process changed the schema) and
@@ -69912,12 +69912,12 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
     }
   }
 
-  /* 
-  ** Allocate the index structure. 
+  /*
+  ** Allocate the index structure.
   */
   nName = sqlite3Strlen30(zName);
   nCol = pList->nExpr;
-  pIndex = sqlite3DbMallocZero(db, 
+  pIndex = sqlite3DbMallocZero(db,
       sizeof(Index) +              /* Index structure  */
       sizeof(int)*nCol +           /* Index.aiColumn   */
       sizeof(int)*(nCol+1) +       /* Index.aiRowEst   */
@@ -69957,7 +69957,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
   ** TODO:  Add a test to make sure that the same column is not named
   ** more than once within the same index.  Only the first instance of
   ** the column will ever be used by the optimizer.  Note that using the
-  ** same column more than once cannot be an error because that would 
+  ** same column more than once cannot be an error because that would
   ** break backwards compatibility - it needs to be a warning.
   */
   for(i=0, pListItem=pList->a; i<pList->nExpr; i++, pListItem++){
@@ -70046,13 +70046,13 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
         if( pIdx->onError!=pIndex->onError ){
           /* This constraint creates the same index as a previous
           ** constraint specified somewhere in the CREATE TABLE statement.
-          ** However the ON CONFLICT clauses are different. If both this 
+          ** However the ON CONFLICT clauses are different. If both this
           ** constraint and the previous equivalent constraint have explicit
           ** ON CONFLICT clauses this is an error. Otherwise, use the
           ** explicitly specified behaviour for the index.
           */
           if( !(pIdx->onError==OE_Default || pIndex->onError==OE_Default) ){
-            sqlite3ErrorMsg(pParse, 
+            sqlite3ErrorMsg(pParse,
                 "conflicting ON CONFLICT clauses specified", 0);
           }
           if( pIdx->onError==OE_Default ){
@@ -70065,11 +70065,11 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
   }
 
   /* Link the new Index structure to its table and to the other
-  ** in-memory database structures. 
+  ** in-memory database structures.
   */
   if( db->init.busy ){
     Index *p;
-    p = sqlite3HashInsert(&pIndex->pSchema->idxHash, 
+    p = sqlite3HashInsert(&pIndex->pSchema->idxHash,
                           pIndex->zName, sqlite3Strlen30(pIndex->zName),
                           pIndex);
     if( p ){
@@ -70087,8 +70087,8 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
   ** involves writing the index into the master table and filling in the
   ** index with the current table contents.
   **
-  ** The db->init.busy is 0 when the user first enters a CREATE INDEX 
-  ** command.  db->init.busy is 1 when a database is opened and 
+  ** The db->init.busy is 0 when the user first enters a CREATE INDEX
+  ** command.  db->init.busy is 1 when a database is opened and
   ** CREATE INDEX statements are read out of the master table.  In
   ** the latter case the index already exists on disk, which is why
   ** we don't want to recreate it.
@@ -70130,7 +70130,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
 
     /* Add an entry in sqlite_master for this index
     */
-    sqlite3NestedParse(pParse, 
+    sqlite3NestedParse(pParse,
         "INSERT INTO %Q.%s VALUES('index',%Q,%Q,#%d,%Q);",
         db->aDb[iDb].zName, SCHEMA_TABLE(iDb),
         pIndex->zName,
@@ -70156,7 +70156,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
   ** sure all indices labeled OE_Replace come after all those labeled
   ** OE_Ignore.  This is necessary for the correct constraint check
   ** processing (in sqlite3GenerateConstraintChecks()) as part of
-  ** UPDATE and INSERT statements.  
+  ** UPDATE and INSERT statements.
   */
   if( db->init.busy || pTblName==0 ){
     if( onError!=OE_Replace || pTab->pIndex==0
@@ -70474,7 +70474,7 @@ SQLITE_PRIVATE SrcList *sqlite3SrcListEnlarge(
 ** database name prefix.  Like this:  "database.table".  The pDatabase
 ** points to the table name and the pTable points to the database name.
 ** The SrcList.a[].zName field is filled with the table name which might
-** come from pTable (if pDatabase is NULL) or from pDatabase.  
+** come from pTable (if pDatabase is NULL) or from pDatabase.
 ** SrcList.a[].zDatabase is filled with the database name from pTable,
 ** or with NULL if no database is specified.
 **
@@ -70594,7 +70594,7 @@ SQLITE_PRIVATE SrcList *sqlite3SrcListAppendFromTerm(
   struct SrcList_item *pItem;
   sqlite3 *db = pParse->db;
   if( !p && (pOn || pUsing) ){
-    sqlite3ErrorMsg(pParse, "a JOIN clause is required before %s", 
+    sqlite3ErrorMsg(pParse, "a JOIN clause is required before %s",
       (pOn ? "ON" : "USING")
     );
     goto append_from_error;
@@ -70622,7 +70622,7 @@ SQLITE_PRIVATE SrcList *sqlite3SrcListAppendFromTerm(
 }
 
 /*
-** Add an INDEXED BY or NOT INDEXED clause to the most recently added 
+** Add an INDEXED BY or NOT INDEXED clause to the most recently added
 ** element of the source-list passed as the second argument.
 */
 SQLITE_PRIVATE void sqlite3SrcListIndexedBy(Parse *pParse, SrcList *p, Token *pIndexedBy){
@@ -70631,7 +70631,7 @@ SQLITE_PRIVATE void sqlite3SrcListIndexedBy(Parse *pParse, SrcList *p, Token *pI
     struct SrcList_item *pItem = &p->a[p->nSrc-1];
     assert( pItem->notIndexed==0 && pItem->zIndex==0 );
     if( pIndexedBy->n==1 && !pIndexedBy->z ){
-      /* A "NOT INDEXED" clause was supplied. See parse.y 
+      /* A "NOT INDEXED" clause was supplied. See parse.y
       ** construct "indexed_opt" for details. */
       pItem->notIndexed = 1;
     }else{
@@ -70733,7 +70733,7 @@ SQLITE_PRIVATE void sqlite3RollbackTransaction(Parse *pParse){
 
 /*
 ** This function is called by the parser when it parses a command to create,
-** release or rollback an SQL savepoint. 
+** release or rollback an SQL savepoint.
 */
 SQLITE_PRIVATE void sqlite3Savepoint(Parse *pParse, int op, Token *pName){
   char *zName = sqlite3NameFromToken(pParse->db, pName);
@@ -70760,7 +70760,7 @@ SQLITE_PRIVATE int sqlite3OpenTempDatabase(Parse *pParse){
   if( db->aDb[1].pBt==0 && !pParse->explain ){
     int rc;
     Btree *pBt;
-    static const int flags = 
+    static const int flags =
           SQLITE_OPEN_READWRITE |
           SQLITE_OPEN_CREATE |
           SQLITE_OPEN_EXCLUSIVE |
@@ -70865,9 +70865,9 @@ SQLITE_PRIVATE void sqlite3MultiWrite(Parse *pParse){
   pToplevel->isMultiWrite = 1;
 }
 
-/* 
+/*
 ** The code generator calls this routine if is discovers that it is
-** possible to abort a statement prior to completion.  In order to 
+** possible to abort a statement prior to completion.  In order to
 ** perform this abort without corrupting the database, we need to make
 ** sure that the statement is protected by a statement transaction.
 **
@@ -70876,7 +70876,7 @@ SQLITE_PRIVATE void sqlite3MultiWrite(Parse *pParse){
 ** such that the abort must occur after the multiwrite.  This makes
 ** some statements involving the REPLACE conflict resolution algorithm
 ** go a little faster.  But taking advantage of this time dependency
-** makes it more difficult to prove that the code is correct (in 
+** makes it more difficult to prove that the code is correct (in
 ** particular, it prevents us from writing an effective
 ** implementation of sqlite3AssertMayAbort()) and so we have chosen
 ** to take the safe route and skip the optimization.
@@ -71032,8 +71032,8 @@ SQLITE_PRIVATE void sqlite3Reindex(Parse *pParse, Token *pName1, Token *pName2){
 ** with OP_OpenRead or OP_OpenWrite to access database index pIdx.
 **
 ** If successful, a pointer to the new structure is returned. In this case
-** the caller is responsible for calling sqlite3DbFree(db, ) on the returned 
-** pointer. If an error occurs (out of memory or missing collation 
+** the caller is responsible for calling sqlite3DbFree(db, ) on the returned
+** pointer. If an error occurs (out of memory or missing collation
 ** sequence), NULL is returned and the state of pParse updated to reflect
 ** the error.
 */
@@ -71067,7 +71067,7 @@ SQLITE_PRIVATE KeyInfo *sqlite3IndexKeyinfo(Parse *pParse, Index *pIdx){
 /************** End of build.c ***********************************************/
 /************** Begin file callback.c ****************************************/
 /*
-** 2005 May 23 
+** 2005 May 23
 **
 ** The author disclaims copyright to this source code.  In place of
 ** a legal notice, here is a blessing:
@@ -71136,8 +71136,8 @@ static int synthCollSeq(sqlite3 *db, CollSeq *pColl){
 ** This function is responsible for invoking the collation factory callback
 ** or substituting a collation sequence of a different encoding when the
 ** requested collation sequence is not available in the desired encoding.
-** 
-** If it is not NULL, then pColl must point to the database native encoding 
+**
+** If it is not NULL, then pColl must point to the database native encoding
 ** collation sequence with name zName, length nName.
 **
 ** The return value is either the collation sequence to be used in database
@@ -71179,7 +71179,7 @@ SQLITE_PRIVATE CollSeq *sqlite3GetCollSeq(
 ** that have not been defined by sqlite3_create_collation() etc.
 **
 ** If required, this routine calls the 'collation needed' callback to
-** request a definition of the collating sequence. If this doesn't work, 
+** request a definition of the collating sequence. If this doesn't work,
 ** an equivalent collating sequence that uses a text encoding different
 ** from the main database is substituted, if one is available.
 */
@@ -71236,7 +71236,7 @@ static CollSeq *findCollSeqEntry(
       pColl[0].zName[nName] = 0;
       pDel = sqlite3HashInsert(&db->aCollSeq, pColl[0].zName, nName, pColl);
 
-      /* If a malloc() failure occurred in sqlite3HashInsert(), it will 
+      /* If a malloc() failure occurred in sqlite3HashInsert(), it will
       ** return the pColl pointer to be deleted (because it wasn't added
       ** to the hash table).
       */
@@ -71307,7 +71307,7 @@ SQLITE_PRIVATE CollSeq *sqlite3FindCollSeq(
 */
 static int matchQuality(FuncDef *p, int nArg, u8 enc){
   int match = 0;
-  if( p->nArg==-1 || p->nArg==nArg 
+  if( p->nArg==-1 || p->nArg==nArg
    || (nArg==-1 && (p->xFunc!=0 || p->xStep!=0))
   ){
     match = 1;
@@ -71366,8 +71366,8 @@ SQLITE_PRIVATE void sqlite3FuncDefInsert(
     pHash->a[h] = pDef;
   }
 }
-  
-  
+
+
 
 /*
 ** Locate a user function given a name, a number of arguments and a flag
@@ -71425,7 +71425,7 @@ SQLITE_PRIVATE FuncDef *sqlite3FindFunction(
   ** have fields overwritten with new information appropriate for the
   ** new function.  But the FuncDefs for built-in functions are read-only.
   ** So we must not search for built-ins when creating a new function.
-  */ 
+  */
   if( !createFlag && !pBest ){
     FuncDefHash *pHash = &GLOBAL(FuncDefHash, sqlite3GlobalFunctions);
     p = functionSearch(pHash, h, zName, nName);
@@ -71443,7 +71443,7 @@ SQLITE_PRIVATE FuncDef *sqlite3FindFunction(
   ** exact match for the name, number of arguments and encoding, then add a
   ** new entry to the hash table and return it.
   */
-  if( createFlag && (bestScore<6 || pBest->nArg!=nArg) && 
+  if( createFlag && (bestScore<6 || pBest->nArg!=nArg) &&
       (pBest = sqlite3DbMallocZero(db, sizeof(*pBest)+nName+1))!=0 ){
     pBest->zName = (char *)&pBest[1];
     pBest->nArg = (u16)nArg;
@@ -71461,7 +71461,7 @@ SQLITE_PRIVATE FuncDef *sqlite3FindFunction(
 
 /*
 ** Free all resources held by the schema structure. The void* argument points
-** at a Schema struct. This function does not call sqlite3DbFree(db, ) on the 
+** at a Schema struct. This function does not call sqlite3DbFree(db, ) on the
 ** pointer itself, it just cleans up subsiduary resources (i.e. the contents
 ** of the schema hash tables).
 **
@@ -71565,12 +71565,12 @@ SQLITE_PRIVATE int sqlite3IsReadOnly(Parse *pParse, Table *pTab, int viewOk){
   **   1) It is a virtual table and no implementation of the xUpdate method
   **      has been provided, or
   **   2) It is a system table (i.e. sqlite_master), this call is not
-  **      part of a nested parse and writable_schema pragma has not 
+  **      part of a nested parse and writable_schema pragma has not
   **      been specified.
   **
   ** In either case leave an error message in pParse and return non-zero.
   */
-  if( ( IsVirtual(pTab) 
+  if( ( IsVirtual(pTab)
      && sqlite3GetVTable(pParse->db, pTab)->pMod->pModule->xUpdate==0 )
    || ( (pTab->tabFlags & TF_Readonly)!=0
      && (pParse->db->flags & SQLITE_WriteSchema)==0
@@ -71609,7 +71609,7 @@ SQLITE_PRIVATE void sqlite3MaterializeView(
   pDup = sqlite3SelectDup(db, pView->pSelect, 0);
   if( pWhere ){
     SrcList *pFrom;
-    
+
     pWhere = sqlite3ExprDup(db, pWhere, 0);
     pFrom = sqlite3SrcListAppend(db, 0, 0, 0);
     if( pFrom ){
@@ -71671,11 +71671,11 @@ SQLITE_PRIVATE Expr *sqlite3LimitWhere(
     return pWhere;
   }
 
-  /* Generate a select expression tree to enforce the limit/offset 
+  /* Generate a select expression tree to enforce the limit/offset
   ** term for the DELETE or UPDATE statement.  For example:
   **   DELETE FROM table_a WHERE col1=1 ORDER BY col2 LIMIT 1 OFFSET 1
   ** becomes:
-  **   DELETE FROM table_a WHERE rowid IN ( 
+  **   DELETE FROM table_a WHERE rowid IN (
   **     SELECT rowid FROM table_a WHERE col1=1 ORDER BY col2 LIMIT 1 OFFSET 1
   **   );
   */
@@ -71856,9 +71856,9 @@ SQLITE_PRIVATE void sqlite3DeleteFrom(
 #ifndef SQLITE_OMIT_TRUNCATE_OPTIMIZATION
   /* Special case: A DELETE without a WHERE clause deletes everything.
   ** It is easier just to erase the whole table. Prior to version 3.6.5,
-  ** this optimization caused the row change count (the value returned by 
+  ** this optimization caused the row change count (the value returned by
   ** API function sqlite3_count_changes) to be set incorrectly.  */
-  if( rcauth==SQLITE_OK && pWhere==0 && !pTrigger && !IsVirtual(pTab) 
+  if( rcauth==SQLITE_OK && pWhere==0 && !pTrigger && !IsVirtual(pTab)
    && 0==sqlite3FkRequired(pParse, pTab, 0, 0)
   ){
     assert( !isView );
@@ -71895,9 +71895,9 @@ SQLITE_PRIVATE void sqlite3DeleteFrom(
     ** because deleting an item can change the scan order.  */
     end = sqlite3VdbeMakeLabel(v);
 
-    /* Unless this is a view, open cursors for the table we are 
+    /* Unless this is a view, open cursors for the table we are
     ** deleting from and all its indices. If this is a view, then the
-    ** only effect this statement has is to fire the INSTEAD OF 
+    ** only effect this statement has is to fire the INSTEAD OF
     ** triggers.  */
     if( !isView ){
       sqlite3OpenTableAndIndices(pParse, pTab, iCur, OP_OpenWrite);
@@ -71940,7 +71940,7 @@ SQLITE_PRIVATE void sqlite3DeleteFrom(
     sqlite3AutoincrementEnd(pParse);
   }
 
-  /* Return the number of rows that were deleted. If this routine is 
+  /* Return the number of rows that were deleted. If this routine is
   ** generating code because of a call to sqlite3NestedParse(), do not
   ** invoke the callback function.
   */
@@ -71982,7 +71982,7 @@ delete_from_cleanup:
 **   3.  The record number of the row to be deleted must be stored in
 **       memory cell iRowid.
 **
-** This routine generates code to remove both the table record and all 
+** This routine generates code to remove both the table record and all
 ** index entries that point to that record.
 */
 SQLITE_PRIVATE void sqlite3GenerateRowDelete(
@@ -72001,12 +72001,12 @@ SQLITE_PRIVATE void sqlite3GenerateRowDelete(
   /* Vdbe is guaranteed to have been allocated by this stage. */
   assert( v );
 
-  /* Seek cursor iCur to the row to delete. If this row no longer exists 
+  /* Seek cursor iCur to the row to delete. If this row no longer exists
   ** (this can happen if a trigger program has already deleted it), do
   ** not attempt to delete it or fire any DELETE triggers.  */
   iLabel = sqlite3VdbeMakeLabel(v);
   sqlite3VdbeAddOp3(v, OP_NotExists, iCur, iLabel, iRowid);
+
   /* If there are any triggers to fire, allocate a range of registers to
   ** use for the old.* references in the triggers.  */
   if( sqlite3FkRequired(pParse, pTab, 0, 0) || pTrigger ){
@@ -72022,7 +72022,7 @@ SQLITE_PRIVATE void sqlite3GenerateRowDelete(
     iOld = pParse->nMem+1;
     pParse->nMem += (1 + pTab->nCol);
 
-    /* Populate the OLD.* pseudo-table register array. These values will be 
+    /* Populate the OLD.* pseudo-table register array. These values will be
     ** used by any BEFORE and AFTER triggers that exist.  */
     sqlite3VdbeAddOp2(v, OP_Copy, iRowid, iOld);
     for(iCol=0; iCol<pTab->nCol; iCol++){
@@ -72034,25 +72034,25 @@ SQLITE_PRIVATE void sqlite3GenerateRowDelete(
     }
 
     /* Invoke BEFORE DELETE trigger programs. */
-    sqlite3CodeRowTrigger(pParse, pTrigger, 
+    sqlite3CodeRowTrigger(pParse, pTrigger,
         TK_DELETE, 0, TRIGGER_BEFORE, pTab, iOld, onconf, iLabel
     );
 
     /* Seek the cursor to the row to be deleted again. It may be that
     ** the BEFORE triggers coded above have already removed the row
-    ** being deleted. Do not attempt to delete the row a second time, and 
+    ** being deleted. Do not attempt to delete the row a second time, and
     ** do not fire AFTER triggers.  */
     sqlite3VdbeAddOp3(v, OP_NotExists, iCur, iLabel, iRowid);
 
     /* Do FK processing. This call checks that any FK constraints that
-    ** refer to this table (i.e. constraints attached to other tables) 
+    ** refer to this table (i.e. constraints attached to other tables)
     ** are not violated by deleting this row.  */
     sqlite3FkCheck(pParse, pTab, iOld, 0);
   }
 
   /* Delete the index and table entries. Skip this step if pTab is really
   ** a view (in which case the only effect of the DELETE statement is to
-  ** fire the INSTEAD OF triggers).  */ 
+  ** fire the INSTEAD OF triggers).  */
   if( pTab->pSelect==0 ){
     sqlite3GenerateRowIndexDelete(pParse, pTab, iCur, 0);
     sqlite3VdbeAddOp2(v, OP_Delete, iCur, (count?OPFLAG_NCHANGE:0));
@@ -72063,16 +72063,16 @@ SQLITE_PRIVATE void sqlite3GenerateRowDelete(
 
   /* Do any ON CASCADE, SET NULL or SET DEFAULT operations required to
   ** handle rows (possibly in other tables) that refer via a foreign key
-  ** to the row just deleted. */ 
+  ** to the row just deleted. */
   sqlite3FkActions(pParse, pTab, 0, iOld);
 
   /* Invoke AFTER DELETE trigger programs. */
-  sqlite3CodeRowTrigger(pParse, pTrigger, 
+  sqlite3CodeRowTrigger(pParse, pTrigger,
       TK_DELETE, 0, TRIGGER_AFTER, pTab, iOld, onconf, iLabel
   );
 
   /* Jump here if the row had already been deleted before any BEFORE
-  ** trigger programs were invoked. Or if a trigger program throws a 
+  ** trigger programs were invoked. Or if a trigger program throws a
   ** RAISE(IGNORE) exception.  */
   sqlite3VdbeResolveLabel(v, iLabel);
 }
@@ -72168,7 +72168,7 @@ SQLITE_PRIVATE int sqlite3GenerateIndexKey(
 **
 *************************************************************************
 ** This file contains the C functions that implement various SQL
-** functions of SQLite.  
+** functions of SQLite.
 **
 ** There is only one exported symbol in this file - the function
 ** sqliteRegisterBuildinFunctions() found at the bottom of the file.
@@ -72274,7 +72274,7 @@ static void lengthFunc(
 ** Implementation of the abs() function.
 **
 ** IMP: R-23979-26855 The abs(X) function returns the absolute value of
-** the numeric argument X. 
+** the numeric argument X.
 */
 static void absFunc(sqlite3_context *context, int argc, sqlite3_value **argv){
   assert( argc==1 );
@@ -72291,7 +72291,7 @@ static void absFunc(sqlite3_context *context, int argc, sqlite3_value **argv){
           return;
         }
         iVal = -iVal;
-      } 
+      }
       sqlite3_result_int64(context, iVal);
       break;
     }
@@ -72304,7 +72304,7 @@ static void absFunc(sqlite3_context *context, int argc, sqlite3_value **argv){
       /* Because sqlite3_value_double() returns 0.0 if the argument is not
       ** something that can be converted into a number, we have:
       ** IMP: R-57326-31541 Abs(X) return 0.0 if X is a string or blob that
-      ** cannot be converted to a numeric value. 
+      ** cannot be converted to a numeric value.
       */
       double rVal = sqlite3_value_double(argv[0]);
       if( rVal<0 ) rVal = -rVal;
@@ -72524,7 +72524,7 @@ static void lowerFunc(sqlite3_context *context, int argc, sqlite3_value **argv){
 ** comment.
 */
 /*
-** Implementation of the IFNULL(), NVL(), and COALESCE() functions.  
+** Implementation of the IFNULL(), NVL(), and COALESCE() functions.
 ** All three do the same thing.  They return the first non-NULL
 ** argument.
 */
@@ -72545,7 +72545,7 @@ static void ifnullFunc(
 #define ifnullFunc versionFunc   /* Substitute function - never called */
 
 /*
-** Implementation of random().  Return a random integer.  
+** Implementation of random().  Return a random integer.
 */
 static void randomFunc(
   sqlite3_context *context,
@@ -72556,11 +72556,11 @@ static void randomFunc(
   UNUSED_PARAMETER2(NotUsed, NotUsed2);
   sqlite3_randomness(sizeof(r), &r);
   if( r<0 ){
-    /* We need to prevent a random number of 0x8000000000000000 
+    /* We need to prevent a random number of 0x8000000000000000
     ** (or -9223372036854775808) since when you do abs() of that
     ** number of you get the same value back again.  To do this
     ** in a way that is testable, mask the sign bit off of negative
-    ** values, resulting in a positive value.  Then take the 
+    ** values, resulting in a positive value.  Then take the
     ** 2s complement of that positive value.  The end result can
     ** therefore be no less than -9223372036854775807.
     */
@@ -72598,8 +72598,8 @@ static void randomBlob(
 ** value is the same as the sqlite3_last_insert_rowid() API function.
 */
 static void last_insert_rowid(
-  sqlite3_context *context, 
-  int NotUsed, 
+  sqlite3_context *context,
+  int NotUsed,
   sqlite3_value **NotUsed2
 ){
   sqlite3 *db = sqlite3_context_db_handle(context);
@@ -72714,7 +72714,7 @@ static int patternCompare(
   u8 matchOne = pInfo->matchOne;
   u8 matchAll = pInfo->matchAll;
   u8 matchSet = pInfo->matchSet;
-  u8 noCase = pInfo->noCase; 
+  u8 noCase = pInfo->noCase;
   int prevEscape = 0;     /* True if the previous character was 'escape' */
 
   while( (c = sqlite3Utf8Read(zPattern,&zPattern))!=0 ){
@@ -72833,8 +72833,8 @@ SQLITE_API int sqlite3_like_count = 0;
 ** the GLOB operator.
 */
 static void likeFunc(
-  sqlite3_context *context, 
-  int argc, 
+  sqlite3_context *context,
+  int argc,
   sqlite3_value **argv
 ){
   const unsigned char *zA, *zB;
@@ -72864,7 +72864,7 @@ static void likeFunc(
     const unsigned char *zEsc = sqlite3_value_text(argv[2]);
     if( zEsc==0 ) return;
     if( sqlite3Utf8CharLen((char*)zEsc, -1)!=1 ){
-      sqlite3_result_error(context, 
+      sqlite3_result_error(context,
           "ESCAPE expression must be a single character", -1);
       return;
     }
@@ -72875,7 +72875,7 @@ static void likeFunc(
 #ifdef SQLITE_TEST
     sqlite3_like_count++;
 #endif
-    
+
     sqlite3_result_int(context, patternCompare(zB, zA, pInfo, escape));
   }
 }
@@ -72951,8 +72951,8 @@ static void compileoptionusedFunc(
 #endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */
 
 /*
-** Implementation of the sqlite_compileoption_get() function. 
-** The result is a string that identifies the compiler options 
+** Implementation of the sqlite_compileoption_get() function.
+** The result is a string that identifies the compiler options
 ** used to build SQLite.
 */
 #ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
@@ -72975,7 +72975,7 @@ static void compileoptiongetFunc(
 ** digits. */
 static const char hexdigits[] = {
   '0', '1', '2', '3', '4', '5', '6', '7',
-  '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' 
+  '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
 };
 
 /*
@@ -73003,7 +73003,7 @@ static void quoteFunc(sqlite3_context *context, int argc, sqlite3_value **argv){
       char const *zBlob = sqlite3_value_blob(argv[0]);
       int nBlob = sqlite3_value_bytes(argv[0]);
       assert( zBlob==sqlite3_value_blob(argv[0]) ); /* No encoding change */
-      zText = (char *)contextMalloc(context, (2*(i64)nBlob)+4); 
+      zText = (char *)contextMalloc(context, (2*(i64)nBlob)+4);
       if( zText ){
         int i;
         for(i=0; i<nBlob; i++){
@@ -73152,7 +73152,7 @@ static void replaceFunc(
   if( zOut==0 ){
     return;
   }
-  loopLimit = nStr - nPattern;  
+  loopLimit = nStr - nPattern;
   for(i=j=0; i<=loopLimit; i++){
     if( zStr[i]!=zPattern[0] || memcmp(&zStr[i], zPattern, nPattern) ){
       zOut[j++] = zStr[i];
@@ -73281,7 +73281,7 @@ static void trimFunc(
 ** Compute the soundex encoding of a word.
 **
 ** IMP: R-59782-00072 The soundex(X) function returns a string that is the
-** soundex encoding of the string X. 
+** soundex encoding of the string X.
 */
 static void soundexFunc(
   sqlite3_context *context,
@@ -73362,7 +73362,7 @@ static void loadExt(sqlite3_context *context, int argc, sqlite3_value **argv){
 typedef struct SumCtx SumCtx;
 struct SumCtx {
   double rSum;      /* Floating point sum */
-  i64 iSum;         /* Integer sum */   
+  i64 iSum;         /* Integer sum */
   i64 cnt;          /* Number of elements summed */
   u8 overflow;      /* True if integer overflow seen */
   u8 approx;        /* True if non-integer value was input to the sum */
@@ -73452,13 +73452,13 @@ static void countStep(sqlite3_context *context, int argc, sqlite3_value **argv){
 
 #ifndef SQLITE_OMIT_DEPRECATED
   /* The sqlite3_aggregate_count() function is deprecated.  But just to make
-  ** sure it still operates correctly, verify that its count agrees with our 
+  ** sure it still operates correctly, verify that its count agrees with our
   ** internal count when using count(*) and when the total count can be
   ** expressed as a 32-bit integer. */
   assert( argc==1 || p==0 || p->n>0x7fffffff
           || p->n==sqlite3_aggregate_count(context) );
 #endif
-}   
+}
 static void countFinalize(sqlite3_context *context){
   CountCtx *p;
   p = sqlite3_aggregate_context(context, 0);
@@ -73469,8 +73469,8 @@ static void countFinalize(sqlite3_context *context){
 ** Routines to implement min() and max() aggregate functions.
 */
 static void minmaxStep(
-  sqlite3_context *context, 
-  int NotUsed, 
+  sqlite3_context *context,
+  int NotUsed,
   sqlite3_value **argv
 ){
   Mem *pArg  = (Mem *)argv[0];
@@ -73557,8 +73557,8 @@ static void groupConcatFinalize(sqlite3_context *context){
       sqlite3_result_error_toobig(context);
     }else if( pAccum->mallocFailed ){
       sqlite3_result_error_nomem(context);
-    }else{    
-      sqlite3_result_text(context, sqlite3StrAccumFinish(pAccum), -1, 
+    }else{
+      sqlite3_result_text(context, sqlite3StrAccumFinish(pAccum), -1,
                           sqlite3_free);
     }
   }
@@ -73608,10 +73608,10 @@ SQLITE_PRIVATE void sqlite3RegisterLikeFunctions(sqlite3 *db, int caseSensitive)
   }
   sqlite3CreateFunc(db, "like", 2, SQLITE_ANY, pInfo, likeFunc, 0, 0);
   sqlite3CreateFunc(db, "like", 3, SQLITE_ANY, pInfo, likeFunc, 0, 0);
-  sqlite3CreateFunc(db, "glob", 2, SQLITE_ANY, 
+  sqlite3CreateFunc(db, "glob", 2, SQLITE_ANY,
       (struct compareInfo*)&globInfo, likeFunc, 0,0);
   setLikeOptFlag(db, "glob", SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE);
-  setLikeOptFlag(db, "like", 
+  setLikeOptFlag(db, "like",
       caseSensitive ? (SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE) : SQLITE_FUNC_LIKE);
 }
 
@@ -73624,14 +73624,14 @@ SQLITE_PRIVATE void sqlite3RegisterLikeFunctions(sqlite3 *db, int caseSensitive)
 */
 SQLITE_PRIVATE int sqlite3IsLikeFunction(sqlite3 *db, Expr *pExpr, int *pIsNocase, char *aWc){
   FuncDef *pDef;
-  if( pExpr->op!=TK_FUNCTION 
-   || !pExpr->x.pList 
+  if( pExpr->op!=TK_FUNCTION
+   || !pExpr->x.pList
    || pExpr->x.pList->nExpr!=2
   ){
     return 0;
   }
   assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
-  pDef = sqlite3FindFunction(db, pExpr->u.zToken, 
+  pDef = sqlite3FindFunction(db, pExpr->u.zToken,
                              sqlite3Strlen30(pExpr->u.zToken),
                              2, SQLITE_UTF8, 0);
   if( NEVER(pDef==0) || (pDef->flags & SQLITE_FUNC_LIKE)==0 ){
@@ -73727,7 +73727,7 @@ SQLITE_PRIVATE void sqlite3RegisterGlobalFunctions(void){
     AGGREGATE(count,             1, 0, 0, countStep,       countFinalize  ),
     AGGREGATE(group_concat,      1, 0, 0, groupConcatStep, groupConcatFinalize),
     AGGREGATE(group_concat,      2, 0, 0, groupConcatStep, groupConcatFinalize),
-  
+
     LIKEFUNC(glob, 2, &globInfo, SQLITE_FUNC_LIKE|SQLITE_FUNC_CASE),
   #ifdef SQLITE_CASE_SENSITIVE_LIKE
     LIKEFUNC(like, 2, &likeInfoAlt, SQLITE_FUNC_LIKE|SQLITE_FUNC_CASE),
@@ -73773,25 +73773,25 @@ SQLITE_PRIVATE void sqlite3RegisterGlobalFunctions(void){
 **
 ** Foreign keys in SQLite come in two flavours: deferred and immediate.
 ** If an immediate foreign key constraint is violated, SQLITE_CONSTRAINT
-** is returned and the current statement transaction rolled back. If a 
-** deferred foreign key constraint is violated, no action is taken 
-** immediately. However if the application attempts to commit the 
+** is returned and the current statement transaction rolled back. If a
+** deferred foreign key constraint is violated, no action is taken
+** immediately. However if the application attempts to commit the
 ** transaction before fixing the constraint violation, the attempt fails.
 **
 ** Deferred constraints are implemented using a simple counter associated
-** with the database handle. The counter is set to zero each time a 
-** database transaction is opened. Each time a statement is executed 
+** with the database handle. The counter is set to zero each time a
+** database transaction is opened. Each time a statement is executed
 ** that causes a foreign key violation, the counter is incremented. Each
 ** time a statement is executed that removes an existing violation from
 ** the database, the counter is decremented. When the transaction is
 ** committed, the commit fails if the current value of the counter is
 ** greater than zero. This scheme has two big drawbacks:
 **
-**   * When a commit fails due to a deferred foreign key constraint, 
+**   * When a commit fails due to a deferred foreign key constraint,
 **     there is no way to tell which foreign constraint is not satisfied,
 **     or which row it is not satisfied for.
 **
-**   * If the database contains foreign key violations when the 
+**   * If the database contains foreign key violations when the
 **     transaction is opened, this may cause the mechanism to malfunction.
 **
 ** Despite these problems, this approach is adopted as it seems simpler
@@ -73803,26 +73803,26 @@ SQLITE_PRIVATE void sqlite3RegisterGlobalFunctions(void){
 **        the parent table for a match. If none is found increment the
 **        constraint counter.
 **
-**   I.2) For each FK for which the table is the parent table, 
+**   I.2) For each FK for which the table is the parent table,
 **        search the child table for rows that correspond to the new
 **        row in the parent table. Decrement the counter for each row
 **        found (as the constraint is now satisfied).
 **
 ** DELETE operations:
 **
-**   D.1) For each FK for which the table is the child table, 
-**        search the parent table for a row that corresponds to the 
-**        deleted row in the child table. If such a row is not found, 
+**   D.1) For each FK for which the table is the child table,
+**        search the parent table for a row that corresponds to the
+**        deleted row in the child table. If such a row is not found,
 **        decrement the counter.
 **
-**   D.2) For each FK for which the table is the parent table, search 
-**        the child table for rows that correspond to the deleted row 
+**   D.2) For each FK for which the table is the parent table, search
+**        the child table for rows that correspond to the deleted row
 **        in the parent table. For each found increment the counter.
 **
 ** UPDATE operations:
 **
 **   An UPDATE command requires that all 4 steps above are taken, but only
-**   for FK constraints for which the affected columns are actually 
+**   for FK constraints for which the affected columns are actually
 **   modified (values must be compared at runtime).
 **
 ** Note that I.1 and D.1 are very similar operations, as are I.2 and D.2.
@@ -73831,10 +73831,10 @@ SQLITE_PRIVATE void sqlite3RegisterGlobalFunctions(void){
 ** For the purposes of immediate FK constraints, the OR REPLACE conflict
 ** resolution is considered to delete rows before the new row is inserted.
 ** If a delete caused by OR REPLACE violates an FK constraint, an exception
-** is thrown, even if the FK constraint would be satisfied after the new 
+** is thrown, even if the FK constraint would be satisfied after the new
 ** row is inserted.
 **
-** Immediate constraints are usually handled similarly. The only difference 
+** Immediate constraints are usually handled similarly. The only difference
 ** is that the counter used is stored as part of each individual statement
 ** object (struct Vdbe). If, after the statement has run, its immediate
 ** constraint counter is greater than zero, it returns SQLITE_CONSTRAINT
@@ -73844,7 +73844,7 @@ SQLITE_PRIVATE void sqlite3RegisterGlobalFunctions(void){
 ** INSERT violates a foreign key constraint. This is necessary as such
 ** an INSERT does not open a statement transaction.
 **
-** TODO: How should dropping a table be handled? How should renaming a 
+** TODO: How should dropping a table be handled? How should renaming a
 ** table be handled?
 **
 **
@@ -73855,7 +73855,7 @@ SQLITE_PRIVATE void sqlite3RegisterGlobalFunctions(void){
 ** for those two operations needs to know whether or not the operation
 ** requires any FK processing and, if so, which columns of the original
 ** row are required by the FK processing VDBE code (i.e. if FKs were
-** implemented using triggers, which of the old.* columns would be 
+** implemented using triggers, which of the old.* columns would be
 ** accessed). No information is required by the code-generator before
 ** coding an INSERT operation. The functions used by the UPDATE/DELETE
 ** generation code to query for this information are:
@@ -73892,13 +73892,13 @@ SQLITE_PRIVATE void sqlite3RegisterGlobalFunctions(void){
 /*
 ** A foreign key constraint requires that the key columns in the parent
 ** table are collectively subject to a UNIQUE or PRIMARY KEY constraint.
-** Given that pParent is the parent table for foreign key constraint pFKey, 
-** search the schema a unique index on the parent key columns. 
+** Given that pParent is the parent table for foreign key constraint pFKey,
+** search the schema a unique index on the parent key columns.
+**
+** If successful, zero is returned. If the parent key is an INTEGER PRIMARY
+** KEY column, then output variable *ppIdx is set to NULL. Otherwise, *ppIdx
+** is set to point to the unique index.
 **
-** If successful, zero is returned. If the parent key is an INTEGER PRIMARY 
-** KEY column, then output variable *ppIdx is set to NULL. Otherwise, *ppIdx 
-** is set to point to the unique index. 
-** 
 ** If the parent key consists of a single column (the foreign key constraint
 ** is not a composite foreign key), output variable *paiCol is set to NULL.
 ** Otherwise, it is set to point to an allocated array of size N, where
@@ -73921,8 +73921,8 @@ SQLITE_PRIVATE void sqlite3RegisterGlobalFunctions(void){
 **      PRIMARY KEY, or
 **
 **   4) No parent key columns were provided explicitly as part of the
-**      foreign key definition, and the PRIMARY KEY of the parent table 
-**      consists of a a different number of columns to the child key in 
+**      foreign key definition, and the PRIMARY KEY of the parent table
+**      consists of a a different number of columns to the child key in
 **      the child table.
 **
 ** then non-zero is returned, and a "foreign key mismatch" error loaded
@@ -73946,9 +73946,9 @@ static int locateFkeyIndex(
   assert( !paiCol || *paiCol==0 );
   assert( pParse );
 
-  /* If this is a non-composite (single column) foreign key, check if it 
-  ** maps to the INTEGER PRIMARY KEY of table pParent. If so, leave *ppIdx 
-  ** and *paiCol set to zero and return early. 
+  /* If this is a non-composite (single column) foreign key, check if it
+  ** maps to the INTEGER PRIMARY KEY of table pParent. If so, leave *ppIdx
+  ** and *paiCol set to zero and return early.
   **
   ** Otherwise, for a composite foreign key (more than one column), allocate
   ** space for the aiCol array (returned via output parameter *paiCol).
@@ -73957,7 +73957,7 @@ static int locateFkeyIndex(
   if( nCol==1 ){
     /* The FK maps to the IPK if any of the following are true:
     **
-    **   1) There is an INTEGER PRIMARY KEY column and the FK is implicitly 
+    **   1) There is an INTEGER PRIMARY KEY column and the FK is implicitly
     **      mapped to the primary key of table pParent, or
     **   2) The FK is explicitly mapped to a column declared as INTEGER
     **      PRIMARY KEY.
@@ -73974,14 +73974,14 @@ static int locateFkeyIndex(
   }
 
   for(pIdx=pParent->pIndex; pIdx; pIdx=pIdx->pNext){
-    if( pIdx->nColumn==nCol && pIdx->onError!=OE_None ){ 
+    if( pIdx->nColumn==nCol && pIdx->onError!=OE_None ){
       /* pIdx is a UNIQUE index (or a PRIMARY KEY) and has the right number
       ** of columns. If each indexed column corresponds to a foreign key
       ** column of pFKey, then this index is a winner.  */
 
       if( zKey==0 ){
-        /* If zKey is NULL, then this foreign key is implicitly mapped to 
-        ** the PRIMARY KEY of table pParent. The PRIMARY KEY index may be 
+        /* If zKey is NULL, then this foreign key is implicitly mapped to
+        ** the PRIMARY KEY of table pParent. The PRIMARY KEY index may be
         ** identified by the test (Index.autoIndex==2).  */
         if( pIdx->autoIndex==2 ){
           if( aiCol ){
@@ -74037,15 +74037,15 @@ static int locateFkeyIndex(
 }
 
 /*
-** This function is called when a row is inserted into or deleted from the 
-** child table of foreign key constraint pFKey. If an SQL UPDATE is executed 
+** This function is called when a row is inserted into or deleted from the
+** child table of foreign key constraint pFKey. If an SQL UPDATE is executed
 ** on the child table of pFKey, this function is invoked twice for each row
 ** affected - once to "delete" the old row, and then again to "insert" the
 ** new row.
 **
 ** Each time it is called, this function generates VDBE code to locate the
-** row in the parent table that corresponds to the row being inserted into 
-** or deleted from the child table. If the parent row can be found, no 
+** row in the parent table that corresponds to the row being inserted into
+** or deleted from the child table. If the parent row can be found, no
 ** special action is taken. Otherwise, if the parent row can *not* be
 ** found in the parent table:
 **
@@ -74059,7 +74059,7 @@ static int locateFkeyIndex(
 **
 **   DELETE      deferred    Decrement the "deferred constraint counter".
 **
-** These operations are identified in the comment at the top of this file 
+** These operations are identified in the comment at the top of this file
 ** (fkey.c) as "I.1" and "D.1".
 */
 static void fkLookupParent(
@@ -74082,8 +74082,8 @@ static void fkLookupParent(
   ** outstanding constraints to resolve. If there are not, there is no need
   ** to check if deleting this row resolves any outstanding violations.
   **
-  ** Check if any of the key columns in the child table row are NULL. If 
-  ** any are, then the constraint is considered satisfied. No need to 
+  ** Check if any of the key columns in the child table row are NULL. If
+  ** any are, then the constraint is considered satisfied. No need to
   ** search for a matching row in the parent table.  */
   if( nIncr<0 ){
     sqlite3VdbeAddOp2(v, OP_FkIfZero, pFKey->isDeferred, iOk);
@@ -74099,15 +74099,15 @@ static void fkLookupParent(
       ** column of the parent table (table pTab).  */
       int iMustBeInt;               /* Address of MustBeInt instruction */
       int regTemp = sqlite3GetTempReg(pParse);
-  
-      /* Invoke MustBeInt to coerce the child key value to an integer (i.e. 
+
+      /* Invoke MustBeInt to coerce the child key value to an integer (i.e.
       ** apply the affinity of the parent key). If this fails, then there
       ** is no matching parent key. Before using MustBeInt, make a copy of
       ** the value. Otherwise, the value inserted into the child key column
       ** will have INTEGER affinity applied to it, which may not be correct.  */
       sqlite3VdbeAddOp2(v, OP_SCopy, aiCol[0]+1+regData, regTemp);
       iMustBeInt = sqlite3VdbeAddOp2(v, OP_MustBeInt, regTemp, 0);
-  
+
       /* If the parent table is the same as the child table, and we are about
       ** to increment the constraint-counter (i.e. this is an INSERT operation),
       ** then check if the row being inserted matches itself. If so, do not
@@ -74115,7 +74115,7 @@ static void fkLookupParent(
       if( pTab==pFKey->pFrom && nIncr==1 ){
         sqlite3VdbeAddOp3(v, OP_Eq, regData, iOk, regTemp);
       }
-  
+
       sqlite3OpenTable(pParse, iCur, iDb, pTab, OP_OpenRead);
       sqlite3VdbeAddOp3(v, OP_NotExists, iCur, 0, regTemp);
       sqlite3VdbeAddOp2(v, OP_Goto, 0, iOk);
@@ -74127,13 +74127,13 @@ static void fkLookupParent(
       int regTemp = sqlite3GetTempRange(pParse, nCol);
       int regRec = sqlite3GetTempReg(pParse);
       KeyInfo *pKey = sqlite3IndexKeyinfo(pParse, pIdx);
-  
+
       sqlite3VdbeAddOp3(v, OP_OpenRead, iCur, pIdx->tnum, iDb);
       sqlite3VdbeChangeP4(v, -1, (char*)pKey, P4_KEYINFO_HANDOFF);
       for(i=0; i<nCol; i++){
         sqlite3VdbeAddOp2(v, OP_SCopy, aiCol[i]+1+regData, regTemp+i);
       }
-  
+
       /* If the parent table is the same as the child table, and we are about
       ** to increment the constraint-counter (i.e. this is an INSERT operation),
       ** then check if the row being inserted matches itself. If so, do not
@@ -74147,11 +74147,11 @@ static void fkLookupParent(
         }
         sqlite3VdbeAddOp2(v, OP_Goto, 0, iOk);
       }
-  
+
       sqlite3VdbeAddOp3(v, OP_MakeRecord, regTemp, nCol, regRec);
       sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), 0);
       sqlite3VdbeAddOp4Int(v, OP_Found, iCur, iOk, regRec, 0);
-  
+
       sqlite3ReleaseTempReg(pParse, regRec);
       sqlite3ReleaseTempRange(pParse, regTemp, nCol);
     }
@@ -74179,7 +74179,7 @@ static void fkLookupParent(
 
 /*
 ** This function is called to generate code executed when a row is deleted
-** from the parent table of foreign key constraint pFKey and, if pFKey is 
+** from the parent table of foreign key constraint pFKey and, if pFKey is
 ** deferred, when a row is inserted into the same table. When generating
 ** code for an SQL UPDATE operation, this function may be called twice -
 ** once to "delete" the old row and once to "insert" the new row.
@@ -74202,7 +74202,7 @@ static void fkLookupParent(
 **
 **   INSERT      deferred    Decrement the "deferred constraint counter".
 **
-** These operations are identified in the comment at the top of this file 
+** These operations are identified in the comment at the top of this file
 ** (fkey.c) as "I.2" and "D.2".
 */
 static void fkScanChildren(
@@ -74241,7 +74241,7 @@ static void fkScanChildren(
     Expr *pLeft;                  /* Value from parent table row */
     Expr *pRight;                 /* Column ref to child table */
     Expr *pEq;                    /* Expression (pLeft = pRight) */
-    int iCol;                     /* Index of column in child table */ 
+    int iCol;                     /* Index of column in child table */
     const char *zCol;             /* Name of column in child table */
 
     pLeft = sqlite3Expr(db, TK_REGISTER, 0);
@@ -74270,7 +74270,7 @@ static void fkScanChildren(
 
   /* If the child table is the same as the parent table, and this scan
   ** is taking place as part of a DELETE operation (operation D.2), omit the
-  ** row being deleted from the scan by adding ($rowid != rowid) to the WHERE 
+  ** row being deleted from the scan by adding ($rowid != rowid) to the WHERE
   ** clause, where $rowid is the rowid of the row being deleted.  */
   if( pTab==pFKey->pFrom && nIncr>0 ){
     Expr *pEq;                    /* Expression (pLeft = pRight) */
@@ -74334,7 +74334,7 @@ SQLITE_PRIVATE FKey *sqlite3FkReferences(Table *pTab){
 }
 
 /*
-** The second argument is a Trigger structure allocated by the 
+** The second argument is a Trigger structure allocated by the
 ** fkActionTrigger() routine. This function deletes the Trigger structure
 ** and all of its sub-components.
 **
@@ -74362,7 +74362,7 @@ static void fkTriggerDelete(sqlite3 *dbMem, Trigger *p){
 **
 **   (a) The table is the parent table of a FK constraint, or
 **   (b) The table is the child table of a deferred FK constraint and it is
-**       determined at runtime that there are outstanding deferred FK 
+**       determined at runtime that there are outstanding deferred FK
 **       constraint violations in the database,
 **
 ** then the equivalent of "DELETE FROM <tbl>" is executed before dropping
@@ -74378,7 +74378,7 @@ SQLITE_PRIVATE void sqlite3FkDropTable(Parse *pParse, SrcList *pName, Table *pTa
     assert( v );                  /* VDBE has already been allocated */
     if( sqlite3FkReferences(pTab)==0 ){
       /* Search for a deferred foreign key constraint for which this table
-      ** is the child table. If one cannot be found, return without 
+      ** is the child table. If one cannot be found, return without
       ** generating any VDBE code. If one can be found, then jump over
       ** the entire DELETE if there are no outstanding deferred constraints
       ** when this statement is run.  */
@@ -74395,7 +74395,7 @@ SQLITE_PRIVATE void sqlite3FkDropTable(Parse *pParse, SrcList *pName, Table *pTa
     sqlite3DeleteFrom(pParse, sqlite3SrcListDup(db, pName, 0), 0);
     pParse->disableTriggers = 0;
 
-    /* If the DELETE has generated immediate foreign key constraint 
+    /* If the DELETE has generated immediate foreign key constraint
     ** violations, halt the VDBE and return an error at this point, before
     ** any modifications to the schema are made. This is because statement
     ** transactions are not able to rollback schema changes.  */
@@ -74412,7 +74412,7 @@ SQLITE_PRIVATE void sqlite3FkDropTable(Parse *pParse, SrcList *pName, Table *pTa
 
 /*
 ** This function is called when inserting, deleting or updating a row of
-** table pTab to generate VDBE code to perform foreign key constraint 
+** table pTab to generate VDBE code to perform foreign key constraint
 ** processing for the operation.
 **
 ** For a DELETE operation, parameter regOld is passed the index of the
@@ -74428,11 +74428,11 @@ SQLITE_PRIVATE void sqlite3FkDropTable(Parse *pParse, SrcList *pName, Table *pTa
 ** For an UPDATE operation, this function is called twice. Once before
 ** the original record is deleted from the table using the calling convention
 ** described for DELETE. Then again after the original record is deleted
-** but before the new record is inserted using the INSERT convention. 
+** but before the new record is inserted using the INSERT convention.
 */
 SQLITE_PRIVATE void sqlite3FkCheck(
   Parse *pParse,                  /* Parse context */
-  Table *pTab,                    /* Row is being deleted from this table */ 
+  Table *pTab,                    /* Row is being deleted from this table */
   int regOld,                     /* Previous row data is stored here */
   int regNew                      /* New row data is stored here */
 ){
@@ -74464,9 +74464,9 @@ SQLITE_PRIVATE void sqlite3FkCheck(
     int i;
     int isIgnore = 0;
 
-    /* Find the parent table of this foreign key. Also find a unique index 
-    ** on the parent key columns in the parent table. If either of these 
-    ** schema items cannot be located, set an error in pParse and return 
+    /* Find the parent table of this foreign key. Also find a unique index
+    ** on the parent key columns in the parent table. If either of these
+    ** schema items cannot be located, set an error in pParse and return
     ** early.  */
     if( pParse->disableTriggers ){
       pTo = sqlite3FindTable(db, pFKey->zTo, zDb);
@@ -74490,7 +74490,7 @@ SQLITE_PRIVATE void sqlite3FkCheck(
         aiCol[i] = -1;
       }
 #ifndef SQLITE_OMIT_AUTHORIZATION
-      /* Request permission to read the parent key columns. If the 
+      /* Request permission to read the parent key columns. If the
       ** authorization callback returns SQLITE_IGNORE, behave as if any
       ** values read from the parent table are NULL. */
       if( db->xAuth ){
@@ -74502,21 +74502,21 @@ SQLITE_PRIVATE void sqlite3FkCheck(
 #endif
     }
 
-    /* Take a shared-cache advisory read-lock on the parent table. Allocate 
-    ** a cursor to use to search the unique index on the parent key columns 
+    /* Take a shared-cache advisory read-lock on the parent table. Allocate
+    ** a cursor to use to search the unique index on the parent key columns
     ** in the parent table.  */
     sqlite3TableLock(pParse, iDb, pTo->tnum, 0, pTo->zName);
     pParse->nTab++;
 
     if( regOld!=0 ){
       /* A row is being removed from the child table. Search for the parent.
-      ** If the parent does not exist, removing the child row resolves an 
+      ** If the parent does not exist, removing the child row resolves an
       ** outstanding foreign key constraint violation. */
       fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regOld, -1,isIgnore);
     }
     if( regNew!=0 ){
       /* A row is being added to the child table. If a parent row cannot
-      ** be found, adding the child row has violated the FK constraint. */ 
+      ** be found, adding the child row has violated the FK constraint. */
       fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regNew, +1,isIgnore);
     }
 
@@ -74542,7 +74542,7 @@ SQLITE_PRIVATE void sqlite3FkCheck(
     }
     assert( aiCol || pFKey->nCol==1 );
 
-    /* Create a SrcList structure containing a single table (the table 
+    /* Create a SrcList structure containing a single table (the table
     ** the foreign key that refers to this table is attached to). This
     ** is required for the sqlite3WhereXXX() interface.  */
     pSrc = sqlite3SrcListAppend(db, 0, 0, 0);
@@ -74552,13 +74552,13 @@ SQLITE_PRIVATE void sqlite3FkCheck(
       pItem->zName = pFKey->pFrom->zName;
       pItem->pTab->nRef++;
       pItem->iCursor = pParse->nTab++;
-  
+
       if( regNew!=0 ){
         fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regNew, -1);
       }
       if( regOld!=0 ){
         /* If there is a RESTRICT action configured for the current operation
-        ** on the parent table of this FK, then throw an exception 
+        ** on the parent table of this FK, then throw an exception
         ** immediately if the FK constraint is violated, even if this is a
         ** deferred trigger. That's what RESTRICT means. To defer checking
         ** the constraint, the FK should specify NO ACTION (represented
@@ -74575,7 +74575,7 @@ SQLITE_PRIVATE void sqlite3FkCheck(
 #define COLUMN_MASK(x) (((x)>31) ? 0xffffffff : ((u32)1<<(x)))
 
 /*
-** This function is called before generating code to update or delete a 
+** This function is called before generating code to update or delete a
 ** row contained in table pTab.
 */
 SQLITE_PRIVATE u32 sqlite3FkOldmask(
@@ -74601,17 +74601,17 @@ SQLITE_PRIVATE u32 sqlite3FkOldmask(
 }
 
 /*
-** This function is called before generating code to update or delete a 
+** This function is called before generating code to update or delete a
 ** row contained in table pTab. If the operation is a DELETE, then
 ** parameter aChange is passed a NULL value. For an UPDATE, aChange points
 ** to an array of size N, where N is the number of columns in table pTab.
-** If the i'th column is not modified by the UPDATE, then the corresponding 
+** If the i'th column is not modified by the UPDATE, then the corresponding
 ** entry in the aChange[] array is set to -1. If the column is modified,
 ** the value is 0 or greater. Parameter chngRowid is set to true if the
 ** UPDATE statement modifies the rowid fields of the table.
 **
 ** If any foreign key processing will be required, this function returns
-** true. If there is no foreign key related processing, this function 
+** true. If there is no foreign key related processing, this function
 ** returns false.
 */
 SQLITE_PRIVATE int sqlite3FkRequired(
@@ -74622,8 +74622,8 @@ SQLITE_PRIVATE int sqlite3FkRequired(
 ){
   if( pParse->db->flags&SQLITE_ForeignKeys ){
     if( !aChange ){
-      /* A DELETE operation. Foreign key processing is required if the 
-      ** table in question is either the child or parent table for any 
+      /* A DELETE operation. Foreign key processing is required if the
+      ** table in question is either the child or parent table for any
       ** foreign key constraint.  */
       return (sqlite3FkReferences(pTab) || pTab->pFKey);
     }else{
@@ -74661,7 +74661,7 @@ SQLITE_PRIVATE int sqlite3FkRequired(
 }
 
 /*
-** This function is called when an UPDATE or DELETE operation is being 
+** This function is called when an UPDATE or DELETE operation is being
 ** compiled on table pTab, which is the parent table of foreign-key pFKey.
 ** If the current operation is an UPDATE, then the pChanges parameter is
 ** passed a pointer to the list of columns being modified. If it is a
@@ -74673,7 +74673,7 @@ SQLITE_PRIVATE int sqlite3FkRequired(
 ** returned (these actions require no special handling by the triggers
 ** sub-system, code for them is created by fkScanChildren()).
 **
-** For example, if pFKey is the foreign key and pTab is table "p" in 
+** For example, if pFKey is the foreign key and pTab is table "p" in
 ** the following schema:
 **
 **   CREATE TABLE p(pk PRIMARY KEY);
@@ -74686,7 +74686,7 @@ SQLITE_PRIVATE int sqlite3FkRequired(
 **   END;
 **
 ** The returned pointer is cached as part of the foreign key object. It
-** is eventually freed along with the rest of the foreign key object by 
+** is eventually freed along with the rest of the foreign key object by
 ** sqlite3FkDelete().
 */
 static Trigger *fkActionTrigger(
@@ -74740,7 +74740,7 @@ static Trigger *fkActionTrigger(
       ** that the affinity and collation sequence associated with the
       ** parent table are used for the comparison. */
       pEq = sqlite3PExpr(pParse, TK_EQ,
-          sqlite3PExpr(pParse, TK_DOT, 
+          sqlite3PExpr(pParse, TK_DOT,
             sqlite3PExpr(pParse, TK_ID, 0, 0, &tOld),
             sqlite3PExpr(pParse, TK_ID, 0, 0, &tToCol)
           , 0),
@@ -74755,22 +74755,22 @@ static Trigger *fkActionTrigger(
       */
       if( pChanges ){
         pEq = sqlite3PExpr(pParse, TK_IS,
-            sqlite3PExpr(pParse, TK_DOT, 
+            sqlite3PExpr(pParse, TK_DOT,
               sqlite3PExpr(pParse, TK_ID, 0, 0, &tOld),
               sqlite3PExpr(pParse, TK_ID, 0, 0, &tToCol),
               0),
-            sqlite3PExpr(pParse, TK_DOT, 
+            sqlite3PExpr(pParse, TK_DOT,
               sqlite3PExpr(pParse, TK_ID, 0, 0, &tNew),
               sqlite3PExpr(pParse, TK_ID, 0, 0, &tToCol),
               0),
             0);
         pWhen = sqlite3ExprAnd(db, pWhen, pEq);
       }
-  
+
       if( action!=OE_Restrict && (action!=OE_Cascade || pChanges) ){
         Expr *pNew;
         if( action==OE_Cascade ){
-          pNew = sqlite3PExpr(pParse, TK_DOT, 
+          pNew = sqlite3PExpr(pParse, TK_DOT,
             sqlite3PExpr(pParse, TK_ID, 0, 0, &tNew),
             sqlite3PExpr(pParse, TK_ID, 0, 0, &tToCol)
           , 0);
@@ -74795,7 +74795,7 @@ static Trigger *fkActionTrigger(
 
     if( action==OE_Restrict ){
       Token tFrom;
-      Expr *pRaise; 
+      Expr *pRaise;
 
       tFrom.z = zFrom;
       tFrom.n = nFrom;
@@ -74803,7 +74803,7 @@ static Trigger *fkActionTrigger(
       if( pRaise ){
         pRaise->affinity = OE_Abort;
       }
-      pSelect = sqlite3SelectNew(pParse, 
+      pSelect = sqlite3SelectNew(pParse,
           sqlite3ExprListAppend(pParse, 0, pRaise),
           sqlite3SrcListAppend(db, 0, &tFrom, 0),
           pWhere,
@@ -74820,7 +74820,7 @@ static Trigger *fkActionTrigger(
     enableLookaside = db->lookaside.bEnabled;
     db->lookaside.bEnabled = 0;
 
-    pTrigger = (Trigger *)sqlite3DbMallocZero(db, 
+    pTrigger = (Trigger *)sqlite3DbMallocZero(db,
         sizeof(Trigger) +         /* struct Trigger */
         sizeof(TriggerStep) +     /* Single step in trigger program */
         nFrom + 1                 /* Space for pStep->target.z */
@@ -74830,7 +74830,7 @@ static Trigger *fkActionTrigger(
       pStep->target.z = (char *)&pStep[1];
       pStep->target.n = nFrom;
       memcpy((char *)pStep->target.z, zFrom, nFrom);
-  
+
       pStep->pWhere = sqlite3ExprDup(db, pWhere, EXPRDUP_REDUCE);
       pStep->pExprList = sqlite3ExprListDup(db, pList, EXPRDUP_REDUCE);
       pStep->pSelect = sqlite3SelectDup(db, pSelect, EXPRDUP_REDUCE);
@@ -74854,12 +74854,12 @@ static Trigger *fkActionTrigger(
 
     switch( action ){
       case OE_Restrict:
-        pStep->op = TK_SELECT; 
+        pStep->op = TK_SELECT;
         break;
-      case OE_Cascade: 
-        if( !pChanges ){ 
-          pStep->op = TK_DELETE; 
-          break; 
+      case OE_Cascade:
+        if( !pChanges ){
+          pStep->op = TK_DELETE;
+          break;
         }
       default:
         pStep->op = TK_UPDATE;
@@ -74884,9 +74884,9 @@ SQLITE_PRIVATE void sqlite3FkActions(
   ExprList *pChanges,             /* Change-list for UPDATE, NULL for DELETE */
   int regOld                      /* Address of array containing old row */
 ){
-  /* If foreign-key support is enabled, iterate through all FKs that 
-  ** refer to table pTab. If there is an action associated with the FK 
-  ** for this operation (either update or delete), invoke the associated 
+  /* If foreign-key support is enabled, iterate through all FKs that
+  ** refer to table pTab. If there is an action associated with the FK
+  ** for this operation (either update or delete), invoke the associated
   ** trigger sub-program.  */
   if( pParse->db->flags&SQLITE_ForeignKeys ){
     FKey *pFKey;                  /* Iterator variable */
@@ -74980,7 +74980,7 @@ SQLITE_PRIVATE void sqlite3OpenTable(
 
 /*
 ** Return a pointer to the column affinity string associated with index
-** pIdx. A column affinity string has one character for each column in 
+** pIdx. A column affinity string has one character for each column in
 ** the table, according to the affinity of the column:
 **
 **  Character      Column affinity
@@ -75022,7 +75022,7 @@ SQLITE_PRIVATE const char *sqlite3IndexAffinityStr(Vdbe *v, Index *pIdx){
     pIdx->zColAff[n++] = SQLITE_AFF_NONE;
     pIdx->zColAff[n] = 0;
   }
+
   return pIdx->zColAff;
 }
 
@@ -75042,7 +75042,7 @@ SQLITE_PRIVATE const char *sqlite3IndexAffinityStr(Vdbe *v, Index *pIdx){
 */
 SQLITE_PRIVATE void sqlite3TableAffinityStr(Vdbe *v, Table *pTab){
   /* The first time a column affinity string for a particular table
-  ** is required, it is allocated and populated here. It is then 
+  ** is required, it is allocated and populated here. It is then
   ** stored as a member of the Table structure for subsequent use.
   **
   ** The column affinity string will eventually be deleted by
@@ -75073,9 +75073,9 @@ SQLITE_PRIVATE void sqlite3TableAffinityStr(Vdbe *v, Table *pTab){
 /*
 ** Return non-zero if the table pTab in database iDb or any of its indices
 ** have been opened at any point in the VDBE program beginning at location
-** iStartAddr throught the end of the program.  This is used to see if 
-** a statement of the form  "INSERT INTO <iDb, pTab> SELECT ..." can 
-** run without using temporary table for the results of the SELECT. 
+** iStartAddr throught the end of the program.  This is used to see if
+** a statement of the form  "INSERT INTO <iDb, pTab> SELECT ..." can
+** run without using temporary table for the results of the SELECT.
 */
 static int readsTable(Parse *p, int iStartAddr, int iDb, Table *pTab){
   Vdbe *v = sqlite3GetVdbe(p);
@@ -75162,7 +75162,7 @@ static int autoIncBegin(
 
 /*
 ** This routine generates code that will initialize all of the
-** register used by the autoincrement tracker.  
+** register used by the autoincrement tracker.
 */
 SQLITE_PRIVATE void sqlite3AutoincrementBegin(Parse *pParse){
   AutoincInfo *p;            /* Information about an AUTOINCREMENT */
@@ -75460,7 +75460,7 @@ SQLITE_PRIVATE void sqlite3Insert(
   assert( (pTrigger && tmask) || (pTrigger==0 && tmask==0) );
 
   /* If pTab is really a view, make sure it has been initialized.
-  ** ViewGetColumnNames() is a no-op if pTab is not a view (or virtual 
+  ** ViewGetColumnNames() is a no-op if pTab is not a view (or virtual
   ** module table).
   */
   if( sqlite3ViewGetColumnNames(pParse, pTab) ){
@@ -75468,7 +75468,7 @@ SQLITE_PRIVATE void sqlite3Insert(
   }
 
   /* Ensure that:
-  *  (a) the table is not read-only, 
+  *  (a) the table is not read-only,
   *  (b) that if it is a view then ON INSERT triggers exist
   */
   if( sqlite3IsReadOnly(pParse, pTab, tmask) ){
@@ -75566,7 +75566,7 @@ SQLITE_PRIVATE void sqlite3Insert(
     ** the destination table (template 3).
     **
     ** A temp table must be used if the table being updated is also one
-    ** of the tables being read by the SELECT statement.  Also use a 
+    ** of the tables being read by the SELECT statement.  Also use a
     ** temp table in the case of row triggers.
     */
     if( pTrigger || readsTable(pParse, addrSelect, iDb, pTab) ){
@@ -75630,7 +75630,7 @@ SQLITE_PRIVATE void sqlite3Insert(
     }
   }
   if( pColumn==0 && nColumn && nColumn!=(pTab->nCol-nHidden) ){
-    sqlite3ErrorMsg(pParse, 
+    sqlite3ErrorMsg(pParse,
        "table %S has %d columns but %d values were supplied",
        pTabList, 0, pTab->nCol-nHidden, nColumn);
     goto insert_cleanup;
@@ -75641,7 +75641,7 @@ SQLITE_PRIVATE void sqlite3Insert(
   }
 
   /* If the INSERT statement included an IDLIST term, then make sure
-  ** all elements of the IDLIST really are columns of the table and 
+  ** all elements of the IDLIST really are columns of the table and
   ** remember the column indices.
   **
   ** If the table has an INTEGER PRIMARY KEY column and that column
@@ -75685,7 +75685,7 @@ SQLITE_PRIVATE void sqlite3Insert(
   if( pColumn==0 && nColumn>0 ){
     keyColumn = pTab->iPKey;
   }
-    
+
   /* Initialize the count of rows to be inserted
   */
   if( db->flags & SQLITE_CountRows ){
@@ -75793,7 +75793,7 @@ SQLITE_PRIVATE void sqlite3Insert(
       if( pColumn && j>=pColumn->nId ){
         sqlite3ExprCode(pParse, pTab->aCol[i].pDflt, regCols+i+1);
       }else if( useTempTable ){
-        sqlite3VdbeAddOp3(v, OP_Column, srcTab, j, regCols+i+1); 
+        sqlite3VdbeAddOp3(v, OP_Column, srcTab, j, regCols+i+1);
       }else{
         assert( pSelect==0 ); /* Otherwise useTempTable is true */
         sqlite3ExprCodeAndCache(pParse, pList->a[j].pExpr, regCols+i+1);
@@ -75811,7 +75811,7 @@ SQLITE_PRIVATE void sqlite3Insert(
     }
 
     /* Fire BEFORE or INSTEAD OF triggers */
-    sqlite3CodeRowTrigger(pParse, pTrigger, TK_INSERT, 0, TRIGGER_BEFORE, 
+    sqlite3CodeRowTrigger(pParse, pTrigger, TK_INSERT, 0, TRIGGER_BEFORE,
         pTab, regCols-pTab->nCol-1, onError, endOfLoop);
 
     sqlite3ReleaseTempRange(pParse, regCols, pTab->nCol+1);
@@ -75820,7 +75820,7 @@ SQLITE_PRIVATE void sqlite3Insert(
   /* Push the record number for the new entry onto the stack.  The
   ** record number is a randomly generate integer created by NewRowid
   ** except when the table has an INTEGER PRIMARY KEY column, in which
-  ** case the record number is the same as that column. 
+  ** case the record number is the same as that column.
   */
   if( !isView ){
     if( IsVirtual(pTab) ){
@@ -75897,7 +75897,7 @@ SQLITE_PRIVATE void sqlite3Insert(
       if( j<0 || nColumn==0 || (pColumn && j>=pColumn->nId) ){
         sqlite3ExprCode(pParse, pTab->aCol[i].pDflt, iRegStore);
       }else if( useTempTable ){
-        sqlite3VdbeAddOp3(v, OP_Column, srcTab, j, iRegStore); 
+        sqlite3VdbeAddOp3(v, OP_Column, srcTab, j, iRegStore);
       }else if( pSelect ){
         sqlite3VdbeAddOp2(v, OP_SCopy, regFromSelect+j, iRegStore);
       }else{
@@ -75936,7 +75936,7 @@ SQLITE_PRIVATE void sqlite3Insert(
 
   if( pTrigger ){
     /* Code AFTER triggers */
-    sqlite3CodeRowTrigger(pParse, pTrigger, TK_INSERT, 0, TRIGGER_AFTER, 
+    sqlite3CodeRowTrigger(pParse, pTrigger, TK_INSERT, 0, TRIGGER_AFTER,
         pTab, regData-2-pTab->nCol, onError, endOfLoop);
   }
 
@@ -75971,7 +75971,7 @@ insert_end:
   }
 
   /*
-  ** Return the number of rows inserted. If this routine is 
+  ** Return the number of rows inserted. If this routine is
   ** generating code because of a call to sqlite3NestedParse(), do not
   ** invoke the callback function.
   */
@@ -76021,10 +76021,10 @@ insert_cleanup:
 ** If isUpdate is true and rowidChng is non-zero, then rowidChng contains
 ** the address of a register containing the rowid before the update takes
 ** place. isUpdate is true for UPDATEs and false for INSERTs. If isUpdate
-** is false, indicating an INSERT statement, then a non-zero rowidChng 
+** is false, indicating an INSERT statement, then a non-zero rowidChng
 ** indicates that the rowid was explicitly specified as part of the
 ** INSERT statement. If rowidChng is false, it means that  the rowid is
-** computed automatically in an insert or that the rowid value is not 
+** computed automatically in an insert or that the rowid value is not
 ** modified by an update.
 **
 ** The code generated by this routine store new index entries into
@@ -76181,7 +76181,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
     }else if( onError==OE_Default ){
       onError = OE_Abort;
     }
-    
+
     if( isUpdate ){
       j2 = sqlite3VdbeAddOp3(v, OP_Eq, regRowid, 0, rowidChng);
     }
@@ -76205,10 +76205,10 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
         ** the triggers and remove both the table and index b-tree entries.
         **
         ** Otherwise, if there are no triggers or the recursive-triggers
-        ** flag is not set, but the table has one or more indexes, call 
-        ** GenerateRowIndexDelete(). This removes the index b-tree entries 
-        ** only. The table b-tree entry will be replaced by the new entry 
-        ** when it is inserted.  
+        ** flag is not set, but the table has one or more indexes, call
+        ** GenerateRowIndexDelete(). This removes the index b-tree entries
+        ** only. The table b-tree entry will be replaced by the new entry
+        ** when it is inserted.
         **
         ** If either GenerateRowDelete() or GenerateRowIndexDelete() is called,
         ** also invoke MultiWrite() to indicate that this VDBE may require
@@ -76276,7 +76276,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
 
     /* Find out what action to take in case there is an indexing conflict */
     onError = pIdx->onError;
-    if( onError==OE_None ){ 
+    if( onError==OE_None ){
       sqlite3ReleaseTempRange(pParse, regIdx, pIdx->nColumn+1);
       continue;  /* pIdx is not a UNIQUE index */
     }
@@ -76289,7 +76289,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
       if( onError==OE_Ignore ) onError = OE_Replace;
       else if( onError==OE_Fail ) onError = OE_Abort;
     }
-    
+
     /* Check to see if the new index entry will be unique */
     regR = sqlite3GetTempReg(pParse);
     sqlite3VdbeAddOp2(v, OP_SCopy, regOldRowid, regR);
@@ -76348,7 +76348,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
     sqlite3VdbeJumpHere(v, j3);
     sqlite3ReleaseTempReg(pParse, regR);
   }
-  
+
   if( pbMayReplace ){
     *pbMayReplace = seenReplace;
   }
@@ -76845,7 +76845,7 @@ SQLITE_API int sqlite3_exec(
       rc = sqlite3_step(pStmt);
 
       /* Invoke the callback function if required */
-      if( xCallback && (SQLITE_ROW==rc || 
+      if( xCallback && (SQLITE_ROW==rc ||
           (SQLITE_DONE==rc && !callbackIsInit
                            && db->flags&SQLITE_NullCallback)) ){
         if( !callbackIsInit ){
@@ -76955,7 +76955,7 @@ exec_out:
 ** This header file defines the SQLite interface for use by
 ** shared libraries that want to be imported as extensions into
 ** an SQLite instance.  Shared libraries that intend to be loaded
-** as extensions by SQLite should #include this file instead of 
+** as extensions by SQLite should #include this file instead of
 ** sqlite3.h.
 */
 #ifndef _SQLITE3EXT_H_
@@ -77589,8 +77589,8 @@ static const sqlite3_api_routines sqlite3Apis = {
   sqlite3_memory_highwater,
   sqlite3_memory_used,
 #ifdef SQLITE_MUTEX_OMIT
-  0, 
-  0, 
+  0,
+  0,
   0,
   0,
   0,
@@ -77639,7 +77639,7 @@ static const sqlite3_api_routines sqlite3Apis = {
 **
 ** Return SQLITE_OK on success and SQLITE_ERROR if something goes wrong.
 **
-** If an error occurs and pzErrMsg is not 0, then fill *pzErrMsg with 
+** If an error occurs and pzErrMsg is not 0, then fill *pzErrMsg with
 ** error message text.  The calling function should free this memory
 ** by calling sqlite3DbFree(db, ).
 */
@@ -77680,7 +77680,7 @@ static int sqlite3LoadExtension(
     if( pzErrMsg ){
       zErrmsg = sqlite3StackAllocZero(db, nMsg);
       if( zErrmsg ){
-        sqlite3_snprintf(nMsg, zErrmsg, 
+        sqlite3_snprintf(nMsg, zErrmsg,
             "unable to open shared library [%s]", zFile);
         sqlite3OsDlError(pVfs, nMsg-1, zErrmsg);
         *pzErrMsg = sqlite3DbStrDup(0, zErrmsg);
@@ -77791,7 +77791,7 @@ static const sqlite3_api_routines sqlite3Apis = { 0 };
 */
 typedef struct sqlite3AutoExtList sqlite3AutoExtList;
 static SQLITE_WSD struct sqlite3AutoExtList {
-  int nExt;              /* Number of entries in aExt[] */          
+  int nExt;              /* Number of entries in aExt[] */
   void (**aExt)(void);   /* Pointers to the extension init functions */
 } sqlite3Autoext = { 0, 0 };
 
@@ -77932,7 +77932,7 @@ SQLITE_PRIVATE void sqlite3AutoLoadExtensions(sqlite3 *db){
 
 /*
 ** Interpret the given string as a safety level.  Return 0 for OFF,
-** 1 for ON or NORMAL and 2 for FULL.  Return 1 for an empty or 
+** 1 for ON or NORMAL and 2 for FULL.  Return 1 for an empty or
 ** unrecognized string argument.
 **
 ** Note that the values returned are one less that the values that
@@ -77981,7 +77981,7 @@ static int getLockingMode(const char *z){
 /*
 ** Interpret the given string as an auto-vacuum mode value.
 **
-** The following strings, "none", "full" and "incremental" are 
+** The following strings, "none", "full" and "incremental" are
 ** acceptable, as are their numeric equivalents: 0, 1 and 2 respectively.
 */
 static int getAutoVacuum(const char *z){
@@ -78134,7 +78134,7 @@ static int flagPragma(Parse *pParse, const char *zLeft, const char *zRight){
             db->flags &= ~mask;
           }
 
-          /* Many of the flag-pragmas modify the code generated by the SQL 
+          /* Many of the flag-pragmas modify the code generated by the SQL
           ** compiler (eg. count_changes). So add an opcode to expire all
           ** compiled SQL statements after modifying a pragma value.
           */
@@ -78160,7 +78160,7 @@ static const char *actionName(u8 action){
     case OE_SetDflt:  zName = "SET DEFAULT";     break;
     case OE_Cascade:  zName = "CASCADE";         break;
     case OE_Restrict: zName = "RESTRICT";        break;
-    default:          zName = "NO ACTION";  
+    default:          zName = "NO ACTION";
                       assert( action==OE_None ); break;
   }
   return zName;
@@ -78168,7 +78168,7 @@ static const char *actionName(u8 action){
 #endif
 
 /*
-** Process a pragma statement.  
+** Process a pragma statement.
 **
 ** Pragmas are of this form:
 **
@@ -78183,7 +78183,7 @@ static const char *actionName(u8 action){
 ** id and pId2 is any empty string.
 */
 SQLITE_PRIVATE void sqlite3Pragma(
-  Parse *pParse, 
+  Parse *pParse,
   Token *pId1,        /* First part of [database.]id field */
   Token *pId2,        /* Second part of [database.]id field, or NULL */
   Token *pValue,      /* Token for <value>, or NULL */
@@ -78207,8 +78207,8 @@ SQLITE_PRIVATE void sqlite3Pragma(
   if( iDb<0 ) return;
   pDb = &db->aDb[iDb];
 
-  /* If the temp database has been explicitly named as part of the 
-  ** pragma, make sure it is open. 
+  /* If the temp database has been explicitly named as part of the
+  ** pragma, make sure it is open.
   */
   if( iDb==1 && sqlite3OpenTempDatabase(pParse) ){
     return;
@@ -78227,7 +78227,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
   if( sqlite3AuthCheck(pParse, SQLITE_PRAGMA, zLeft, zRight, zDb) ){
     goto pragma_out;
   }
+
 #ifndef SQLITE_OMIT_PAGER_PRAGMAS
   /*
   **  PRAGMA [database.]default_cache_size
@@ -78313,7 +78313,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
   **  PRAGMA [database.]max_page_count=N
   **
   ** The first form reports the current setting for the
-  ** maximum number of pages in the database file.  The 
+  ** maximum number of pages in the database file.  The
   ** second form attempts to change this setting.  Both
   ** forms return the current setting.
   */
@@ -78474,7 +78474,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
               || eMode==PAGER_JOURNALMODE_MEMORY );
     sqlite3VdbeSetNumCols(v, 1);
     sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "journal_mode", SQLITE_STATIC);
-    sqlite3VdbeAddOp4(v, OP_String8, 0, 1, 0, 
+    sqlite3VdbeAddOp4(v, OP_String8, 0, 1, 0,
            azModeName[eMode], P4_STATIC);
     sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 1);
   }else
@@ -78532,7 +78532,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
         */
         int rc = sqlite3BtreeSetAutoVacuum(pBt, eAuto);
         if( rc==SQLITE_OK && (eAuto==1 || eAuto==2) ){
-          /* When setting the auto_vacuum mode to either "full" or 
+          /* When setting the auto_vacuum mode to either "full" or
           ** "incremental", write the value of meta[6] in the database
           ** file. Before writing to meta[6], check that meta[3] indicates
           ** that this really is an auto-vacuum capable database.
@@ -78643,7 +78643,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
     if( !zRight ){
       if( sqlite3_temp_directory ){
         sqlite3VdbeSetNumCols(v, 1);
-        sqlite3VdbeSetColName(v, 0, COLNAME_NAME, 
+        sqlite3VdbeSetColName(v, 0, COLNAME_NAME,
             "temp_store_directory", SQLITE_STATIC);
         sqlite3VdbeAddOp4(v, OP_String8, 0, 1, 0, sqlite3_temp_directory, 0);
         sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 1);
@@ -78696,12 +78696,12 @@ SQLITE_PRIVATE void sqlite3Pragma(
       Pager *pPager = sqlite3BtreePager(pDb->pBt);
       char *proxy_file_path = NULL;
       sqlite3_file *pFile = sqlite3PagerFile(pPager);
-      sqlite3OsFileControl(pFile, SQLITE_GET_LOCKPROXYFILE, 
+      sqlite3OsFileControl(pFile, SQLITE_GET_LOCKPROXYFILE,
                            &proxy_file_path);
-      
+
       if( proxy_file_path ){
         sqlite3VdbeSetNumCols(v, 1);
-        sqlite3VdbeSetColName(v, 0, COLNAME_NAME, 
+        sqlite3VdbeSetColName(v, 0, COLNAME_NAME,
                               "lock_proxy_file", SQLITE_STATIC);
         sqlite3VdbeAddOp4(v, OP_String8, 0, 1, 0, proxy_file_path, 0);
         sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 1);
@@ -78711,10 +78711,10 @@ SQLITE_PRIVATE void sqlite3Pragma(
       sqlite3_file *pFile = sqlite3PagerFile(pPager);
       int res;
       if( zRight[0] ){
-        res=sqlite3OsFileControl(pFile, SQLITE_SET_LOCKPROXYFILE, 
+        res=sqlite3OsFileControl(pFile, SQLITE_SET_LOCKPROXYFILE,
                                      zRight);
       } else {
-        res=sqlite3OsFileControl(pFile, SQLITE_SET_LOCKPROXYFILE, 
+        res=sqlite3OsFileControl(pFile, SQLITE_SET_LOCKPROXYFILE,
                                      NULL);
       }
       if( res!=SQLITE_OK ){
@@ -78723,8 +78723,8 @@ SQLITE_PRIVATE void sqlite3Pragma(
       }
     }
   }else
-#endif /* SQLITE_ENABLE_LOCKING_STYLE */      
-    
+#endif /* SQLITE_ENABLE_LOCKING_STYLE */
+
   /*
   **   PRAGMA [database.]synchronous
   **   PRAGMA [database.]synchronous=OFF|ON|NORMAL|FULL
@@ -78740,7 +78740,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
       returnSingleInt(pParse, "synchronous", pDb->safety_level-1);
     }else{
       if( !db->autoCommit ){
-        sqlite3ErrorMsg(pParse, 
+        sqlite3ErrorMsg(pParse,
             "Safety level may not be changed inside a transaction");
       }else{
         pDb->safety_level = getSafetyLevel(zRight)+1;
@@ -78840,7 +78840,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
       v = sqlite3GetVdbe(pParse);
       pIdx = pTab->pIndex;
       if( pIdx ){
-        int i = 0; 
+        int i = 0;
         sqlite3VdbeSetNumCols(v, 3);
         pParse->nMem = 3;
         sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "seq", SQLITE_STATIC);
@@ -78903,7 +78903,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
       v = sqlite3GetVdbe(pParse);
       pFK = pTab->pFKey;
       if( pFK ){
-        int i = 0; 
+        int i = 0;
         sqlite3VdbeSetNumCols(v, 8);
         pParse->nMem = 8;
         sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "id", SQLITE_STATIC);
@@ -78965,12 +78965,12 @@ SQLITE_PRIVATE void sqlite3Pragma(
 #endif
 
 #ifndef SQLITE_OMIT_INTEGRITY_CHECK
-  /* Pragma "quick_check" is an experimental reduced version of 
+  /* Pragma "quick_check" is an experimental reduced version of
   ** integrity_check designed to detect most database corruption
   ** without most of the overhead of a full integrity-check.
   */
   if( sqlite3StrICmp(zLeft, "integrity_check")==0
-   || sqlite3StrICmp(zLeft, "quick_check")==0 
+   || sqlite3StrICmp(zLeft, "quick_check")==0
   ){
     int i, j, addr, mxErr;
 
@@ -79114,11 +79114,11 @@ SQLITE_PRIVATE void sqlite3Pragma(
           sqlite3VdbeChangeP1(v, addr+3, j+2);
           sqlite3VdbeChangeP2(v, addr+3, addr+2);
           sqlite3VdbeJumpHere(v, addr+4);
-          sqlite3VdbeChangeP4(v, addr+6, 
+          sqlite3VdbeChangeP4(v, addr+6,
                      "wrong # of entries in index ", P4_STATIC);
           sqlite3VdbeChangeP4(v, addr+7, pIdx->zName, P4_STATIC);
         }
-      } 
+      }
     }
     addr = sqlite3VdbeAddOpList(v, ArraySize(endCode), endCode);
     sqlite3VdbeChangeP2(v, addr, -mxErr);
@@ -79140,7 +79140,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
   ** encoding that will be used for the main database file if a new file
   ** is created. If an existing main database file is opened, then the
   ** default text encoding for the existing database is used.
-  ** 
+  **
   ** In all cases new databases created using the ATTACH command are
   ** created to use the same default text encoding as the main database. If
   ** the main database has not been initialized and/or created when ATTACH
@@ -79182,9 +79182,9 @@ SQLITE_PRIVATE void sqlite3Pragma(
       ** will be overwritten when the schema is next loaded. If it does not
       ** already exists, it will be created to use the new encoding value.
       */
-      if( 
-        !(DbHasProperty(db, 0, DB_SchemaLoaded)) || 
-        DbHasProperty(db, 0, DB_Empty) 
+      if(
+        !(DbHasProperty(db, 0, DB_SchemaLoaded)) ||
+        DbHasProperty(db, 0, DB_Empty)
       ){
         for(pEnc=&encnames[0]; pEnc->zName; pEnc++){
           if( 0==sqlite3StrICmp(zRight, pEnc->zName) ){
@@ -79226,9 +79226,9 @@ SQLITE_PRIVATE void sqlite3Pragma(
   ** The user-version is not used internally by SQLite. It may be used by
   ** applications for any purpose.
   */
-  if( sqlite3StrICmp(zLeft, "schema_version")==0 
-   || sqlite3StrICmp(zLeft, "user_version")==0 
-   || sqlite3StrICmp(zLeft, "freelist_count")==0 
+  if( sqlite3StrICmp(zLeft, "schema_version")==0
+   || sqlite3StrICmp(zLeft, "user_version")==0
+   || sqlite3StrICmp(zLeft, "freelist_count")==0
   ){
     int iCookie;   /* Cookie index. 1 for schema-cookie, 6 for user-cookie. */
     sqlite3VdbeUsesBtree(v, iDb);
@@ -79316,7 +79316,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
       pBt = db->aDb[i].pBt;
       if( pBt==0 || (pPager = sqlite3BtreePager(pBt))==0 ){
         zState = "closed";
-      }else if( sqlite3_file_control(db, i ? db->aDb[i].zName : 0, 
+      }else if( sqlite3_file_control(db, i ? db->aDb[i].zName : 0,
                                      SQLITE_FCNTL_LOCKSTATE, &j)==SQLITE_OK ){
          zState = azLockName[j];
       }
@@ -79365,7 +79365,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
   }else
 #endif
 
+
   {/* Empty ELSE clause */}
 
   /*
@@ -79418,7 +79418,7 @@ static void corruptSchema(
     sqlite3SetString(pData->pzErrMsg, db,
       "malformed database schema (%s)", zObj);
     if( zExtra ){
-      *pData->pzErrMsg = sqlite3MAppendf(db, *pData->pzErrMsg, 
+      *pData->pzErrMsg = sqlite3MAppendf(db, *pData->pzErrMsg,
                                  "%s - %s", *pData->pzErrMsg, zExtra);
     }
   }
@@ -79532,7 +79532,7 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
   /*
   ** The master database table has a structure like this
   */
-  static const char master_schema[] = 
+  static const char master_schema[] =
      "CREATE TABLE sqlite_master(\n"
      "  type text,\n"
      "  name text,\n"
@@ -79542,7 +79542,7 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
      ")"
   ;
 #ifndef SQLITE_OMIT_TEMPDB
-  static const char temp_master_schema[] = 
+  static const char temp_master_schema[] =
      "CREATE TEMP TABLE sqlite_temp_master(\n"
      "  type text,\n"
      "  name text,\n"
@@ -79601,7 +79601,7 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
   }
 
   /* If there is not already a read-only (or read-write) transaction opened
-  ** on the b-tree database, open one now. If a transaction is opened, it 
+  ** on the b-tree database, open one now. If a transaction is opened, it
   ** will be closed before this function returns.  */
   sqlite3BtreeEnter(pDb->pBt);
   if( !sqlite3BtreeIsInReadTrans(pDb->pBt) ){
@@ -79700,7 +79700,7 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
   assert( db->init.busy );
   {
     char *zSql;
-    zSql = sqlite3MPrintf(db, 
+    zSql = sqlite3MPrintf(db,
         "SELECT name, rootpage, sql FROM '%q'.%s ORDER BY rowid",
         db->aDb[iDb].zName, zMasterName);
 #ifndef SQLITE_OMIT_AUTHORIZATION
@@ -79728,7 +79728,7 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
   }
   if( rc==SQLITE_OK || (db->flags&SQLITE_RecoveryMode)){
     /* Black magic: If the SQLITE_RecoveryMode flag is set, then consider
-    ** the schema loaded, even if errors occurred. In this situation the 
+    ** the schema loaded, even if errors occurred. In this situation the
     ** current sqlite3_prepare() operation will fail, but the following one
     ** will attempt to compile the supplied statement against whatever subset
     ** of the schema was loaded before the error occurred. The primary
@@ -79769,7 +79769,7 @@ error_out:
 SQLITE_PRIVATE int sqlite3Init(sqlite3 *db, char **pzErrMsg){
   int i, rc;
   int commit_internal = !(db->flags&SQLITE_InternChanges);
-  
+
   assert( sqlite3_mutex_held(db->mutex) );
   rc = SQLITE_OK;
   db->init.busy = 1;
@@ -79800,7 +79800,7 @@ SQLITE_PRIVATE int sqlite3Init(sqlite3 *db, char **pzErrMsg){
     sqlite3CommitInternalChanges(db);
   }
 
-  return rc; 
+  return rc;
 }
 
 /*
@@ -79841,7 +79841,7 @@ static void schemaIsValid(Parse *pParse){
     if( pBt==0 ) continue;
 
     /* If there is not already a read-only (or read-write) transaction opened
-    ** on the b-tree database, open one now. If a transaction is opened, it 
+    ** on the b-tree database, open one now. If a transaction is opened, it
     ** will be closed immediately after reading the meta-value. */
     if( !sqlite3BtreeIsInReadTrans(pBt) ){
       rc = sqlite3BtreeBeginTrans(pBt, 0);
@@ -79852,7 +79852,7 @@ static void schemaIsValid(Parse *pParse){
       openedTransaction = 1;
     }
 
-    /* Read the schema cookie from the database. If it does not match the 
+    /* Read the schema cookie from the database. If it does not match the
     ** value stored as part of the in-memory schema representation,
     ** set Parse.rc to SQLITE_SCHEMA. */
     sqlite3BtreeGetMeta(pBt, BTREE_SCHEMA_VERSION, (u32 *)&cookie);
@@ -79877,13 +79877,13 @@ static void schemaIsValid(Parse *pParse){
 SQLITE_PRIVATE int sqlite3SchemaToIndex(sqlite3 *db, Schema *pSchema){
   int i = -1000000;
 
-  /* If pSchema is NULL, then return -1000000. This happens when code in 
+  /* If pSchema is NULL, then return -1000000. This happens when code in
   ** expr.c is trying to resolve a reference to a transient table (i.e. one
-  ** created by a sub-select). In this case the return value of this 
+  ** created by a sub-select). In this case the return value of this
   ** function should never be used.
   **
   ** We return -1000000 instead of the more usual -1 simply because using
-  ** -1000000 as the incorrect index into db->aDb[] is much 
+  ** -1000000 as the incorrect index into db->aDb[] is much
   ** more likely to cause a segfault than -1 (of course there are assert()
   ** statements too, but it never hurts to play the odds).
   */
@@ -79942,8 +79942,8 @@ static int sqlite3Prepare(
   ** This thread is currently holding mutexes on all Btrees (because
   ** of the sqlite3BtreeEnterAll() in sqlite3LockAndPrepare()) so it
   ** is not possible for another thread to start a new schema change
-  ** while this routine is running.  Hence, we do not need to hold 
-  ** locks on the schema, we just need to make sure nobody else is 
+  ** while this routine is running.  Hence, we do not need to hold
+  ** locks on the schema, we just need to make sure nobody else is
   ** holding them.
   **
   ** Note that setting READ_UNCOMMITTED overrides most lock detection,
@@ -80167,7 +80167,7 @@ SQLITE_API int sqlite3_prepare_v2(
 ** Compile the UTF-16 encoded SQL statement zSql into a statement handle.
 */
 static int sqlite3Prepare16(
-  sqlite3 *db,              /* Database handle. */ 
+  sqlite3 *db,              /* Database handle. */
   const void *zSql,         /* UTF-8 encoded SQL statement. */
   int nBytes,               /* Length of zSql in bytes. */
   int saveSqlFlag,          /* True to save SQL text into the sqlite3_stmt */
@@ -80202,7 +80202,7 @@ static int sqlite3Prepare16(
     int chars_parsed = sqlite3Utf8CharLen(zSql8, (int)(zTail8-zSql8));
     *pzTail = (u8 *)zSql + sqlite3Utf16ByteLen(zSql, chars_parsed);
   }
-  sqlite3DbFree(db, zSql8); 
+  sqlite3DbFree(db, zSql8);
   rc = sqlite3ApiExit(db, rc);
   sqlite3_mutex_leave(db->mutex);
   return rc;
@@ -80217,7 +80217,7 @@ static int sqlite3Prepare16(
 ** occurs.
 */
 SQLITE_API int sqlite3_prepare16(
-  sqlite3 *db,              /* Database handle. */ 
+  sqlite3 *db,              /* Database handle. */
   const void *zSql,         /* UTF-8 encoded SQL statement. */
   int nBytes,               /* Length of zSql in bytes. */
   sqlite3_stmt **ppStmt,    /* OUT: A pointer to the prepared statement */
@@ -80229,7 +80229,7 @@ SQLITE_API int sqlite3_prepare16(
   return rc;
 }
 SQLITE_API int sqlite3_prepare16_v2(
-  sqlite3 *db,              /* Database handle. */ 
+  sqlite3 *db,              /* Database handle. */
   const void *zSql,         /* UTF-8 encoded SQL statement. */
   int nBytes,               /* Length of zSql in bytes. */
   sqlite3_stmt **ppStmt,    /* OUT: A pointer to the prepared statement */
@@ -80392,7 +80392,7 @@ SQLITE_PRIVATE int sqlite3JoinType(Parse *pParse, Token *pA, Token *pB, Token *p
   for(i=0; i<3 && apAll[i]; i++){
     p = apAll[i];
     for(j=0; j<ArraySize(aKeyword); j++){
-      if( p->n==aKeyword[j].nChar 
+      if( p->n==aKeyword[j].nChar
           && sqlite3StrNICmp((char*)p->z, &zKeyText[aKeyword[j].i], p->n)==0 ){
         jointype |= aKeyword[j].code;
         break;
@@ -80414,9 +80414,9 @@ SQLITE_PRIVATE int sqlite3JoinType(Parse *pParse, Token *pA, Token *pB, Token *p
     sqlite3ErrorMsg(pParse, "unknown or unsupported join type: "
        "%T %T%s%T", pA, pB, zSp, pC);
     jointype = JT_INNER;
-  }else if( (jointype & JT_OUTER)!=0 
+  }else if( (jointype & JT_OUTER)!=0
          && (jointype & (JT_LEFT|JT_RIGHT))!=JT_LEFT ){
-    sqlite3ErrorMsg(pParse, 
+    sqlite3ErrorMsg(pParse,
       "RIGHT and FULL OUTER JOINs are not currently supported");
     jointype = JT_INNER;
   }
@@ -80437,7 +80437,7 @@ static int columnIndex(Table *pTab, const char *zCol){
 
 /*
 ** Search the first N tables in pSrc, from left to right, looking for a
-** table that has a column named zCol.  
+** table that has a column named zCol.
 **
 ** When found, set *piTab and *piCol to the table index and column index
 ** of the matching column and return TRUE.
@@ -80475,7 +80475,7 @@ static int tableAndColumnIndex(
 **
 **    (tab1.col1 = tab2.col2)
 **
-** where tab1 is the iSrc'th table in SrcList pSrc and tab2 is the 
+** where tab1 is the iSrc'th table in SrcList pSrc and tab2 is the
 ** (iSrc+1)'th. Column col1 is column iColLeft of tab1, and col2 is
 ** column iColRight of tab2.
 */
@@ -80546,7 +80546,7 @@ static void setJoinExpr(Expr *p, int iTable){
     p->iRightJoinTable = (i16)iTable;
     setJoinExpr(p->pLeft, iTable);
     p = p->pRight;
-  } 
+  }
 }
 
 /*
@@ -80620,7 +80620,7 @@ static int sqliteProcessJoin(Parse *pParse, Select *p){
     }
 
     /* Create extra terms on the WHERE clause for each column named
-    ** in the USING clause.  Example: If the two tables to be joined are 
+    ** in the USING clause.  Example: If the two tables to be joined are
     ** A and B and the USING clause names X, Y, and Z, then add this
     ** to the WHERE clause:    A.X=B.X AND A.Y=B.Y AND A.Z=B.Z
     ** Report an error if any column mentioned in the USING clause is
@@ -80806,7 +80806,7 @@ static void selectInnerLoop(
     pDest->iMem = pParse->nMem+1;
     pDest->nMem = nResultCol;
     pParse->nMem += nResultCol;
-  }else{ 
+  }else{
     assert( pDest->nMem==nResultCol );
   }
   regResult = pDest->iMem;
@@ -81085,7 +81085,7 @@ static void generateSortTail(
 #endif
     default: {
       int i;
-      assert( eDest==SRT_Output || eDest==SRT_Coroutine ); 
+      assert( eDest==SRT_Output || eDest==SRT_Coroutine );
       testcase( eDest==SRT_Output );
       testcase( eDest==SRT_Coroutine );
       for(i=0; i<nColumn; i++){
@@ -81129,18 +81129,18 @@ static void generateSortTail(
 ** original CREATE TABLE statement if the expression is a column. The
 ** declaration type for a ROWID field is INTEGER. Exactly when an expression
 ** is considered a column can be complex in the presence of subqueries. The
-** result-set expression in all of the following SELECT statements is 
+** result-set expression in all of the following SELECT statements is
 ** considered a column by this function.
 **
 **   SELECT col FROM tbl;
 **   SELECT (SELECT col FROM tbl;
 **   SELECT (SELECT col FROM tbl);
 **   SELECT abc FROM (SELECT col AS abc FROM tbl);
-** 
+**
 ** The declaration type for any expression other than a column is NULL.
 */
 static const char *columnType(
-  NameContext *pNC, 
+  NameContext *pNC,
   Expr *pExpr,
   const char **pzOriginDb,
   const char **pzOriginTab,
@@ -81179,19 +81179,19 @@ static const char *columnType(
       if( pTab==0 ){
         /* At one time, code such as "SELECT new.x" within a trigger would
         ** cause this condition to run.  Since then, we have restructured how
-        ** trigger code is generated and so this condition is no longer 
+        ** trigger code is generated and so this condition is no longer
         ** possible. However, it can still be true for statements like
         ** the following:
         **
         **   CREATE TABLE t1(col INTEGER);
         **   SELECT (SELECT t1.col) FROM FROM t1;
         **
-        ** when columnType() is called on the expression "t1.col" in the 
+        ** when columnType() is called on the expression "t1.col" in the
         ** sub-select. In this case, set the column type to NULL, even
         ** though it should really be "INTEGER".
         **
         ** This is not a problem, as the column type of "t1.col" is never
-        ** used. When columnType() is called on the expression 
+        ** used. When columnType() is called on the expression
         ** "(SELECT t1.col)", the correct type is returned (see the TK_SELECT
         ** branch below.  */
         break;
@@ -81205,7 +81205,7 @@ static const char *columnType(
         */
         if( iCol>=0 && ALWAYS(iCol<pS->pEList->nExpr) ){
           /* If iCol is less than zero, then the expression requests the
-          ** rowid of the sub-select or view. This expression is legal (see 
+          ** rowid of the sub-select or view. This expression is legal (see
           ** test case misc2.2.2) - it always evaluates to NULL.
           */
           NameContext sNC;
@@ -81213,7 +81213,7 @@ static const char *columnType(
           sNC.pSrcList = pS->pSrc;
           sNC.pNext = pNC;
           sNC.pParse = pNC->pParse;
-          zType = columnType(&sNC, p, &zOriginDb, &zOriginTab, &zOriginCol); 
+          zType = columnType(&sNC, p, &zOriginDb, &zOriginTab, &zOriginCol);
         }
       }else if( ALWAYS(pTab->pSchema) ){
         /* A real table */
@@ -81248,12 +81248,12 @@ static const char *columnType(
       sNC.pSrcList = pS->pSrc;
       sNC.pNext = pNC;
       sNC.pParse = pNC->pParse;
-      zType = columnType(&sNC, p, &zOriginDb, &zOriginTab, &zOriginCol); 
+      zType = columnType(&sNC, p, &zOriginDb, &zOriginTab, &zOriginCol);
       break;
     }
 #endif
   }
-  
+
   if( pzOriginDb ){
     assert( pzOriginTab && pzOriginCol );
     *pzOriginDb = zOriginDb;
@@ -81287,7 +81287,7 @@ static void generateColumnTypes(
     const char *zOrigCol = 0;
     zType = columnType(&sNC, p, &zOrigDb, &zOrigTab, &zOrigCol);
 
-    /* The vdbe must make its own copy of the column-type and other 
+    /* The vdbe must make its own copy of the column-type and other
     ** column specific strings, in case the schema is reset before this
     ** virtual machine is deleted.
     */
@@ -81353,7 +81353,7 @@ static void generateColumnNames(
         zCol = pTab->aCol[iCol].zName;
       }
       if( !shortNames && !fullNames ){
-        sqlite3VdbeSetColName(v, i, COLNAME_NAME, 
+        sqlite3VdbeSetColName(v, i, COLNAME_NAME,
             sqlite3DbStrDup(db, pEList->a[i].zSpan), SQLITE_DYNAMIC);
       }else if( fullNames ){
         char *zName = 0;
@@ -81363,7 +81363,7 @@ static void generateColumnNames(
         sqlite3VdbeSetColName(v, i, COLNAME_NAME, zCol, SQLITE_TRANSIENT);
       }
     }else{
-      sqlite3VdbeSetColName(v, i, COLNAME_NAME, 
+      sqlite3VdbeSetColName(v, i, COLNAME_NAME,
           sqlite3DbStrDup(db, pEList->a[i].zSpan), SQLITE_DYNAMIC);
     }
   }
@@ -81482,7 +81482,7 @@ static int selectColumnsFromExprList(
 /*
 ** Add type and collation information to a column list based on
 ** a SELECT statement.
-** 
+**
 ** The column list presumably came from selectColumnNamesFromExprList().
 ** The column list has only names, not types or collations.  This
 ** routine goes through and adds the types and collations.
@@ -81581,9 +81581,9 @@ SQLITE_PRIVATE Vdbe *sqlite3GetVdbe(Parse *pParse){
 ** Compute the iLimit and iOffset fields of the SELECT based on the
 ** pLimit and pOffset expressions.  pLimit and pOffset hold the expressions
 ** that appear in the original SQL statement after the LIMIT and OFFSET
-** keywords.  Or NULL if those keywords are omitted. iLimit and iOffset 
-** are the integer memory register numbers for counters used to compute 
-** the limit and offset.  If there is no limit and/or offset, then 
+** keywords.  Or NULL if those keywords are omitted. iLimit and iOffset
+** are the integer memory register numbers for counters used to compute
+** the limit and offset.  If there is no limit and/or offset, then
 ** iLimit and iOffset are negative.
 **
 ** This routine changes the values of iLimit and iOffset only if
@@ -81602,7 +81602,7 @@ static void computeLimitRegisters(Parse *pParse, Select *p, int iBreak){
   int addr1, n;
   if( p->iLimit ) return;
 
-  /* 
+  /*
   ** "LIMIT -1" always shows all rows.  There is some
   ** contraversy about what the correct behavior should be.
   ** The current implementation interprets "LIMIT 0" to mean
@@ -81684,7 +81684,7 @@ static int multiSelectOrderBy(
 **
 ** "p" points to the right-most of the two queries.  the query on the
 ** left is p->pPrior.  The left query could also be a compound query
-** in which case this routine will be called recursively. 
+** in which case this routine will be called recursively.
 **
 ** The results of the total query are to be written into a destination
 ** of type eDest with parameter iParm.
@@ -81974,7 +81974,7 @@ static int multiSelect(
     }
   }
 
-  /* Compute collating sequences used by 
+  /* Compute collating sequences used by
   ** temporary tables needed to implement the compound select.
   ** Attach the KeyInfo structure to all temporary tables.
   **
@@ -82072,7 +82072,7 @@ static int generateOutputSubroutine(
   addr = sqlite3VdbeCurrentAddr(v);
   iContinue = sqlite3VdbeMakeLabel(v);
 
-  /* Suppress duplicates for UNION, EXCEPT, and INTERSECT 
+  /* Suppress duplicates for UNION, EXCEPT, and INTERSECT
   */
   if( regPrev ){
     int j1, j2;
@@ -82116,7 +82116,7 @@ static int generateOutputSubroutine(
     case SRT_Set: {
       int r1;
       assert( pIn->nMem==1 );
-      p->affinity = 
+      p->affinity =
          sqlite3CompareAffinity(p->pEList->a[0].pExpr, pDest->affinity);
       r1 = sqlite3GetTempReg(pParse);
       sqlite3VdbeAddOp4(v, OP_MakeRecord, pIn->iMem, 1, r1, &p->affinity, 1);
@@ -82165,7 +82165,7 @@ static int generateOutputSubroutine(
     ** SRT_Output.  This routine is never called with any other
     ** destination other than the ones handled above or SRT_Output.
     **
-    ** For SRT_Output, results are stored in a sequence of registers.  
+    ** For SRT_Output, results are stored in a sequence of registers.
     ** Then the OP_ResultRow opcode is used to cause sqlite3_step() to
     ** return the next row of result.
     */
@@ -82223,7 +82223,7 @@ static int generateOutputSubroutine(
 **
 **    EofB:    Called when data is exhausted from selectB.
 **
-** The implementation of the latter five subroutines depend on which 
+** The implementation of the latter five subroutines depend on which
 ** <operator> is used:
 **
 **
@@ -82329,7 +82329,7 @@ static int multiSelectOrderBy(
 
   /* Patch up the ORDER BY clause
   */
-  op = p->op;  
+  op = p->op;
   pPrior = p->pPrior;
   assert( pPrior->pOrderBy==0 );
   pOrderBy = p->pOrderBy;
@@ -82424,7 +82424,7 @@ static int multiSelectOrderBy(
       }
     }
   }
+
   /* Separate the left and the right query from one another
   */
   p->pPrior = 0;
@@ -82476,7 +82476,7 @@ static int multiSelectOrderBy(
   sqlite3VdbeAddOp1(v, OP_Yield, regAddrA);
   VdbeNoopComment((v, "End coroutine for left SELECT"));
 
-  /* Generate a coroutine to evaluate the SELECT statement on 
+  /* Generate a coroutine to evaluate the SELECT statement on
   ** the right - the "B" select
   */
   addrSelectB = sqlite3VdbeCurrentAddr(v);
@@ -82484,7 +82484,7 @@ static int multiSelectOrderBy(
   savedLimit = p->iLimit;
   savedOffset = p->iOffset;
   p->iLimit = regLimitB;
-  p->iOffset = 0;  
+  p->iOffset = 0;
   sqlite3Select(pParse, p, &destB);
   p->iLimit = savedLimit;
   p->iOffset = savedOffset;
@@ -82499,7 +82499,7 @@ static int multiSelectOrderBy(
   addrOutA = generateOutputSubroutine(pParse,
                  p, &destA, pDest, regOutA,
                  regPrev, pKeyDup, P4_KEYINFO_HANDOFF, labelEnd);
-  
+
   /* Generate a subroutine that outputs the current row of the B
   ** select as the next output row of the compound select.
   */
@@ -82516,7 +82516,7 @@ static int multiSelectOrderBy(
   VdbeNoopComment((v, "eof-A subroutine"));
   if( op==TK_EXCEPT || op==TK_INTERSECT ){
     addrEofA = sqlite3VdbeAddOp2(v, OP_Goto, 0, labelEnd);
-  }else{  
+  }else{
     addrEofA = sqlite3VdbeAddOp2(v, OP_If, regEofB, labelEnd);
     sqlite3VdbeAddOp2(v, OP_Gosub, regOutB, addrOutB);
     sqlite3VdbeAddOp1(v, OP_Yield, regAddrB);
@@ -82528,7 +82528,7 @@ static int multiSelectOrderBy(
   */
   if( op==TK_INTERSECT ){
     addrEofB = addrEofA;
-  }else{  
+  }else{
     VdbeNoopComment((v, "eof-B subroutine"));
     addrEofB = sqlite3VdbeAddOp2(v, OP_If, regEofA, labelEnd);
     sqlite3VdbeAddOp2(v, OP_Gosub, regOutA, addrOutA);
@@ -82627,13 +82627,13 @@ static void substSelect(sqlite3*, Select *, int, ExprList *);
 /*
 ** Scan through the expression pExpr.  Replace every reference to
 ** a column in table number iTable with a copy of the iColumn-th
-** entry in pEList.  (But leave references to the ROWID column 
+** entry in pEList.  (But leave references to the ROWID column
 ** unchanged.)
 **
 ** This routine is part of the flattening procedure.  A subquery
 ** whose result set is defined by pEList appears as entry in the
 ** FROM clause of a SELECT such that the VDBE cursor assigned to that
-** FORM clause entry is iTable.  This routine make the necessary 
+** FORM clause entry is iTable.  This routine make the necessary
 ** changes to pExpr so that it refers directly to the source table
 ** of the subquery rather the result set of the subquery.
 */
@@ -82731,7 +82731,7 @@ static void substSelect(
 **     SELECT x+y AS a FROM t1 WHERE z<100 AND a>5
 **
 ** The code generated for this simpification gives the same result
-** but only has to scan the data once.  And because indices might 
+** but only has to scan the data once.  And because indices might
 ** exist on the table t1, a complete scan of the data might be
 ** avoided.
 **
@@ -82777,10 +82777,10 @@ static void substSelect(
 **
 **  (16)  The outer query is not an aggregate or the subquery does
 **        not contain ORDER BY.  (Ticket #2942)  This used to not matter
-**        until we introduced the group_concat() function.  
+**        until we introduced the group_concat() function.
 **
-**  (17)  The sub-query is not a compound select, or it is a UNION ALL 
-**        compound clause made up entirely of non-aggregate queries, and 
+**  (17)  The sub-query is not a compound select, or it is a UNION ALL
+**        compound clause made up entirely of non-aggregate queries, and
 **        the parent query:
 **
 **          * is not itself part of a compound select,
@@ -82792,7 +82792,7 @@ static void substSelect(
 **        LIMIT and OFFSET clauses.
 **
 **  (18)  If the sub-query is a compound select, then all terms of the
-**        ORDER by clause of the parent must be simple references to 
+**        ORDER by clause of the parent must be simple references to
 **        columns of the sub-query.
 **
 **  (19)  The subquery does not use LIMIT or the outer query does not
@@ -82860,9 +82860,9 @@ static int flattenSubquery(
     return 0;                                            /* Restriction (15) */
   }
   if( pSubSrc->nSrc==0 ) return 0;                       /* Restriction (7)  */
-  if( ((pSub->selFlags & SF_Distinct)!=0 || pSub->pLimit) 
+  if( ((pSub->selFlags & SF_Distinct)!=0 || pSub->pLimit)
          && (pSrc->nSrc>1 || isAgg) ){          /* Restrictions (4)(5)(8)(9) */
-     return 0;       
+     return 0;
   }
   if( (p->selFlags & SF_Distinct)!=0 && subqueryIsAgg ){
      return 0;         /* Restriction (6)  */
@@ -82874,7 +82874,7 @@ static int flattenSubquery(
   if( pSub->pLimit && p->pWhere ) return 0;              /* Restriction (19) */
 
   /* OBSOLETE COMMENT 1:
-  ** Restriction 3:  If the subquery is a join, make sure the subquery is 
+  ** Restriction 3:  If the subquery is a join, make sure the subquery is
   ** not used as the right operand of an outer join.  Examples of why this
   ** is not allowed:
   **
@@ -82925,7 +82925,7 @@ static int flattenSubquery(
       testcase( (pSub1->selFlags & (SF_Distinct|SF_Aggregate))==SF_Distinct );
       testcase( (pSub1->selFlags & (SF_Distinct|SF_Aggregate))==SF_Aggregate );
       if( (pSub1->selFlags & (SF_Distinct|SF_Aggregate))!=0
-       || (pSub1->pPrior && pSub1->op!=TK_ALL) 
+       || (pSub1->pPrior && pSub1->op!=TK_ALL)
        || NEVER(pSub1->pSrc==0) || pSub1->pSrc->nSrc!=1
       ){
         return 0;
@@ -82949,13 +82949,13 @@ static int flattenSubquery(
   pParse->zAuthContext = zSavedAuthContext;
 
   /* If the sub-query is a compound SELECT statement, then (by restrictions
-  ** 17 and 18 above) it must be a UNION ALL and the parent query must 
+  ** 17 and 18 above) it must be a UNION ALL and the parent query must
   ** be of the form:
   **
-  **     SELECT <expr-list> FROM (<sub-query>) <where-clause> 
+  **     SELECT <expr-list> FROM (<sub-query>) <where-clause>
   **
   ** followed by any ORDER BY, LIMIT and/or OFFSET clauses. This block
-  ** creates N-1 copies of the parent query without any ORDER BY, LIMIT or 
+  ** creates N-1 copies of the parent query without any ORDER BY, LIMIT or
   ** OFFSET clauses and joins them to the left-hand-side of the original
   ** using UNION ALL operators. In this case N is the number of simple
   ** select statements in the compound sub-query.
@@ -83006,7 +83006,7 @@ static int flattenSubquery(
     if( db->mallocFailed ) return 1;
   }
 
-  /* Begin flattening the iFrom-th entry of the FROM clause 
+  /* Begin flattening the iFrom-th entry of the FROM clause
   ** in the outer query.
   */
   pSub = pSub1 = pSubitem->pSelect;
@@ -83104,10 +83104,10 @@ static int flattenSubquery(
       memset(&pSubSrc->a[i], 0, sizeof(pSubSrc->a[i]));
     }
     pSrc->a[iFrom].jointype = jointype;
-  
-    /* Now begin substituting subquery result set expressions for 
+
+    /* Now begin substituting subquery result set expressions for
     ** references to the iParent in the outer query.
-    ** 
+    **
     ** Example:
     **
     **   SELECT a+5, b*10 FROM (SELECT x*3 AS a, y+10 AS b FROM t1) WHERE a>b;
@@ -83148,7 +83148,7 @@ static int flattenSubquery(
       pParent->pHaving = pParent->pWhere;
       pParent->pWhere = pWhere;
       pParent->pHaving = substExpr(db, pParent->pHaving, iParent, pSub->pEList);
-      pParent->pHaving = sqlite3ExprAnd(db, pParent->pHaving, 
+      pParent->pHaving = sqlite3ExprAnd(db, pParent->pHaving,
                                   sqlite3ExprDup(db, pSub->pHaving, 0));
       assert( pParent->pGroupBy==0 );
       pParent->pGroupBy = sqlite3ExprListDup(db, pSub->pGroupBy, 0);
@@ -83156,12 +83156,12 @@ static int flattenSubquery(
       pParent->pWhere = substExpr(db, pParent->pWhere, iParent, pSub->pEList);
       pParent->pWhere = sqlite3ExprAnd(db, pParent->pWhere, pWhere);
     }
-  
+
     /* The flattened query is distinct if either the inner or the
-    ** outer query is distinct. 
+    ** outer query is distinct.
     */
     pParent->selFlags |= pSub->selFlags & SF_Distinct;
-  
+
     /*
     ** SELECT ... FROM (SELECT ... LIMIT a OFFSET b) LIMIT x OFFSET y;
     **
@@ -83185,7 +83185,7 @@ static int flattenSubquery(
 
 /*
 ** Analyze the SELECT statement passed as an argument to see if it
-** is a min() or max() query. Return WHERE_ORDERBY_MIN or WHERE_ORDERBY_MAX if 
+** is a min() or max() query. Return WHERE_ORDERBY_MIN or WHERE_ORDERBY_MAX if
 ** it is, or 0 otherwise. At present, a query is considered to be
 ** a min()/max() query if:
 **
@@ -83216,7 +83216,7 @@ static u8 minMaxQuery(Select *p){
 
 /*
 ** The select statement passed as the first argument is an aggregate query.
-** The second argment is the associated aggregate-info object. This 
+** The second argment is the associated aggregate-info object. This
 ** function tests if the SELECT is of the form:
 **
 **   SELECT count(*) FROM <tbl>
@@ -83231,7 +83231,7 @@ static Table *isSimpleCount(Select *p, AggInfo *pAggInfo){
 
   assert( !p->pGroupBy );
 
-  if( p->pWhere || p->pEList->nExpr!=1 
+  if( p->pWhere || p->pEList->nExpr!=1
    || p->pSrc->nSrc!=1 || p->pSrc->a[0].pSelect
   ){
     return 0;
@@ -83251,8 +83251,8 @@ static Table *isSimpleCount(Select *p, AggInfo *pAggInfo){
 /*
 ** If the source-list item passed as an argument was augmented with an
 ** INDEXED BY clause, then try to locate the specified index. If there
-** was such a clause and the named index cannot be found, return 
-** SQLITE_ERROR and leave an error in pParse. Otherwise, populate 
+** was such a clause and the named index cannot be found, return
+** SQLITE_ERROR and leave an error in pParse. Otherwise, populate
 ** pFrom->pIndex and return SQLITE_OK.
 */
 SQLITE_PRIVATE int sqlite3IndexedByLookup(Parse *pParse, struct SrcList_item *pFrom){
@@ -83260,8 +83260,8 @@ SQLITE_PRIVATE int sqlite3IndexedByLookup(Parse *pParse, struct SrcList_item *pF
     Table *pTab = pFrom->pTab;
     char *zIndex = pFrom->zIndex;
     Index *pIdx;
-    for(pIdx=pTab->pIndex; 
-        pIdx && sqlite3StrICmp(pIdx->zName, zIndex); 
+    for(pIdx=pTab->pIndex;
+        pIdx && sqlite3StrICmp(pIdx->zName, zIndex);
         pIdx=pIdx->pNext
     );
     if( !pIdx ){
@@ -83280,7 +83280,7 @@ SQLITE_PRIVATE int sqlite3IndexedByLookup(Parse *pParse, struct SrcList_item *pF
 **    (1)  Make sure VDBE cursor numbers have been assigned to every
 **         element of the FROM clause.
 **
-**    (2)  Fill in the pTabList->a[].pTab fields in the SrcList that 
+**    (2)  Fill in the pTabList->a[].pTab fields in the SrcList that
 **         defines FROM clause.  When views appear in the FROM clause,
 **         fill pTabList->a[].pSelect with a copy of the SELECT statement
 **         that implements the view.  A copy is made of the view's SELECT
@@ -83352,7 +83352,7 @@ static int selectExpander(Walker *pWalker, Select *p){
     }else{
       /* An ordinary table or view name in the FROM clause */
       assert( pFrom->pTab==0 );
-      pFrom->pTab = pTab = 
+      pFrom->pTab = pTab =
         sqlite3LocateTable(pParse,0,pFrom->zName,pFrom->zDatabase);
       if( pTab==0 ) return WRC_Abort;
       pTab->nRef++;
@@ -83465,7 +83465,7 @@ static int selectExpander(Walker *pWalker, Select *p){
               if( (pFrom->jointype & JT_NATURAL)!=0
                 && tableAndColumnIndex(pTabList, i, zName, 0, 0)
               ){
-                /* In a NATURAL join, omit the join columns from the 
+                /* In a NATURAL join, omit the join columns from the
                 ** table to the right of the join */
                 continue;
               }
@@ -83521,8 +83521,8 @@ static int selectExpander(Walker *pWalker, Select *p){
 **
 ** When this routine is the Walker.xExprCallback then expression trees
 ** are walked without any actions being taken at each node.  Presumably,
-** when this routine is used for Walker.xExprCallback then 
-** Walker.xSelectCallback is set to do something useful for every 
+** when this routine is used for Walker.xExprCallback then
+** Walker.xSelectCallback is set to do something useful for every
 ** subquery in the parser tree.
 */
 static int exprWalkNoop(Walker *NotUsed, Expr *NotUsed2){
@@ -83752,7 +83752,7 @@ static void updateAccumulator(Parse *pParse, AggInfo *pAggInfo){
 }
 
 /*
-** Generate code for the SELECT statement given in the p argument.  
+** Generate code for the SELECT statement given in the p argument.
 **
 ** The results are distributed in various ways depending on the
 ** contents of the SelectDest structure pointed to by argument pDest
@@ -83769,7 +83769,7 @@ static void updateAccumulator(Parse *pParse, AggInfo *pAggInfo){
 **                     of the query.  This destination implies "LIMIT 1".
 **
 **     SRT_Set         The result must be a single column.  Store each
-**                     row of result as the key in table pDest->iParm. 
+**                     row of result as the key in table pDest->iParm.
 **                     Apply the affinity pDest->affinity before storing
 **                     results.  Used to implement "IN (SELECT ...)".
 **
@@ -83836,7 +83836,7 @@ SQLITE_PRIVATE int sqlite3Select(
   memset(&sAggInfo, 0, sizeof(sAggInfo));
 
   if( IgnorableOrderby(pDest) ){
-    assert(pDest->eDest==SRT_Exists || pDest->eDest==SRT_Union || 
+    assert(pDest->eDest==SRT_Exists || pDest->eDest==SRT_Union ||
            pDest->eDest==SRT_Except || pDest->eDest==SRT_Discard);
     /* If ORDER BY makes no difference in the output then neither does
     ** DISTINCT so it can be removed too. */
@@ -83953,7 +83953,7 @@ SQLITE_PRIVATE int sqlite3Select(
   }
 
   /* If there is an ORDER BY clause, then this sorting
-  ** index might end up being unused if the data can be 
+  ** index might end up being unused if the data can be
   ** extracted in pre-sorted order.  If that is the case, then the
   ** OP_OpenEphemeral instruction will be changed to an OP_Noop once
   ** we figure out that the sorting index is not needed.  The addrSortIndex
@@ -84003,7 +84003,7 @@ SQLITE_PRIVATE int sqlite3Select(
     pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, &pOrderBy, 0);
     if( pWInfo==0 ) goto select_end;
 
-    /* If sorting index that was created by a prior OP_OpenEphemeral 
+    /* If sorting index that was created by a prior OP_OpenEphemeral
     ** instruction ended up not being needed, then change the OP_OpenEphemeral
     ** into an OP_Noop.
     */
@@ -84048,7 +84048,7 @@ SQLITE_PRIVATE int sqlite3Select(
       }
     }
 
+
     /* Create a label to jump to when we want to abort the query */
     addrEnd = sqlite3VdbeMakeLabel(v);
 
@@ -84091,12 +84091,12 @@ SQLITE_PRIVATE int sqlite3Select(
       /* If there is a GROUP BY clause we might need a sorting index to
       ** implement it.  Allocate that sorting index now.  If it turns out
       ** that we do not need it after all, the OpenEphemeral instruction
-      ** will be converted into a Noop.  
+      ** will be converted into a Noop.
       */
       sAggInfo.sortingIdx = pParse->nTab++;
       pKeyInfo = keyInfoFromExprList(pParse, pGroupBy);
-      addrSortingIdx = sqlite3VdbeAddOp4(v, OP_OpenEphemeral, 
-          sAggInfo.sortingIdx, sAggInfo.nSortingColumn, 
+      addrSortingIdx = sqlite3VdbeAddOp4(v, OP_OpenEphemeral,
+          sAggInfo.sortingIdx, sAggInfo.nSortingColumn,
           0, (char*)pKeyInfo, P4_KEYINFO_HANDOFF);
 
       /* Initialize memory locations used by GROUP BY aggregate processing
@@ -84163,7 +84163,7 @@ SQLITE_PRIVATE int sqlite3Select(
             int r1 = j + regBase;
             int r2;
 
-            r2 = sqlite3ExprCodeGetColumn(pParse, 
+            r2 = sqlite3ExprCodeGetColumn(pParse,
                                pCol->pTab, pCol->iColumn, pCol->iTable, r1);
             if( r1!=r2 ){
               sqlite3VdbeAddOp2(v, OP_SCopy, r2, r1);
@@ -84275,7 +84275,7 @@ SQLITE_PRIVATE int sqlite3Select(
       sqlite3VdbeResolveLabel(v, addrReset);
       resetAccumulator(pParse, &sAggInfo);
       sqlite3VdbeAddOp1(v, OP_Return, regReset);
-     
+
     } /* endif pGroupBy.  Begin aggregate queries without GROUP BY: */
     else {
       ExprList *pDel = 0;
@@ -84313,7 +84313,7 @@ SQLITE_PRIVATE int sqlite3Select(
         ** and pKeyInfo to the KeyInfo structure required to navigate the
         ** index.
         **
-        ** In practice the KeyInfo structure will not be used. It is only 
+        ** In practice the KeyInfo structure will not be used. It is only
         ** passed to keep OP_OpenRead happy.
         */
         for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
@@ -84342,11 +84342,11 @@ SQLITE_PRIVATE int sqlite3Select(
         **   SELECT max(x) FROM ...
         **
         ** If it is, then ask the code in where.c to attempt to sort results
-        ** as if there was an "ORDER ON x" or "ORDER ON x DESC" clause. 
+        ** as if there was an "ORDER ON x" or "ORDER ON x DESC" clause.
         ** If where.c is able to produce results sorted in this order, then
-        ** add vdbe code to break out of the processing loop after the 
-        ** first iteration (since the first iteration of the loop is 
-        ** guaranteed to operate on the row with the minimum or maximum 
+        ** add vdbe code to break out of the processing loop after the
+        ** first iteration (since the first iteration of the loop is
+        ** guaranteed to operate on the row with the minimum or maximum
         ** value of x, the only row required).
         **
         ** A special flag must be passed to sqlite3WhereBegin() to slightly
@@ -84357,7 +84357,7 @@ SQLITE_PRIVATE int sqlite3Select(
         **     for x.
         **
         **   + The optimizer code in where.c (the thing that decides which
-        **     index or indices to use) should place a different priority on 
+        **     index or indices to use) should place a different priority on
         **     satisfying the 'ORDER BY' clause than it does in other cases.
         **     Refer to code and comments in where.c for details.
         */
@@ -84372,7 +84372,7 @@ SQLITE_PRIVATE int sqlite3Select(
             pMinMax->a[0].pExpr->op = TK_COLUMN;
           }
         }
-  
+
         /* This case runs if the aggregate has no GROUP BY clause.  The
         ** processing is much simpler since there is only a single row
         ** of output.
@@ -84395,12 +84395,12 @@ SQLITE_PRIVATE int sqlite3Select(
 
       pOrderBy = 0;
       sqlite3ExprIfFalse(pParse, pHaving, addrEnd, SQLITE_JUMPIFNULL);
-      selectInnerLoop(pParse, p, p->pEList, 0, 0, 0, -1, 
+      selectInnerLoop(pParse, p, p->pEList, 0, 0, 0, -1,
                       pDest, addrEnd, addrEnd);
       sqlite3ExprListDelete(db, pDel);
     }
     sqlite3VdbeResolveLabel(v, addrEnd);
-    
+
   } /* endif aggregate query */
 
   /* If there is an ORDER BY clause, then we need to sort the results
@@ -84441,7 +84441,7 @@ select_end:
 ** The following code is used for testing and debugging only.  The code
 ** that follows does not appear in normal builds.
 **
-** These routines are used to print out the content of all or part of a 
+** These routines are used to print out the content of all or part of a
 ** parse structures such as Select or Expr.  Such printouts are useful
 ** for helping to understand what is happening inside the code generator
 ** during the execution of complex SELECT statements.
@@ -84643,7 +84643,7 @@ malloc_failed:
 ** at the conclusion of the call.
 **
 ** The result that is written to ***pazResult is held in memory obtained
-** from malloc().  But the caller cannot free this memory directly.  
+** from malloc().  But the caller cannot free this memory directly.
 ** Instead, the entire table should be passed to sqlite3_free_table() when
 ** the calling procedure is finished using it.
 */
@@ -84762,7 +84762,7 @@ SQLITE_PRIVATE void sqlite3DeleteTriggerStep(sqlite3 *db, TriggerStep *pTriggerS
 }
 
 /*
-** Given table pTab, return a list of all the triggers attached to 
+** Given table pTab, return a list of all the triggers attached to
 ** the table. The list is connected by Trigger.pNext pointers.
 **
 ** All of the triggers on pTab that are in the same database as pTab
@@ -84788,7 +84788,7 @@ SQLITE_PRIVATE Trigger *sqlite3TriggerList(Parse *pParse, Table *pTab){
     for(p=sqliteHashFirst(&pTmpSchema->trigHash); p; p=sqliteHashNext(p)){
       Trigger *pTrig = (Trigger *)sqliteHashData(p);
       if( pTrig->pTabSchema==pTab->pSchema
-       && 0==sqlite3StrICmp(pTrig->table, pTab->zName) 
+       && 0==sqlite3StrICmp(pTrig->table, pTab->zName)
       ){
         pTrig->pNext = (pList ? pList : pTab->pTrigger);
         pList = pTrig;
@@ -84865,7 +84865,7 @@ SQLITE_PRIVATE void sqlite3BeginTrigger(
   /* Ensure the table name matches database name and that the table exists */
   if( db->mallocFailed ) goto trigger_cleanup;
   assert( pTableName->nSrc==1 );
-  if( sqlite3FixInit(&sFix, pParse, iDb, "trigger", pName) && 
+  if( sqlite3FixInit(&sFix, pParse, iDb, "trigger", pName) &&
       sqlite3FixSrcList(&sFix, pTableName) ){
     goto trigger_cleanup;
   }
@@ -84915,7 +84915,7 @@ SQLITE_PRIVATE void sqlite3BeginTrigger(
   ** of triggers.
   */
   if( pTab->pSelect && tr_tm!=TK_INSTEAD ){
-    sqlite3ErrorMsg(pParse, "cannot create %s trigger on view: %S", 
+    sqlite3ErrorMsg(pParse, "cannot create %s trigger on view: %S",
         (tr_tm == TK_BEFORE)?"BEFORE":"AFTER", pTableName, 0);
     goto trigger_cleanup;
   }
@@ -85005,7 +85005,7 @@ SQLITE_PRIVATE void sqlite3FinishTrigger(
   }
   nameToken.z = pTrig->zName;
   nameToken.n = sqlite3Strlen30(nameToken.z);
-  if( sqlite3FixInit(&sFix, pParse, iDb, "trigger", &nameToken) 
+  if( sqlite3FixInit(&sFix, pParse, iDb, "trigger", &nameToken)
           && sqlite3FixTriggerStep(&sFix, pTrig->step_list) ){
     goto triggerfinish_cleanup;
   }
@@ -85060,7 +85060,7 @@ triggerfinish_cleanup:
 ** a trigger step.  Return a pointer to a TriggerStep structure.
 **
 ** The parser calls this routine when it finds a SELECT statement in
-** body of a TRIGGER.  
+** body of a TRIGGER.
 */
 SQLITE_PRIVATE TriggerStep *sqlite3TriggerSelectStep(sqlite3 *db, Select *pSelect){
   TriggerStep *pTriggerStep = sqlite3DbMallocZero(db, sizeof(TriggerStep));
@@ -85179,7 +85179,7 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerDeleteStep(
   return pTriggerStep;
 }
 
-/* 
+/*
 ** Recursively delete a Trigger structure
 */
 SQLITE_PRIVATE void sqlite3DeleteTrigger(sqlite3 *db, Trigger *pTrigger){
@@ -85193,7 +85193,7 @@ SQLITE_PRIVATE void sqlite3DeleteTrigger(sqlite3 *db, Trigger *pTrigger){
 }
 
 /*
-** This function is called to drop a trigger from the database schema. 
+** This function is called to drop a trigger from the database schema.
 **
 ** This may be called directly from the parser and therefore identifies
 ** the trigger by name.  The sqlite3DropTriggerPtr() routine does the
@@ -85246,7 +85246,7 @@ static Table *tableOfTrigger(Trigger *pTrigger){
 
 
 /*
-** Drop a trigger given a pointer to that trigger. 
+** Drop a trigger given a pointer to that trigger.
 */
 SQLITE_PRIVATE void sqlite3DropTriggerPtr(Parse *pParse, Trigger *pTrigger){
   Table   *pTable;
@@ -85337,12 +85337,12 @@ static int checkColumnOverlap(IdList *pIdList, ExprList *pEList){
   for(e=0; e<pEList->nExpr; e++){
     if( sqlite3IdListIndex(pIdList, pEList->a[e].zName)>=0 ) return 1;
   }
-  return 0; 
+  return 0;
 }
 
 /*
 ** Return a list of all triggers on table pTab if there exists at least
-** one trigger that must be fired when an operation of type 'op' is 
+** one trigger that must be fired when an operation of type 'op' is
 ** performed on the table, and, if that operation is an UPDATE, if at
 ** least one of the columns in pChanges is being modified.
 */
@@ -85400,13 +85400,13 @@ static SrcList *targetSrcList(
 }
 
 /*
-** Generate VDBE code for the statements inside the body of a single 
+** Generate VDBE code for the statements inside the body of a single
 ** trigger.
 */
 static int codeTriggerProgram(
   Parse *pParse,            /* The parser context */
   TriggerStep *pStepList,   /* List of statements inside the trigger body */
-  int orconf                /* Conflict algorithm. (OE_Abort, etc) */  
+  int orconf                /* Conflict algorithm. (OE_Abort, etc) */
 ){
   TriggerStep *pStep;
   Vdbe *v = pParse->pVdbe;
@@ -85433,26 +85433,26 @@ static int codeTriggerProgram(
 
     switch( pStep->op ){
       case TK_UPDATE: {
-        sqlite3Update(pParse, 
+        sqlite3Update(pParse,
           targetSrcList(pParse, pStep),
-          sqlite3ExprListDup(db, pStep->pExprList, 0), 
-          sqlite3ExprDup(db, pStep->pWhere, 0), 
+          sqlite3ExprListDup(db, pStep->pExprList, 0),
+          sqlite3ExprDup(db, pStep->pWhere, 0),
           pParse->eOrconf
         );
         break;
       }
       case TK_INSERT: {
-        sqlite3Insert(pParse, 
+        sqlite3Insert(pParse,
           targetSrcList(pParse, pStep),
-          sqlite3ExprListDup(db, pStep->pExprList, 0), 
-          sqlite3SelectDup(db, pStep->pSelect, 0), 
-          sqlite3IdListDup(db, pStep->pIdList), 
+          sqlite3ExprListDup(db, pStep->pExprList, 0),
+          sqlite3SelectDup(db, pStep->pSelect, 0),
+          sqlite3IdListDup(db, pStep->pIdList),
           pParse->eOrconf
         );
         break;
       }
       case TK_DELETE: {
-        sqlite3DeleteFrom(pParse, 
+        sqlite3DeleteFrom(pParse,
           targetSrcList(pParse, pStep),
           sqlite3ExprDup(db, pStep->pWhere, 0)
         );
@@ -85466,7 +85466,7 @@ static int codeTriggerProgram(
         sqlite3SelectDelete(db, pSelect);
         break;
       }
-    } 
+    }
     if( pStep->op!=TK_SELECT ){
       sqlite3VdbeAddOp0(v, OP_ResetCount);
     }
@@ -85510,7 +85510,7 @@ static void transferParseError(Parse *pTo, Parse *pFrom){
 }
 
 /*
-** Create and populate a new TriggerPrg object with a sub-program 
+** Create and populate a new TriggerPrg object with a sub-program
 ** implementing trigger pTrigger with ON CONFLICT policy orconf.
 */
 static TriggerPrg *codeRowTrigger(
@@ -85532,7 +85532,7 @@ static TriggerPrg *codeRowTrigger(
   assert( pTrigger->zName==0 || pTab==tableOfTrigger(pTrigger) );
 
   /* Allocate the TriggerPrg and SubProgram objects. To ensure that they
-  ** are freed if an error occurs, link them into the Parse.pTriggerPrg 
+  ** are freed if an error occurs, link them into the Parse.pTriggerPrg
   ** list of the top-level Parse object sooner rather than later.  */
   pPrg = sqlite3DbMallocZero(db, sizeof(TriggerPrg));
   if( !pPrg ) return 0;
@@ -85546,7 +85546,7 @@ static TriggerPrg *codeRowTrigger(
   pPrg->aColmask[0] = 0xffffffff;
   pPrg->aColmask[1] = 0xffffffff;
 
-  /* Allocate and populate a new Parse context to use for coding the 
+  /* Allocate and populate a new Parse context to use for coding the
   ** trigger sub-program.  */
   pSubParse = sqlite3StackAllocZero(db, sizeof(Parse));
   if( !pSubParse ) return 0;
@@ -85560,7 +85560,7 @@ static TriggerPrg *codeRowTrigger(
 
   v = sqlite3GetVdbe(pSubParse);
   if( v ){
-    VdbeComment((v, "Start: %s.%s (%s %s%s%s ON %s)", 
+    VdbeComment((v, "Start: %s.%s (%s %s%s%s ON %s)",
       pTrigger->zName, onErrorText(orconf),
       (pTrigger->tr_tm==TRIGGER_BEFORE ? "BEFORE" : "AFTER"),
         (pTrigger->op==TK_UPDATE ? "UPDATE" : ""),
@@ -85569,18 +85569,18 @@ static TriggerPrg *codeRowTrigger(
       pTab->zName
     ));
 #ifndef SQLITE_OMIT_TRACE
-    sqlite3VdbeChangeP4(v, -1, 
+    sqlite3VdbeChangeP4(v, -1,
       sqlite3MPrintf(db, "-- TRIGGER %s", pTrigger->zName), P4_DYNAMIC
     );
 #endif
 
     /* If one was specified, code the WHEN clause. If it evaluates to false
-    ** (or NULL) the sub-vdbe is immediately halted by jumping to the 
+    ** (or NULL) the sub-vdbe is immediately halted by jumping to the
     ** OP_Halt inserted at the end of the program.  */
     if( pTrigger->pWhen ){
       pWhen = sqlite3ExprDup(db, pTrigger->pWhen, 0);
-      if( SQLITE_OK==sqlite3ResolveExprNames(&sNC, pWhen) 
-       && db->mallocFailed==0 
+      if( SQLITE_OK==sqlite3ResolveExprNames(&sNC, pWhen)
+       && db->mallocFailed==0
       ){
         iEndTrigger = sqlite3VdbeMakeLabel(v);
         sqlite3ExprIfFalse(pSubParse, pWhen, iEndTrigger, SQLITE_JUMPIFNULL);
@@ -85616,7 +85616,7 @@ static TriggerPrg *codeRowTrigger(
 
   return pPrg;
 }
-    
+
 /*
 ** Return a pointer to a TriggerPrg object containing the sub-program for
 ** trigger pTrigger with default ON CONFLICT algorithm orconf. If no such
@@ -85638,8 +85638,8 @@ static TriggerPrg *getRowTrigger(
   ** process of being coded). If this is the case, then an entry with
   ** a matching TriggerPrg.pTrigger field will be present somewhere
   ** in the Parse.pTriggerPrg list. Search for such an entry.  */
-  for(pPrg=pRoot->pTriggerPrg; 
-      pPrg && (pPrg->pTrigger!=pTrigger || pPrg->orconf!=orconf); 
+  for(pPrg=pRoot->pTriggerPrg;
+      pPrg && (pPrg->pTrigger!=pTrigger || pPrg->orconf!=orconf);
       pPrg=pPrg->pNext
   );
 
@@ -85652,7 +85652,7 @@ static TriggerPrg *getRowTrigger(
 }
 
 /*
-** Generate code for the trigger program associated with trigger p on 
+** Generate code for the trigger program associated with trigger p on
 ** table pTab. The reg, orconf and ignoreJump parameters passed to this
 ** function are the same as those described in the header function for
 ** sqlite3CodeRowTrigger()
@@ -85670,7 +85670,7 @@ SQLITE_PRIVATE void sqlite3CodeRowTriggerDirect(
   pPrg = getRowTrigger(pParse, p, pTab, orconf);
   assert( pPrg || pParse->nErr || pParse->db->mallocFailed );
 
-  /* Code the OP_Program opcode in the parent VDBE. P4 of the OP_Program 
+  /* Code the OP_Program opcode in the parent VDBE. P4 of the OP_Program
   ** is a pointer to the sub-vdbe containing the trigger program.  */
   if( pPrg ){
     sqlite3VdbeAddOp3(v, OP_Program, reg, ignoreJump, ++pParse->nMem);
@@ -85698,7 +85698,7 @@ SQLITE_PRIVATE void sqlite3CodeRowTriggerDirect(
 ** If there are no triggers that fire at the specified time for the specified
 ** operation on pTab, this function is a no-op.
 **
-** The reg argument is the address of the first in an array of registers 
+** The reg argument is the address of the first in an array of registers
 ** that contain the values substituted for the new.* and old.* references
 ** in the trigger program. If N is the number of columns in table pTab
 ** (a copy of pTab->nCol), then registers are populated as follows:
@@ -85715,12 +85715,12 @@ SQLITE_PRIVATE void sqlite3CodeRowTriggerDirect(
 **   reg+N+N+1      NEW.* value of right-most column of pTab
 **
 ** For ON DELETE triggers, the registers containing the NEW.* values will
-** never be accessed by the trigger program, so they are not allocated or 
-** populated by the caller (there is no data to populate them with anyway). 
+** never be accessed by the trigger program, so they are not allocated or
+** populated by the caller (there is no data to populate them with anyway).
 ** Similarly, for ON INSERT triggers the values stored in the OLD.* registers
 ** are never accessed, and so are not allocated by the caller. So, for an
 ** ON INSERT trigger, the value passed to this function as parameter reg
-** is not a readable register, although registers (reg+N) through 
+** is not a readable register, although registers (reg+N) through
 ** (reg+N+N+1) are.
 **
 ** Parameter orconf is the default conflict resolution algorithm for the
@@ -85752,12 +85752,12 @@ SQLITE_PRIVATE void sqlite3CodeRowTrigger(
     ** or else it must be a TEMP trigger. */
     assert( p->pSchema!=0 );
     assert( p->pTabSchema!=0 );
-    assert( p->pSchema==p->pTabSchema 
+    assert( p->pSchema==p->pTabSchema
          || p->pSchema==pParse->db->aDb[1].pSchema );
 
     /* Determine whether we should code this trigger */
-    if( p->op==op 
-     && p->tr_tm==tr_tm 
+    if( p->op==op
+     && p->tr_tm==tr_tm
      && checkColumnOverlap(p->pColumns, pChanges)
     ){
       sqlite3CodeRowTriggerDirect(pParse, p, pTab, reg, orconf, ignoreJump);
@@ -85766,9 +85766,9 @@ SQLITE_PRIVATE void sqlite3CodeRowTrigger(
 }
 
 /*
-** Triggers may access values stored in the old.* or new.* pseudo-table. 
-** This function returns a 32-bit bitmask indicating which columns of the 
-** old.* or new.* tables actually are used by triggers. This information 
+** Triggers may access values stored in the old.* or new.* pseudo-table.
+** This function returns a 32-bit bitmask indicating which columns of the
+** old.* or new.* tables actually are used by triggers. This information
 ** may be used by the caller, for example, to avoid having to load the entire
 ** old.* record into memory when executing an UPDATE or DELETE command.
 **
@@ -85778,7 +85778,7 @@ SQLITE_PRIVATE void sqlite3CodeRowTrigger(
 ** are more than 32 columns in the table, and at least one of the columns
 ** with an index greater than 32 may be accessed, 0xffffffff is returned.
 **
-** It is not possible to determine if the old.rowid or new.rowid column is 
+** It is not possible to determine if the old.rowid or new.rowid column is
 ** accessed by triggers. The caller must always assume that it is.
 **
 ** Parameter isNew must be either 1 or 0. If it is 0, then the mask returned
@@ -85853,10 +85853,10 @@ static void updateVirtualTable(
 
 /*
 ** The most recently coded instruction was an OP_Column to retrieve the
-** i-th column of table pTab. This routine sets the P4 parameter of the 
+** i-th column of table pTab. This routine sets the P4 parameter of the
 ** OP_Column to the default value, if any.
 **
-** The default value of a column is specified by a DEFAULT clause in the 
+** The default value of a column is specified by a DEFAULT clause in the
 ** column definition. This was either supplied by the user when the table
 ** was created, or added later to the table definition by an ALTER TABLE
 ** command. If the latter, then the row-records in the table btree on disk
@@ -85865,9 +85865,9 @@ static void updateVirtualTable(
 ** If the former, then all row-records are guaranteed to include a value
 ** for the column and the P4 value is not required.
 **
-** Column definitions created by an ALTER TABLE command may only have 
+** Column definitions created by an ALTER TABLE command may only have
 ** literal default values specified: a number, null or a string. (If a more
-** complicated default expression value was provided, it is evaluated 
+** complicated default expression value was provided, it is evaluated
 ** when the ALTER TABLE is executed and one of the literal values written
 ** into the sqlite_master table.)
 **
@@ -85877,8 +85877,8 @@ static void updateVirtualTable(
 ** sqlite3_value objects.
 **
 ** If parameter iReg is not negative, code an OP_RealAffinity instruction
-** on register iReg. This is used when an equivalent integer value is 
-** stored in place of an 8-byte floating point value in order to save 
+** on register iReg. This is used when an equivalent integer value is
+** stored in place of an 8-byte floating point value in order to save
 ** space.
 */
 SQLITE_PRIVATE void sqlite3ColumnDefault(Vdbe *v, Table *pTab, int i, int iReg){
@@ -85889,7 +85889,7 @@ SQLITE_PRIVATE void sqlite3ColumnDefault(Vdbe *v, Table *pTab, int i, int iReg){
     Column *pCol = &pTab->aCol[i];
     VdbeComment((v, "%s.%s", pTab->zName, pCol->zName));
     assert( i<pTab->nCol );
-    sqlite3ValueFromExpr(sqlite3VdbeDb(v), pCol->pDflt, enc, 
+    sqlite3ValueFromExpr(sqlite3VdbeDb(v), pCol->pDflt, enc,
                          pCol->affinity, &pValue);
     if( pValue ){
       sqlite3VdbeChangeP4(v, -1, (const char *)pValue, P4_MEM);
@@ -85961,7 +85961,7 @@ SQLITE_PRIVATE void sqlite3Update(
   }
   assert( pTabList->nSrc==1 );
 
-  /* Locate the table which we want to update. 
+  /* Locate the table which we want to update.
   */
   pTab = sqlite3SrcListLookup(pParse, pTabList);
   if( pTab==0 ) goto update_cleanup;
@@ -86159,13 +86159,13 @@ SQLITE_PRIVATE void sqlite3Update(
   }
 
   if( !isView ){
-    /* 
+    /*
     ** Open every index that needs updating.  Note that if any
-    ** index could potentially invoke a REPLACE conflict resolution 
+    ** index could potentially invoke a REPLACE conflict resolution
     ** action, then we need to open all indices because we might need
     ** to be deleting some records.
     */
-    if( !okOnePass ) sqlite3OpenTable(pParse, iCur, iDb, pTab, OP_OpenWrite); 
+    if( !okOnePass ) sqlite3OpenTable(pParse, iCur, iDb, pTab, OP_OpenWrite);
     if( onError==OE_Replace ){
       openAll = 1;
     }else{
@@ -86211,11 +86211,11 @@ SQLITE_PRIVATE void sqlite3Update(
     sqlite3VdbeAddOp1(v, OP_MustBeInt, regNewRowid);
   }
 
-  /* If there are triggers on this table, populate an array of registers 
+  /* If there are triggers on this table, populate an array of registers
   ** with the required old.* column data.  */
   if( hasFK || pTrigger ){
     u32 oldmask = (hasFK ? sqlite3FkOldmask(pParse, pTab) : 0);
-    oldmask |= sqlite3TriggerColmask(pParse, 
+    oldmask |= sqlite3TriggerColmask(pParse,
         pTrigger, pChanges, 0, TRIGGER_BEFORE|TRIGGER_AFTER, pTab, onError
     );
     for(i=0; i<pTab->nCol; i++){
@@ -86239,8 +86239,8 @@ SQLITE_PRIVATE void sqlite3Update(
   ** If there are one or more BEFORE triggers, then do not populate the
   ** registers associated with columns that are (a) not modified by
   ** this UPDATE statement and (b) not accessed by new.* references. The
-  ** values for registers not modified by the UPDATE must be reloaded from 
-  ** the database after the BEFORE triggers are fired anyway (as the trigger 
+  ** values for registers not modified by the UPDATE must be reloaded from
+  ** the database after the BEFORE triggers are fired anyway (as the trigger
   ** may have modified them). So not loading those that are not going to
   ** be used eliminates some redundant opcodes.
   */
@@ -86255,7 +86255,7 @@ SQLITE_PRIVATE void sqlite3Update(
       if( j>=0 ){
         sqlite3ExprCode(pParse, pChanges->a[j].pExpr, regNew+i);
       }else if( 0==(tmask&TRIGGER_BEFORE) || i>31 || (newmask&(1<<i)) ){
-        /* This branch loads the value of a column that will not be changed 
+        /* This branch loads the value of a column that will not be changed
         ** into a register. This is done if there are no BEFORE triggers, or
         ** if there are one or more BEFORE triggers that use this value via
         ** a new.* reference in a trigger program.
@@ -86274,20 +86274,20 @@ SQLITE_PRIVATE void sqlite3Update(
   if( tmask&TRIGGER_BEFORE ){
     sqlite3VdbeAddOp2(v, OP_Affinity, regNew, pTab->nCol);
     sqlite3TableAffinityStr(v, pTab);
-    sqlite3CodeRowTrigger(pParse, pTrigger, TK_UPDATE, pChanges, 
+    sqlite3CodeRowTrigger(pParse, pTrigger, TK_UPDATE, pChanges,
         TRIGGER_BEFORE, pTab, regOldRowid, onError, addr);
 
     /* The row-trigger may have deleted the row being updated. In this
-    ** case, jump to the next row. No updates or AFTER triggers are 
+    ** case, jump to the next row. No updates or AFTER triggers are
     ** required. This behaviour - what happens when the row being updated
     ** is deleted or renamed by a BEFORE trigger - is left undefined in the
     ** documentation.
     */
     sqlite3VdbeAddOp3(v, OP_NotExists, iCur, addr, regOldRowid);
 
-    /* If it did not delete it, the row-trigger may still have modified 
-    ** some of the columns of the row being updated. Load the values for 
-    ** all columns not modified by the update statement into their 
+    /* If it did not delete it, the row-trigger may still have modified
+    ** some of the columns of the row being updated. Load the values for
+    ** all columns not modified by the update statement into their
     ** registers in case this has happened.
     */
     for(i=0; i<pTab->nCol; i++){
@@ -86313,7 +86313,7 @@ SQLITE_PRIVATE void sqlite3Update(
     /* Delete the index entries associated with the current record.  */
     j1 = sqlite3VdbeAddOp3(v, OP_NotExists, iCur, 0, regOldRowid);
     sqlite3GenerateRowIndexDelete(pParse, pTab, iCur, aRegIdx);
-  
+
     /* If changing the record number, delete the old record.  */
     if( hasFK || chngRowid ){
       sqlite3VdbeAddOp2(v, OP_Delete, iCur, 0);
@@ -86323,25 +86323,25 @@ SQLITE_PRIVATE void sqlite3Update(
     if( hasFK ){
       sqlite3FkCheck(pParse, pTab, 0, regNewRowid);
     }
-  
+
     /* Insert the new index entries and the new record. */
     sqlite3CompleteInsertion(pParse, pTab, iCur, regNewRowid, aRegIdx, 1, 0, 0);
 
     /* Do any ON CASCADE, SET NULL or SET DEFAULT operations required to
     ** handle rows (possibly in other tables) that refer via a foreign key
-    ** to the row just updated. */ 
+    ** to the row just updated. */
     if( hasFK ){
       sqlite3FkActions(pParse, pTab, pChanges, regOldRowid);
     }
   }
 
-  /* Increment the row counter 
+  /* Increment the row counter
   */
   if( (db->flags & SQLITE_CountRows) && !pParse->pTriggerTab){
     sqlite3VdbeAddOp2(v, OP_AddImm, regRowCount, 1);
   }
 
-  sqlite3CodeRowTrigger(pParse, pTrigger, TK_UPDATE, pChanges, 
+  sqlite3CodeRowTrigger(pParse, pTrigger, TK_UPDATE, pChanges,
       TRIGGER_AFTER, pTab, regOldRowid, onError, addr);
 
   /* Repeat the above with the next record to be updated, until
@@ -86367,7 +86367,7 @@ SQLITE_PRIVATE void sqlite3Update(
   }
 
   /*
-  ** Return the number of rows that were changed. If this routine is 
+  ** Return the number of rows that were changed. If this routine is
   ** generating code because of a call to sqlite3NestedParse(), do not
   ** invoke the callback function.
   */
@@ -86438,7 +86438,7 @@ static void updateVirtualTable(
   SelectDest dest;
 
   /* Construct the SELECT statement that will find the new values for
-  ** all updated rows. 
+  ** all updated rows.
   */
   pEList = sqlite3ExprListAppend(pParse, 0, sqlite3Expr(db, TK_ID, "_rowid_"));
   if( pRowid ){
@@ -86455,7 +86455,7 @@ static void updateVirtualTable(
     pEList = sqlite3ExprListAppend(pParse, pEList, pExpr);
   }
   pSelect = sqlite3SelectNew(pParse, pEList, pSrc, pWhere, 0, 0, 0, 0, 0, 0);
-  
+
   /* Create the ephemeral table into which the update results will
   ** be stored.
   */
@@ -86463,7 +86463,7 @@ static void updateVirtualTable(
   ephemTab = pParse->nTab++;
   sqlite3VdbeAddOp2(v, OP_OpenEphemeral, ephemTab, pTab->nCol+1+(pRowid!=0));
 
-  /* fill the ephemeral table 
+  /* fill the ephemeral table
   */
   sqlite3SelectDestInit(&dest, SRT_Table, ephemTab);
   sqlite3Select(pParse, pSelect, &dest);
@@ -86485,7 +86485,7 @@ static void updateVirtualTable(
   sqlite3VdbeAddOp2(v, OP_Close, ephemTab, 0);
 
   /* Cleanup */
-  sqlite3SelectDelete(db, pSelect);  
+  sqlite3SelectDelete(db, pSelect);
 }
 #endif /* SQLITE_OMIT_VIRTUALTABLE */
 
@@ -86601,7 +86601,7 @@ SQLITE_PRIVATE int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db){
     return SQLITE_ERROR;
   }
 
-  /* Save the current value of the database flags so that it can be 
+  /* Save the current value of the database flags so that it can be
   ** restored before returning. Then set the writable-schema flag, and
   ** disable CHECK and foreign key constraints.  */
   saved_flags = db->flags;
@@ -86906,7 +86906,7 @@ SQLITE_API int sqlite3_create_module_v2(
 /*
 ** Lock the virtual table so that it cannot be disconnected.
 ** Locks nest.  Every lock should have a corresponding unlock.
-** If an unlock is omitted, resources leaks will occur.  
+** If an unlock is omitted, resources leaks will occur.
 **
 ** If a disconnect is attempted while a virtual table is locked,
 ** the disconnect is deferred until all locks have been removed.
@@ -86918,7 +86918,7 @@ SQLITE_PRIVATE void sqlite3VtabLock(VTable *pVTab){
 
 /*
 ** pTab is a pointer to a Table structure representing a virtual-table.
-** Return a pointer to the VTable object used by connection db to access 
+** Return a pointer to the VTable object used by connection db to access
 ** this virtual-table, if one has been created, or NULL otherwise.
 */
 SQLITE_PRIVATE VTable *sqlite3GetVTable(sqlite3 *db, Table *pTab){
@@ -86952,7 +86952,7 @@ SQLITE_PRIVATE void sqlite3VtabUnlock(VTable *pVTab){
 /*
 ** Table p is a virtual table. This function moves all elements in the
 ** p->pVTable list to the sqlite3.pDisconnect lists of their associated
-** database connections to be disconnected at the next opportunity. 
+** database connections to be disconnected at the next opportunity.
 ** Except, if argument db is not NULL, then the entry associated with
 ** connection db is left in the p->pVTable list.
 */
@@ -86961,13 +86961,13 @@ static VTable *vtabDisconnectAll(sqlite3 *db, Table *p){
   VTable *pVTable = p->pVTable;
   p->pVTable = 0;
 
-  /* Assert that the mutex (if any) associated with the BtShared database 
-  ** that contains table p is held by the caller. See header comments 
+  /* Assert that the mutex (if any) associated with the BtShared database
+  ** that contains table p is held by the caller. See header comments
   ** above function sqlite3VtabUnlockList() for an explanation of why
   ** this makes it safe to access the sqlite3.pDisconnect list of any
   ** database connection that may have an entry in the p->pVTable list.  */
   assert( db==0 ||
-    sqlite3BtreeHoldsMutex(db->aDb[sqlite3SchemaToIndex(db, p->pSchema)].pBt) 
+    sqlite3BtreeHoldsMutex(db->aDb[sqlite3SchemaToIndex(db, p->pSchema)].pBt)
   );
 
   while( pVTable ){
@@ -86994,7 +86994,7 @@ static VTable *vtabDisconnectAll(sqlite3 *db, Table *p){
 ** Disconnect all the virtual table objects in the sqlite3.pDisconnect list.
 **
 ** This function may only be called when the mutexes associated with all
-** shared b-tree databases opened using connection db are held by the 
+** shared b-tree databases opened using connection db are held by the
 ** caller. This is done to protect the sqlite3.pDisconnect list. The
 ** sqlite3.pDisconnect list is accessed only as follows:
 **
@@ -87007,7 +87007,7 @@ static VTable *vtabDisconnectAll(sqlite3 *db, Table *p){
 **      or, if the virtual table is stored in a non-sharable database, then
 **      the database handle mutex is held.
 **
-** As a result, a sqlite3.pDisconnect cannot be accessed simultaneously 
+** As a result, a sqlite3.pDisconnect cannot be accessed simultaneously
 ** by multiple threads. It is thread-safe.
 */
 SQLITE_PRIVATE void sqlite3VtabUnlockList(sqlite3 *db){
@@ -87033,12 +87033,12 @@ SQLITE_PRIVATE void sqlite3VtabUnlockList(sqlite3 *db){
 ** record.
 **
 ** Since it is a virtual-table, the Table structure contains a pointer
-** to the head of a linked list of VTable structures. Each VTable 
+** to the head of a linked list of VTable structures. Each VTable
 ** structure is associated with a single sqlite3* user of the schema.
-** The reference count of the VTable structure associated with database 
-** connection db is decremented immediately (which may lead to the 
+** The reference count of the VTable structure associated with database
+** connection db is decremented immediately (which may lead to the
 ** structure being xDisconnected and free). Any other VTable structures
-** in the list are moved to the sqlite3.pDisconnect list of the associated 
+** in the list are moved to the sqlite3.pDisconnect list of the associated
 ** database connection.
 */
 SQLITE_PRIVATE void sqlite3VtabClear(Table *p){
@@ -87116,7 +87116,7 @@ SQLITE_PRIVATE void sqlite3VtabBeginParse(
   ** The second call, to obtain permission to create the table, is made now.
   */
   if( pTable->azModuleArg ){
-    sqlite3AuthCheck(pParse, SQLITE_CREATE_VTABLE, pTable->zName, 
+    sqlite3AuthCheck(pParse, SQLITE_CREATE_VTABLE, pTable->zName,
             pTable->azModuleArg[0], pParse->db->aDb[iDb].zName);
   }
 #endif
@@ -87148,7 +87148,7 @@ SQLITE_PRIVATE void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
   addArgumentToVtab(pParse);
   pParse->sArg.z = 0;
   if( pTab->nModuleArg<1 ) return;
-  
+
   /* If the CREATE VIRTUAL TABLE statement is being entered for the
   ** first time (in other words if the virtual table is actually being
   ** created now instead of just being read out of sqlite_master) then
@@ -87167,9 +87167,9 @@ SQLITE_PRIVATE void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
     }
     zStmt = sqlite3MPrintf(db, "CREATE VIRTUAL TABLE %T", &pParse->sNameToken);
 
-    /* A slot for the record has already been allocated in the 
+    /* A slot for the record has already been allocated in the
     ** SQLITE_MASTER table.  We just need to update that slot with all
-    ** the information we've collected.  
+    ** the information we've collected.
     **
     ** The VM register number pParse->regRowid holds the rowid of an
     ** entry in the sqlite_master table tht was created for this vtab
@@ -87193,7 +87193,7 @@ SQLITE_PRIVATE void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
     sqlite3VdbeAddOp2(v, OP_Expire, 0, 0);
     zWhere = sqlite3MPrintf(db, "name='%q'", pTab->zName);
     sqlite3VdbeAddOp4(v, OP_ParseSchema, iDb, 1, 0, zWhere, P4_DYNAMIC);
-    sqlite3VdbeAddOp4(v, OP_VCreate, iDb, 0, 0, 
+    sqlite3VdbeAddOp4(v, OP_VCreate, iDb, 0, 0,
                          pTab->zName, sqlite3Strlen30(pTab->zName) + 1);
   }
 
@@ -87249,7 +87249,7 @@ SQLITE_PRIVATE void sqlite3VtabArgExtend(Parse *pParse, Token *p){
 ** to this procedure.
 */
 static int vtabCallConstructor(
-  sqlite3 *db, 
+  sqlite3 *db,
   Table *pTab,
   Module *pMod,
   int (*xConstruct)(sqlite3*,void*,int,const char*const*,sqlite3_vtab**,char**),
@@ -87303,7 +87303,7 @@ static int vtabCallConstructor(
     }else{
       int iCol;
       /* If everything went according to plan, link the new VTable structure
-      ** into the linked list headed by pTab->pVTable. Then loop through the 
+      ** into the linked list headed by pTab->pVTable. Then loop through the
       ** columns of the table to see if any of them contain the token "hidden".
       ** If so, set the Column.isHidden flag and remove the token from
       ** the type string.  */
@@ -87349,7 +87349,7 @@ static int vtabCallConstructor(
 
 /*
 ** This function is invoked by the parser to call the xConnect() method
-** of the virtual table pTab. If an error occurs, an error code is returned 
+** of the virtual table pTab. If an error occurs, an error code is returned
 ** and an error left in pParse.
 **
 ** This call is a no-op if table pTab is not a virtual table.
@@ -87411,7 +87411,7 @@ static int addToVTrans(sqlite3 *db, VTable *pVTab){
 
 /*
 ** This function is invoked by the vdbe to call the xCreate method
-** of the virtual table named zTab in database iDb. 
+** of the virtual table named zTab in database iDb.
 **
 ** If an error occurs, *pzErr is set to point an an English language
 ** description of the error and an SQLITE_XXX error code is returned.
@@ -87430,8 +87430,8 @@ SQLITE_PRIVATE int sqlite3VtabCallCreate(sqlite3 *db, int iDb, const char *zTab,
   zMod = pTab->azModuleArg[0];
   pMod = (Module*)sqlite3HashFind(&db->aModule, zMod, sqlite3Strlen30(zMod));
 
-  /* If the module has been registered and includes a Create method, 
-  ** invoke it now. If the module has not been registered, return an 
+  /* If the module has been registered and includes a Create method,
+  ** invoke it now. If the module has not been registered, return an
   ** error. Otherwise, do nothing.
   */
   if( !pMod ){
@@ -87477,8 +87477,8 @@ SQLITE_API int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){
   }else{
     pParse->declareVtab = 1;
     pParse->db = db;
-  
-    if( SQLITE_OK==sqlite3RunParser(pParse, zCreateTable, &zErr) 
+
+    if( SQLITE_OK==sqlite3RunParser(pParse, zCreateTable, &zErr)
      && pParse->pNewTable
      && !db->mallocFailed
      && !pParse->pNewTable->pSelect
@@ -87497,7 +87497,7 @@ SQLITE_API int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){
       rc = SQLITE_ERROR;
     }
     pParse->declareVtab = 0;
-  
+
     if( pParse->pVdbe ){
       sqlite3VdbeFinalize(pParse->pVdbe);
     }
@@ -87547,7 +87547,7 @@ SQLITE_PRIVATE int sqlite3VtabCallDestroy(sqlite3 *db, int iDb, const char *zTab
 ** called is identified by the second argument, "offset", which is
 ** the offset of the method to call in the sqlite3_module structure.
 **
-** The array is cleared after invoking the callbacks. 
+** The array is cleared after invoking the callbacks.
 */
 static void callFinaliser(sqlite3 *db, int offset){
   int i;
@@ -87573,7 +87573,7 @@ static void callFinaliser(sqlite3 *db, int offset){
 ** array. Return the error code for the first error that occurs, or
 ** SQLITE_OK if all xSync operations are successful.
 **
-** Set *pzErrmsg to point to a buffer that should be released using 
+** Set *pzErrmsg to point to a buffer that should be released using
 ** sqlite3DbFree() containing an error message, if one is available.
 */
 SQLITE_PRIVATE int sqlite3VtabSync(sqlite3 *db, char **pzErrmsg){
@@ -87597,7 +87597,7 @@ SQLITE_PRIVATE int sqlite3VtabSync(sqlite3 *db, char **pzErrmsg){
 }
 
 /*
-** Invoke the xRollback method of all virtual tables in the 
+** Invoke the xRollback method of all virtual tables in the
 ** sqlite3.aVTrans array. Then clear the array itself.
 */
 SQLITE_PRIVATE int sqlite3VtabRollback(sqlite3 *db){
@@ -87606,7 +87606,7 @@ SQLITE_PRIVATE int sqlite3VtabRollback(sqlite3 *db){
 }
 
 /*
-** Invoke the xCommit method of all virtual tables in the 
+** Invoke the xCommit method of all virtual tables in the
 ** sqlite3.aVTrans array. Then clear the array itself.
 */
 SQLITE_PRIVATE int sqlite3VtabCommit(sqlite3 *db){
@@ -87628,7 +87628,7 @@ SQLITE_PRIVATE int sqlite3VtabBegin(sqlite3 *db, VTable *pVTab){
 
   /* Special case: If db->aVTrans is NULL and db->nVTrans is greater
   ** than zero, then this function is being called from within a
-  ** virtual module xSync() callback. It is illegal to write to 
+  ** virtual module xSync() callback. It is illegal to write to
   ** virtual module tables in this case, so return SQLITE_LOCKED.
   */
   if( sqlite3VtabInSync(db) ){
@@ -87636,7 +87636,7 @@ SQLITE_PRIVATE int sqlite3VtabBegin(sqlite3 *db, VTable *pVTab){
   }
   if( !pVTab ){
     return SQLITE_OK;
-  } 
+  }
   pModule = pVTab->pVtab->pModule;
 
   if( pModule->xBegin ){
@@ -87668,7 +87668,7 @@ SQLITE_PRIVATE int sqlite3VtabBegin(sqlite3 *db, VTable *pVTab){
 ** This routine is used to allow virtual table implementations to
 ** overload MATCH, LIKE, GLOB, and REGEXP operators.
 **
-** Return either the pDef argument (indicating no change) or a 
+** Return either the pDef argument (indicating no change) or a
 ** new FuncDef structure that is marked as ephemeral using the
 ** SQLITE_FUNC_EPHEM flag.
 */
@@ -87700,9 +87700,9 @@ SQLITE_PRIVATE FuncDef *sqlite3VtabOverloadFunction(
   assert( pVtab->pModule!=0 );
   pMod = (sqlite3_module *)pVtab->pModule;
   if( pMod->xFindFunction==0 ) return pDef;
+
   /* Call the xFindFunction method on the virtual table implementation
-  ** to see if the implementation wants to overload this function 
+  ** to see if the implementation wants to overload this function
   */
   zLowerName = sqlite3DbStrDup(db, pDef->zName);
   if( zLowerName ){
@@ -87806,7 +87806,7 @@ typedef struct WhereCost WhereCost;
 ** clause subexpression is separated from the others by AND operators,
 ** usually, or sometimes subexpressions separated by OR.
 **
-** All WhereTerms are collected into a single WhereClause structure.  
+** All WhereTerms are collected into a single WhereClause structure.
 ** The following identity holds:
 **
 **        WhereTerm.pWC->a[WhereTerm.idx] == WhereTerm
@@ -87920,8 +87920,8 @@ struct WhereAndInfo {
 ** An instance of the following structure keeps track of a mapping
 ** between VDBE cursor numbers and bits of the bitmasks in WhereTerm.
 **
-** The VDBE cursor numbers are small integers contained in 
-** SrcList_item.iCursor and Expr.iTable fields.  For any given WHERE 
+** The VDBE cursor numbers are small integers contained in
+** SrcList_item.iCursor and Expr.iTable fields.  For any given WHERE
 ** clause, the cursor numbers might not begin with 0 and they might
 ** contain gaps in the numbering sequence.  But we want to make maximum
 ** use of the bits in our bitmasks.  This structure provides a mapping
@@ -88252,9 +88252,9 @@ static int allowedOp(int op){
 **
 ** If a collation sequence is associated with either the left or right
 ** side of the comparison, it remains associated with the same side after
-** the commutation. So "Y collate NOCASE op X" becomes 
+** the commutation. So "Y collate NOCASE op X" becomes
 ** "X collate NOCASE op Y". This is because any collation sequence on
-** the left hand side of a comparison overrides any collation sequence 
+** the left hand side of a comparison overrides any collation sequence
 ** attached to the right. For the same reason the EP_ExpCollate flag
 ** is not commuted.
 */
@@ -88359,7 +88359,7 @@ static WhereTerm *findTerm(
 static void exprAnalyze(SrcList*, WhereClause*, int);
 
 /*
-** Call exprAnalyze on all terms in a WHERE clause.  
+** Call exprAnalyze on all terms in a WHERE clause.
 **
 **
 */
@@ -88380,7 +88380,7 @@ static void exprAnalyzeAll(
 ** so and false if not.
 **
 ** In order for the operator to be optimizible, the RHS must be a string
-** literal that does not begin with a wildcard.  
+** literal that does not begin with a wildcard.
 */
 static int isLikeOrGlob(
   Parse *pParse,    /* Parsing and code generating context */
@@ -88464,7 +88464,7 @@ static int isLikeOrGlob(
           ** function, then no OP_Variable will be added to the program.
           ** This causes problems for the sqlite3_bind_parameter_name()
           ** API. To workaround them, add a dummy OP_Variable here.
-          */ 
+          */
           int r1 = sqlite3GetTempReg(pParse);
           sqlite3ExprCodeTarget(pParse, pRight, r1);
           sqlite3VdbeChangeP3(v, sqlite3VdbeCurrentAddr(v)-1, 0);
@@ -88567,10 +88567,10 @@ static void transferJoinMarkings(Expr *pDerived, Expr *pBase){
 **     WhereTerm.u.pOrInfo->indexable  |=  the cursor number for table T
 **
 ** A subterm is "indexable" if it is of the form
-** "T.C <op> <expr>" where C is any column of table T and 
+** "T.C <op> <expr>" where C is any column of table T and
 ** <op> is one of "=", "<", "<=", ">", ">=", "IS NULL", or "IN".
 ** A subterm is also indexable if it is an AND of two or more
-** subsubterms at least one of which is indexable.  Indexable AND 
+** subsubterms at least one of which is indexable.  Indexable AND
 ** subterms have their eOperator set to WO_AND and they have
 ** u.pAndInfo set to a dynamically allocated WhereAndTerm object.
 **
@@ -88740,7 +88740,7 @@ static void exprAnalyzeOrTerm(
         if( (chngToIN & getMask(pMaskSet, pOrTerm->leftCursor))==0 ){
           /* This term must be of the form t1.a==t2.b where t2 is in the
           ** chngToIN set but t1 is not.  This term will be either preceeded
-          ** or follwed by an inverted copy (t2.b==t1.a).  Skip this term 
+          ** or follwed by an inverted copy (t2.b==t1.a).  Skip this term
           ** and use its inversion. */
           testcase( pOrTerm->wtFlags & TERM_COPIED );
           testcase( pOrTerm->wtFlags & TERM_VIRTUAL );
@@ -88788,7 +88788,7 @@ static void exprAnalyzeOrTerm(
     }
 
     /* At this point, okToChngToIN is true if original pTerm satisfies
-    ** case 1.  In that case, construct a new virtual term that is 
+    ** case 1.  In that case, construct a new virtual term that is
     ** pTerm converted into an IN operator.
     */
     if( okToChngToIN ){
@@ -88962,7 +88962,7 @@ static void exprAnalyze(
     for(i=0; i<2; i++){
       Expr *pNewExpr;
       int idxNew;
-      pNewExpr = sqlite3PExpr(pParse, ops[i], 
+      pNewExpr = sqlite3PExpr(pParse, ops[i],
                              sqlite3ExprDup(db, pExpr->pLeft, 0),
                              sqlite3ExprDup(db, pList->a[i].pExpr, 0), 0);
       idxNew = whereClauseInsert(pWC, pNewExpr, TERM_VIRTUAL|TERM_DYNAMIC);
@@ -88997,7 +88997,7 @@ static void exprAnalyze(
   ** The last character of the prefix "abc" is incremented to form the
   ** termination condition "abd".
   */
-  if( pWC->op==TK_AND 
+  if( pWC->op==TK_AND
    && isLikeOrGlob(pParse, pExpr, &pStr1, &isComplete, &noCase)
   ){
     Expr *pLeft;       /* LHS of LIKE/GLOB operator */
@@ -89016,7 +89016,7 @@ static void exprAnalyze(
       if( noCase ){
         /* The point is to increment the last character before the first
         ** wildcard.  But if we increment '@', that will push it into the
-        ** alphabetic range where case conversions will mess up the 
+        ** alphabetic range where case conversions will mess up the
         ** inequality.  To avoid this, make sure to also run the full
         ** LIKE on all candidate expressions by clearing the isComplete flag
         */
@@ -89062,7 +89062,7 @@ static void exprAnalyze(
     prereqColumn = exprTableUsage(pMaskSet, pLeft);
     if( (prereqExpr & prereqColumn)==0 ){
       Expr *pNewExpr;
-      pNewExpr = sqlite3PExpr(pParse, TK_MATCH, 
+      pNewExpr = sqlite3PExpr(pParse, TK_MATCH,
                               0, sqlite3ExprDup(db, pRight, 0), 0);
       idxNew = whereClauseInsert(pWC, pNewExpr, TERM_VIRTUAL|TERM_DYNAMIC);
       testcase( idxNew==0 );
@@ -89144,7 +89144,7 @@ static int isSortingIndex(
   nTerm = pOrderBy->nExpr;
   assert( nTerm>0 );
 
-  /* Argument pIdx must either point to a 'real' named index structure, 
+  /* Argument pIdx must either point to a 'real' named index structure,
   ** or an index structure allocated on the stack by bestBtreeIndex() to
   ** represent the rowid index that is part of every table.  */
   assert( pIdx->zName || (pIdx->nColumn==1 && pIdx->aiColumn[0]==-1) );
@@ -89222,7 +89222,7 @@ static int isSortingIndex(
     if( iColumn<0 && !referencesOtherTables(pOrderBy, pMaskSet, j, base) ){
       /* If the indexed column is the primary key and everything matches
       ** so far and none of the ORDER BY terms to the right reference other
-      ** tables in the join, then we are assured that the index can be used 
+      ** tables in the join, then we are assured that the index can be used
       ** to sort because the primary key is unique and so none of the other
       ** columns will make any difference
       */
@@ -89308,15 +89308,15 @@ static void TRACE_IDX_OUTPUTS(sqlite3_index_info *p){
 #define TRACE_IDX_OUTPUTS(A)
 #endif
 
-/* 
-** Required because bestIndex() is called by bestOrClauseIndex() 
+/*
+** Required because bestIndex() is called by bestOrClauseIndex()
 */
 static void bestIndex(
     Parse*, WhereClause*, struct SrcList_item*, Bitmask, ExprList*, WhereCost*);
 
 /*
-** This routine attempts to find an scanning strategy that can be used 
-** to optimize an 'OR' expression that is part of a WHERE clause. 
+** This routine attempts to find an scanning strategy that can be used
+** to optimize an 'OR' expression that is part of a WHERE clause.
 **
 ** The table associated with FROM clause term pSrc may be either a
 ** regular B-Tree table or a virtual table.
@@ -89337,9 +89337,9 @@ static void bestOrClauseIndex(
 
   /* Search the WHERE clause terms for a usable WO_OR term. */
   for(pTerm=pWC->a; pTerm<pWCEnd; pTerm++){
-    if( pTerm->eOperator==WO_OR 
+    if( pTerm->eOperator==WO_OR
      && ((pTerm->prereqAll & ~maskSrc) & notReady)==0
-     && (pTerm->u.pOrInfo->indexable & maskSrc)!=0 
+     && (pTerm->u.pOrInfo->indexable & maskSrc)!=0
     ){
       WhereClause * const pOrWC = &pTerm->u.pOrInfo->wc;
       WhereTerm * const pOrWCEnd = &pOrWC->a[pOrWC->nTerm];
@@ -89351,7 +89351,7 @@ static void bestOrClauseIndex(
 
       for(pOrTerm=pOrWC->a; pOrTerm<pOrWCEnd; pOrTerm++){
         WhereCost sTermCost;
-        WHERETRACE(("... Multi-index OR testing for term %d of %d....\n", 
+        WHERETRACE(("... Multi-index OR testing for term %d of %d....\n",
           (pOrTerm - pOrWC->a), (pTerm - pWC->a)
         ));
         if( pOrTerm->eOperator==WO_AND ){
@@ -89374,7 +89374,7 @@ static void bestOrClauseIndex(
         if( rTotal>=pCost->rCost ) break;
       }
 
-      /* If there is an ORDER BY clause, increase the scan cost to account 
+      /* If there is an ORDER BY clause, increase the scan cost to account
       ** for the cost of the sort. */
       if( pOrderBy!=0 ){
         rTotal += nRow*estLog(nRow);
@@ -89399,12 +89399,12 @@ static void bestOrClauseIndex(
 
 #ifndef SQLITE_OMIT_VIRTUALTABLE
 /*
-** Allocate and populate an sqlite3_index_info structure. It is the 
+** Allocate and populate an sqlite3_index_info structure. It is the
 ** responsibility of the caller to eventually release the structure
 ** by passing the pointer returned by this function to sqlite3_free().
 */
 static sqlite3_index_info *allocateIndexInfo(
-  Parse *pParse, 
+  Parse *pParse,
   WhereClause *pWC,
   struct SrcList_item *pSrc,
   ExprList *pOrderBy
@@ -89431,7 +89431,7 @@ static sqlite3_index_info *allocateIndexInfo(
     nTerm++;
   }
 
-  /* If the ORDER BY clause contains only columns in the current 
+  /* If the ORDER BY clause contains only columns in the current
   ** virtual table then allocate space for the aOrderBy part of
   ** the sqlite3_index_info structure.
   */
@@ -89540,7 +89540,7 @@ static int vtabBestIndex(Parse *pParse, Table *pTab, sqlite3_index_info *p){
 
   for(i=0; i<p->nConstraint; i++){
     if( !p->aConstraint[i].usable && p->aConstraintUsage[i].argvIndex>0 ){
-      sqlite3ErrorMsg(pParse, 
+      sqlite3ErrorMsg(pParse,
           "table %s: xBestIndex returned an invalid plan", pTab->zName);
     }
   }
@@ -89561,7 +89561,7 @@ static int vtabBestIndex(Parse *pParse, Table *pTab, sqlite3_index_info *p){
 ** same virtual table.  The sqlite3_index_info structure is created
 ** and initialized on the first invocation and reused on all subsequent
 ** invocations.  The sqlite3_index_info structure is also used when
-** code is generated to access the virtual table.  The whereInfoDelete() 
+** code is generated to access the virtual table.  The whereInfoDelete()
 ** routine takes care of freeing the sqlite3_index_info structure after
 ** everybody has finished with it.
 */
@@ -89582,7 +89582,7 @@ static void bestVirtualIndex(
   int i, j;
   int nOrderBy;
 
-  /* Make sure wsFlags is initialized to some sane value. Otherwise, if the 
+  /* Make sure wsFlags is initialized to some sane value. Otherwise, if the
   ** malloc in allocateIndexInfo() fails and this function returns leaving
   ** wsFlags in an uninitialized state, the caller may behave unpredictably.
   */
@@ -89609,12 +89609,12 @@ static void bestVirtualIndex(
 
   /* The module name must be defined. Also, by this point there must
   ** be a pointer to an sqlite3_vtab structure. Otherwise
-  ** sqlite3ViewGetColumnNames() would have picked up the error. 
+  ** sqlite3ViewGetColumnNames() would have picked up the error.
   */
   assert( pTab->azModuleArg && pTab->azModuleArg[0] );
   assert( sqlite3GetVTable(pParse->db, pTab) );
 
-  /* Set the aConstraint[].usable fields and initialize all 
+  /* Set the aConstraint[].usable fields and initialize all
   ** output variables to zero.
   **
   ** aConstraint[].usable is true for constraints where the right-hand
@@ -89623,7 +89623,7 @@ static void bestVirtualIndex(
   **
   **           column = expr
   **
-  ** and we are evaluating a join, then the constraint on column is 
+  ** and we are evaluating a join, then the constraint on column is
   ** only valid if all tables referenced in expr occur to the left
   ** of the table containing column.
   **
@@ -89670,8 +89670,8 @@ static void bestVirtualIndex(
   /* The cost is not allowed to be larger than SQLITE_BIG_DBL (the
   ** inital value of lowestCost in this loop. If it is, then the
   ** (cost<lowestCost) test below will never be true.
-  ** 
-  ** Use "(double)2" instead of "2.0" in case OMIT_FLOATING_POINT 
+  **
+  ** Use "(double)2" instead of "2.0" in case OMIT_FLOATING_POINT
   ** is defined.
   */
   if( (SQLITE_BIG_DBL/((double)2))<pIdxInfo->estimatedCost ){
@@ -89687,7 +89687,7 @@ static void bestVirtualIndex(
   pIdxInfo->nOrderBy = nOrderBy;
 
   /* Try to find a more efficient access pattern by using multiple indexes
-  ** to optimize an OR expression within the WHERE clause. 
+  ** to optimize an OR expression within the WHERE clause.
   */
   bestOrClauseIndex(pParse, pWC, pSrc, notReady, pOrderBy, pCost);
 }
@@ -89702,7 +89702,7 @@ static void bestVirtualIndex(
 ** 1 contains values larger than or equal to the value of the first sample,
 ** but smaller than the value of the second. And so on.
 **
-** If successful, this function determines which of the regions value 
+** If successful, this function determines which of the regions value
 ** pVal lies in, sets *piRegion to the region index (a value between 0
 ** and SQLITE_INDEX_SAMPLES+1, inclusive) and returns SQLITE_OK.
 ** Or, if an OOM occurs while converting text values between encodings,
@@ -89726,7 +89726,7 @@ static int whereRangeRegion(
         if( aSample[i].eType==SQLITE_NULL ) continue;
         if( aSample[i].eType>=SQLITE_TEXT || aSample[i].u.r>r ) break;
       }
-    }else{ 
+    }else{
       sqlite3 *db = pParse->db;
       CollSeq *pColl;
       const u8 *z;
@@ -89790,8 +89790,8 @@ static int whereRangeRegion(
 /*
 ** If expression pExpr represents a literal value, set *pp to point to
 ** an sqlite3_value structure containing the same value, with affinity
-** aff applied to it, before returning. It is the responsibility of the 
-** caller to eventually release this structure by passing it to 
+** aff applied to it, before returning. It is the responsibility of the
+** caller to eventually release this structure by passing it to
 ** sqlite3ValueFree().
 **
 ** If the current parse is a recompile (sqlite3Reprepare()) and pExpr
@@ -89805,9 +89805,9 @@ static int whereRangeRegion(
 */
 #ifdef SQLITE_ENABLE_STAT2
 static int valueFromExpr(
-  Parse *pParse, 
-  Expr *pExpr, 
-  u8 aff, 
+  Parse *pParse,
+  Expr *pExpr,
+  u8 aff,
   sqlite3_value **pp
 ){
   /* The evalConstExpr() function will have already converted any TK_VARIABLE
@@ -89956,13 +89956,13 @@ range_est_fallback:
 **       index and in the main table.
 **
 ** If there was an INDEXED BY clause (pSrc->pIndex) attached to the table in
-** the SQL statement, then this function only considers plans using the 
+** the SQL statement, then this function only considers plans using the
 ** named index. If no such plan is found, then the returned cost is
-** SQLITE_BIG_DBL. If a plan is found that uses the named index, 
+** SQLITE_BIG_DBL. If a plan is found that uses the named index,
 ** then the cost is calculated in the usual way.
 **
-** If a NOT INDEXED clause (pSrc->notIndexed!=0) was attached to the table 
-** in the SELECT statement, then no indexes are considered. However, the 
+** If a NOT INDEXED clause (pSrc->notIndexed!=0) was attached to the table
+** in the SELECT statement, then no indexes are considered. However, the
 ** selected plan may still take advantage of the tables built-in rowid
 ** index.
 */
@@ -90051,18 +90051,18 @@ static void bestBtreeIndex(
     ** scan being evaluated. They are then used to determine the expected
     ** cost and number of rows returned.
     **
-    **  nEq: 
+    **  nEq:
     **    Number of equality terms that can be implemented using the index.
     **
-    **  nInMul:  
-    **    The "in-multiplier". This is an estimate of how many seek operations 
-    **    SQLite must perform on the index in question. For example, if the 
+    **  nInMul:
+    **    The "in-multiplier". This is an estimate of how many seek operations
+    **    SQLite must perform on the index in question. For example, if the
     **    WHERE clause is:
     **
     **      WHERE a IN (1, 2, 3) AND b IN (4, 5, 6)
     **
-    **    SQLite must perform 9 lookups on an index on (a, b), so nInMul is 
-    **    set to 9. Given the same schema and either of the following WHERE 
+    **    SQLite must perform 9 lookups on an index on (a, b), so nInMul is
+    **    set to 9. Given the same schema and either of the following WHERE
     **    clauses:
     **
     **      WHERE a =  1
@@ -90070,12 +90070,12 @@ static void bestBtreeIndex(
     **
     **    nInMul is set to 1.
     **
-    **    If there exists a WHERE term of the form "x IN (SELECT ...)", then 
-    **    the sub-select is assumed to return 25 rows for the purposes of 
+    **    If there exists a WHERE term of the form "x IN (SELECT ...)", then
+    **    the sub-select is assumed to return 25 rows for the purposes of
     **    determining nInMul.
     **
-    **  bInEst:  
-    **    Set to true if there was at least one "x IN (SELECT ...)" term used 
+    **  bInEst:
+    **    Set to true if there was at least one "x IN (SELECT ...)" term used
     **    in determining the value of nInMul.
     **
     **  nBound:
@@ -90087,18 +90087,18 @@ static void bestBtreeIndex(
     **    space to 1/3rd its original size.  So an x>? constraint reduces
     **    nBound to 33.  Two constraints (x>? AND x<?) reduce nBound to 11.
     **
-    **  bSort:   
-    **    Boolean. True if there is an ORDER BY clause that will require an 
-    **    external sort (i.e. scanning the index being evaluated will not 
+    **  bSort:
+    **    Boolean. True if there is an ORDER BY clause that will require an
+    **    external sort (i.e. scanning the index being evaluated will not
     **    correctly order records).
     **
-    **  bLookup: 
-    **    Boolean. True if for each index entry visited a lookup on the 
-    **    corresponding table b-tree is required. This is always false 
-    **    for the rowid index. For other indexes, it is true unless all the 
-    **    columns of the table used by the SELECT statement are present in 
+    **  bLookup:
+    **    Boolean. True if for each index entry visited a lookup on the
+    **    corresponding table b-tree is required. This is always false
+    **    for the rowid index. For other indexes, it is true unless all the
+    **    columns of the table used by the SELECT statement are present in
     **    the index (such an index is sometimes described as a covering index).
-    **    For example, given the index on (a, b), the second of the following 
+    **    For example, given the index on (a, b), the second of the following
     **    two queries requires table b-tree lookups, but the first does not.
     **
     **             SELECT a, b    FROM tbl WHERE a = 1;
@@ -90174,7 +90174,7 @@ static void bestBtreeIndex(
     }
 
     /* If currently calculating the cost of using an index (not the IPK
-    ** index), determine if all required column data may be obtained without 
+    ** index), determine if all required column data may be obtained without
     ** seeking to entries in the main table (i.e. if the index is a covering
     ** index for this query). If it is, set the WHERE_IDX_ONLY flag in
     ** wsFlags. Otherwise, set the bLookup variable to true.  */
@@ -90235,7 +90235,7 @@ static void bestBtreeIndex(
     WHERETRACE((
       "tbl=%s idx=%s nEq=%d nInMul=%d nBound=%d bSort=%d bLookup=%d"
       " wsFlags=%d   (nRow=%.2f cost=%.2f)\n",
-      pSrc->pTab->zName, (pIdx ? pIdx->zName : "ipk"), 
+      pSrc->pTab->zName, (pIdx ? pIdx->zName : "ipk"),
       nEq, nInMul, nBound, bSort, bLookup, wsFlags, nRow, cost
     ));
 
@@ -90271,22 +90271,22 @@ static void bestBtreeIndex(
 
   assert( pOrderBy || (pCost->plan.wsFlags&WHERE_ORDERBY)==0 );
   assert( pCost->plan.u.pIdx==0 || (pCost->plan.wsFlags&WHERE_ROWID_EQ)==0 );
-  assert( pSrc->pIndex==0 
-       || pCost->plan.u.pIdx==0 
-       || pCost->plan.u.pIdx==pSrc->pIndex 
+  assert( pSrc->pIndex==0
+       || pCost->plan.u.pIdx==0
+       || pCost->plan.u.pIdx==pSrc->pIndex
   );
 
-  WHERETRACE(("best index is: %s\n", 
+  WHERETRACE(("best index is: %s\n",
     (pCost->plan.u.pIdx ? pCost->plan.u.pIdx->zName : "ipk")
   ));
-  
+
   bestOrClauseIndex(pParse, pWC, pSrc, notReady, pOrderBy, pCost);
   pCost->plan.wsFlags |= eqTermMask;
 }
 
 /*
 ** Find the query plan for accessing table pSrc->pTab. Write the
-** best query plan and its cost into the WhereCost object supplied 
+** best query plan and its cost into the WhereCost object supplied
 ** as the last parameter. This function may calculate the cost of
 ** both real and virtual table scans.
 */
@@ -90353,7 +90353,7 @@ static void disableTerm(WhereLevel *pLevel, WhereTerm *pTerm){
 
 /*
 ** Code an OP_Affinity opcode to apply the column affinity string zAff
-** to the n registers starting at base. 
+** to the n registers starting at base.
 **
 ** As an optimization, SQLITE_AFF_NONE entries (which are no-ops) at the
 ** beginning and end of zAff are ignored.  If all entries in zAff are
@@ -90393,7 +90393,7 @@ static void codeApplyAffinity(Parse *pParse, int base, int n, char *zAff){
 
 /*
 ** Generate code for a single equality term of the WHERE clause.  An equality
-** term can be either X=expr or X IN (...).   pTerm is the term to be 
+** term can be either X=expr or X IN (...).   pTerm is the term to be
 ** coded.
 **
 ** The current value for the constraint is left in register iReg.
@@ -90463,7 +90463,7 @@ static int codeEqualityTerm(
 ** For example, consider table t1(a,b,c,d,e,f) with index i1(a,b,c).
 ** Suppose the WHERE clause is this:  a==5 AND b IN (1,2,3) AND c>5 AND c<10
 ** The index has as many as three equality constraints, but in this
-** example, the third "c" value is an inequality.  So only two 
+** example, the third "c" value is an inequality.  So only two
 ** constraints are coded.  This routine will generate code to evaluate
 ** a==5 and b IN (1,2,3).  The current values for a and b will be stored
 ** in consecutive registers and the index of the first register is returned.
@@ -90598,7 +90598,7 @@ static Bitmask codeOneLoopStart(
   pTabItem = &pWInfo->pTabList->a[pLevel->iFrom];
   iCur = pTabItem->iCursor;
   bRev = (pLevel->plan.wsFlags & WHERE_REVERSE)!=0;
-  omitTable = (pLevel->plan.wsFlags & WHERE_IDX_ONLY)!=0 
+  omitTable = (pLevel->plan.wsFlags & WHERE_IDX_ONLY)!=0
            && (wctrlFlags & WHERE_FORCE_TABLE)==0;
 
   /* Create labels for the "break" and "continue" instructions
@@ -90707,7 +90707,7 @@ static Bitmask codeOneLoopStart(
       Expr *pX;             /* The expression that defines the start bound */
       int r1, rTemp;        /* Registers for holding the start boundary */
 
-      /* The following constant maps TK_xx codes into corresponding 
+      /* The following constant maps TK_xx codes into corresponding
       ** seek opcodes.  It depends on a particular ordering of TK_xx
       */
       const u8 aMoveOp[] = {
@@ -90761,14 +90761,14 @@ static Bitmask codeOneLoopStart(
   }else if( pLevel->plan.wsFlags & (WHERE_COLUMN_RANGE|WHERE_COLUMN_EQ) ){
     /* Case 3: A scan using an index.
     **
-    **         The WHERE clause may contain zero or more equality 
+    **         The WHERE clause may contain zero or more equality
     **         terms ("==" or "IN" operators) that refer to the N
     **         left-most columns of the index. It may also contain
     **         inequality constraints (>, <, >= or <=) on the indexed
-    **         column that immediately follows the N equalities. Only 
+    **         column that immediately follows the N equalities. Only
     **         the right-most column can be an inequality - the rest must
-    **         use the "==" and "IN" operators. For example, if the 
-    **         index is on (x,y,z), then the following clauses are all 
+    **         use the "==" and "IN" operators. For example, if the
+    **         index is on (x,y,z), then the following clauses are all
     **         optimized:
     **
     **            x=5
@@ -90789,7 +90789,7 @@ static Bitmask codeOneLoopStart(
     **         This case is also used when there are no WHERE clause
     **         constraints but an index is selected anyway, in order
     **         to force the output order to conform to an ORDER BY.
-    */  
+    */
     int aStartOp[] = {
       0,
       0,
@@ -90825,8 +90825,8 @@ static Bitmask codeOneLoopStart(
     iIdxCur = pLevel->iIdxCur;
     k = pIdx->aiColumn[nEq];     /* Column for inequality constraints */
 
-    /* If this loop satisfies a sort order (pOrderBy) request that 
-    ** was passed to this function to implement a "SELECT min(x) ..." 
+    /* If this loop satisfies a sort order (pOrderBy) request that
+    ** was passed to this function to implement a "SELECT min(x) ..."
     ** query, then the caller will only allow the loop to run for
     ** a single iteration. This means that the first row returned
     ** should not have a NULL value stored in 'x'. If column 'x' is
@@ -90843,8 +90843,8 @@ static Bitmask codeOneLoopStart(
       nExtraReg = 1;
     }
 
-    /* Find any inequality constraint terms for the start and end 
-    ** of the range. 
+    /* Find any inequality constraint terms for the start and end
+    ** of the range.
     */
     if( pLevel->plan.wsFlags & WHERE_TOP_LIMIT ){
       pRangeEnd = findTerm(pWC, iCur, k, notReady, (WO_LT|WO_LE), pIdx);
@@ -90865,7 +90865,7 @@ static Bitmask codeOneLoopStart(
     addrNxt = pLevel->addrNxt;
 
     /* If we are doing a reverse order scan on an ascending index, or
-    ** a forward order scan on a descending index, interchange the 
+    ** a forward order scan on a descending index, interchange the
     ** start and end terms (pRangeStart and pRangeEnd).
     */
     if( bRev==(pIdx->aSortOrder[nEq]==SQLITE_SO_ASC) ){
@@ -90889,14 +90889,14 @@ static Bitmask codeOneLoopStart(
       if( zAff ){
         if( sqlite3CompareAffinity(pRight, zAff[nConstraint])==SQLITE_AFF_NONE){
           /* Since the comparison is to be performed with no conversions
-          ** applied to the operands, set the affinity to apply to pRight to 
+          ** applied to the operands, set the affinity to apply to pRight to
           ** SQLITE_AFF_NONE.  */
           zAff[nConstraint] = SQLITE_AFF_NONE;
         }
         if( sqlite3ExprNeedsNoAffinityChange(pRight, zAff[nConstraint]) ){
           zAff[nConstraint] = SQLITE_AFF_NONE;
         }
-      }  
+      }
       nConstraint++;
     }else if( isMinQuery ){
       sqlite3VdbeAddOp2(v, OP_Null, 0, regBase+nEq);
@@ -90927,14 +90927,14 @@ static Bitmask codeOneLoopStart(
       if( zAff ){
         if( sqlite3CompareAffinity(pRight, zAff[nConstraint])==SQLITE_AFF_NONE){
           /* Since the comparison is to be performed with no conversions
-          ** applied to the operands, set the affinity to apply to pRight to 
+          ** applied to the operands, set the affinity to apply to pRight to
           ** SQLITE_AFF_NONE.  */
           zAff[nConstraint] = SQLITE_AFF_NONE;
         }
         if( sqlite3ExprNeedsNoAffinityChange(pRight, zAff[nConstraint]) ){
           zAff[nConstraint] = SQLITE_AFF_NONE;
         }
-      }  
+      }
       codeApplyAffinity(pParse, regBase, nEq+1, zAff);
       nConstraint++;
     }
@@ -90976,7 +90976,7 @@ static Bitmask codeOneLoopStart(
       sqlite3VdbeAddOp2(v, OP_Seek, iCur, iRowidReg);  /* Deferred seek */
     }
 
-    /* Record the instruction used to terminate the loop. Disable 
+    /* Record the instruction used to terminate the loop. Disable
     ** WHERE clause terms made redundant by the index range scan.
     */
     pLevel->op = bRev ? OP_Prev : OP_Next;
@@ -91035,7 +91035,7 @@ static Bitmask codeOneLoopStart(
     int iRetInit;                             /* Address of regReturn init */
     int untestedTerms = 0;             /* Some terms not completely tested */
     int ii;
-   
+
     pTerm = pLevel->plan.u.pTerm;
     assert( pTerm!=0 );
     assert( pTerm->eOperator==WO_OR );
@@ -91067,14 +91067,14 @@ static Bitmask codeOneLoopStart(
       pOrTab = pWInfo->pTabList;
     }
 
-    /* Initialize the rowset register to contain NULL. An SQL NULL is 
+    /* Initialize the rowset register to contain NULL. An SQL NULL is
     ** equivalent to an empty rowset.
     **
-    ** Also initialize regReturn to contain the address of the instruction 
+    ** Also initialize regReturn to contain the address of the instruction
     ** immediately following the OP_Return at the bottom of the loop. This
     ** is required in a few obscure LEFT JOIN cases where control jumps
-    ** over the top of the loop into the body of it. In this case the 
-    ** correct response for the end-of-loop code (the OP_Return) is to 
+    ** over the top of the loop into the body of it. In this case the
+    ** correct response for the end-of-loop code (the OP_Return) is to
     ** fall through to the next instruction, just as an OP_Next does if
     ** called on an uninitialized cursor.
     */
@@ -91097,7 +91097,7 @@ static Bitmask codeOneLoopStart(
           if( (wctrlFlags & WHERE_DUPLICATES_OK)==0 ){
             int iSet = ((ii==pOrWc->nTerm-1)?-1:ii);
             int r;
-            r = sqlite3ExprCodeGetColumn(pParse, pTabItem->pTab, -1, iCur, 
+            r = sqlite3ExprCodeGetColumn(pParse, pTabItem->pTab, -1, iCur,
                                          regRowid);
             sqlite3VdbeAddOp4Int(v, OP_RowSetTest, regRowset,
                                  sqlite3VdbeCurrentAddr(v)+2, r, iSet);
@@ -91166,7 +91166,7 @@ static Bitmask codeOneLoopStart(
   }
 
   /* For a LEFT OUTER JOIN, generate code that will record the fact that
-  ** at least one row of the right table has matched the left table.  
+  ** at least one row of the right table has matched the left table.
   */
   if( pLevel->iLeftJoin ){
     pLevel->addrFirst = sqlite3VdbeCurrentAddr(v);
@@ -91336,14 +91336,14 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
   sqlite3 *db;               /* Database connection */
 
   /* The number of tables in the FROM clause is limited by the number of
-  ** bits in a Bitmask 
+  ** bits in a Bitmask
   */
   if( pTabList->nSrc>BMS ){
     sqlite3ErrorMsg(pParse, "at most %d tables in a join", BMS);
     return 0;
   }
 
-  /* This function normally generates a nested loop for all tables in 
+  /* This function normally generates a nested loop for all tables in
   ** pTabList.  But if the WHERE_ONETABLE_ONLY flag is set, then we should
   ** only generate code for the first table in pTabList and assume that
   ** any cursors associated with subsequent tables are uninitialized.
@@ -91359,8 +91359,8 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
   */
   db = pParse->db;
   nByteWInfo = ROUND8(sizeof(WhereInfo)+(nTabList-1)*sizeof(WhereLevel));
-  pWInfo = sqlite3DbMallocZero(db, 
-      nByteWInfo + 
+  pWInfo = sqlite3DbMallocZero(db,
+      nByteWInfo +
       sizeof(WhereClause) +
       sizeof(WhereMaskSet)
   );
@@ -91382,7 +91382,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
   whereClauseInit(pWC, pParse, pMaskSet);
   sqlite3ExprCodeConstants(pParse, pWhere);
   whereSplit(pWC, pWhere, TK_AND);
-    
+
   /* Special case: a WHERE clause that is constant.  Evaluate the
   ** expression and either jump over all of the code or fall thru.
   */
@@ -91403,8 +91403,8 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
   ** for all tables to the left of a left join is important.  Ticket #3015.
   **
   ** Configure the WhereClause.vmask variable so that bits that correspond
-  ** to virtual table cursors are set. This is used to selectively disable 
-  ** the OR-to-IN transformation in exprAnalyzeOrTerm(). It is not helpful 
+  ** to virtual table cursors are set. This is used to selectively disable
+  ** the OR-to-IN transformation in exprAnalyzeOrTerm(). It is not helpful
   ** with virtual tables.
   **
   ** Note that bitmasks are created for all pTabList->nSrc tables in
@@ -91475,7 +91475,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
 
     /* Loop through the remaining entries in the FROM clause to find the
     ** next nested loop. The FROM clause entries may be iterated through
-    ** either once or twice. 
+    ** either once or twice.
     **
     ** The first iteration, which is always performed, searches for the
     ** FROM clause entry that permits the lowest-cost, "optimal" scan. In
@@ -91493,15 +91493,15 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
     ** the next outermost loop was always that with the lowest overall
     ** cost. However, this meant that SQLite could select the wrong plan
     ** for scripts such as the following:
-    **   
-    **   CREATE TABLE t1(a, b); 
+    **
+    **   CREATE TABLE t1(a, b);
     **   CREATE TABLE t2(c, d);
     **   SELECT * FROM t2, t1 WHERE t2.rowid = t1.a;
     **
     ** The best strategy is to iterate through table t1 first. However it
     ** is not possible to determine this with a simple greedy algorithm.
-    ** However, since the cost of a linear scan through table t2 is the same 
-    ** as the cost of a linear scan through table t1, a simple greedy 
+    ** However, since the cost of a linear scan through table t2 is the same
+    ** as the cost of a linear scan through table t1, a simple greedy
     ** algorithm may choose to use t2 for the outer loop, which is a much
     ** costlier approach.
     */
@@ -91512,7 +91512,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
         int doNotReorder;    /* True if this table should not be reordered */
         WhereCost sCost;     /* Cost information from best[Virtual]Index() */
         ExprList *pOrderBy;  /* ORDER BY clause for index to optimize */
-  
+
         doNotReorder =  (pTabItem->jointype & (JT_LEFT|JT_CROSS))!=0;
         if( j!=iFrom && doNotReorder ) break;
         m = getMask(pMaskSet, pTabItem->iCursor);
@@ -91521,13 +91521,13 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
           continue;
         }
         pOrderBy = ((i==0 && ppOrderBy )?*ppOrderBy:0);
-  
+
         assert( pTabItem->pTab );
 #ifndef SQLITE_OMIT_VIRTUALTABLE
         if( IsVirtual(pTabItem->pTab) ){
           sqlite3_index_info **pp = &pWInfo->a[j].pIdxInfo;
           bestVirtualIndex(pParse, pWC, pTabItem, mask, pOrderBy, &sCost, pp);
-        }else 
+        }else
 #endif
         {
           bestBtreeIndex(pParse, pWC, pTabItem, mask, pOrderBy, &sCost);
@@ -91535,7 +91535,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
         assert( isOptimal || (sCost.used&notReady)==0 );
 
         if( (sCost.used&notReady)==0
-         && (j==iFrom || sCost.rCost<bestPlan.rCost) 
+         && (j==iFrom || sCost.rCost<bestPlan.rCost)
         ){
           bestPlan = sCost;
           bestJ = j;
@@ -91657,7 +91657,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
         Bitmask b = pTabItem->colUsed;
         int n = 0;
         for(; b; b=b>>1, n++){}
-        sqlite3VdbeChangeP4(v, sqlite3VdbeCurrentAddr(v)-1, 
+        sqlite3VdbeChangeP4(v, sqlite3VdbeCurrentAddr(v)-1,
                             SQLITE_INT_TO_PTR(n), P4_INT32);
         assert( n<=pTab->nCol );
       }
@@ -91750,7 +91750,7 @@ whereBeginError:
 }
 
 /*
-** Generate the end of the WHERE loop.  See comments on 
+** Generate the end of the WHERE loop.  See comments on
 ** sqlite3WhereBegin() for additional information.
 */
 SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
@@ -91831,7 +91831,7 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
     ** as the vdbe level waits until the table is read before actually
     ** seeking the table cursor to the record corresponding to the current
     ** position in the index.
-    ** 
+    **
     ** Calls to the code generator in between sqlite3WhereBegin and
     ** sqlite3WhereEnd will have created code that references the table
     ** directly.  This loop scans all that code looking for opcodes
@@ -91979,7 +91979,7 @@ struct AttachKey { int type;  Token key; };
     pOut->pExpr = sqlite3PExpr(pParse, op, pOperand->pExpr, 0, 0);
     pOut->zStart = pOperand->zStart;
     pOut->zEnd = &pPostOp->z[pPostOp->n];
-  }                           
+  }
 
   /* A routine to convert a binary TK_IS or TK_ISNOT expression into a
   ** unary TK_ISNULL or TK_NOTNULL expression. */
@@ -92008,10 +92008,10 @@ struct AttachKey { int type;  Token key; };
 /* Next is all token values, in a form suitable for use by makeheaders.
 ** This section will be null unless lemon is run with the -m switch.
 */
-/* 
+/*
 ** These constants (all generated automatically by the parser generator)
 ** specify the various kinds of tokens (terminals) that the parser
-** understands. 
+** understands.
 **
 ** Each symbol here is a terminal symbol in the grammar.
 */
@@ -92028,7 +92028,7 @@ struct AttachKey { int type;  Token key; };
 **                       and nonterminals.  "int" is used otherwise.
 **    YYNOCODE           is a number of type YYCODETYPE which corresponds
 **                       to no legal terminal or nonterminal number.  This
-**                       number is used to fill in empty slots of the hash 
+**                       number is used to fill in empty slots of the hash
 **                       table.
 **    YYFALLBACK         If defined, this indicates that one or more tokens
 **                       have fall-back values which should be used if the
@@ -92037,7 +92037,7 @@ struct AttachKey { int type;  Token key; };
 **                       and nonterminal numbers.  "unsigned char" is
 **                       used if there are fewer than 250 rules and
 **                       states combined.  "int" is used otherwise.
-**    sqlite3ParserTOKENTYPE     is the data type used for minor tokens given 
+**    sqlite3ParserTOKENTYPE     is the data type used for minor tokens given
 **                       directly to the parser from the tokenizer.
 **    YYMINORTYPE        is the data type used for all minor tokens.
 **                       This is typically a union of many types, one of
@@ -92110,7 +92110,7 @@ static const YYMINORTYPE yyzerominor = { 0 };
 /* Next are the tables used to determine what action to take based on the
 ** current state and lookahead token.  These tables are used to implement
 ** functions that take a state number and lookahead value and return an
-** action integer.  
+** action integer.
 **
 ** Suppose the action integer is N.  Then the action is determined as
 ** follows
@@ -92135,7 +92135,7 @@ static const YYMINORTYPE yyzerominor = { 0 };
 ** If the index value yy_shift_ofst[S]+X is out of range or if the value
 ** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
 ** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
-** and that yy_default[S] should be used instead.  
+** and that yy_default[S] should be used instead.
 **
 ** The formula above is for computing the action when the lookahead is
 ** a terminal symbol.  If the lookahead is a non-terminal (as occurs after
@@ -92624,7 +92624,7 @@ static const YYACTIONTYPE yy_default[] = {
 
 /* The next table maps tokens into fallback tokens.  If a construct
 ** like the following:
-** 
+**
 **      %fallback ID X Y Z.
 **
 ** appears in the grammar, then ID becomes a fallback token for X, Y,
@@ -92749,10 +92749,10 @@ static char *yyTracePrompt = 0;
 #endif /* NDEBUG */
 
 #ifndef NDEBUG
-/* 
+/*
 ** Turn parser tracing on by giving a stream to which to write the trace
 ** and a prompt to preface each trace message.  Tracing is turned off
-** by making either argument NULL 
+** by making either argument NULL
 **
 ** Inputs:
 ** <ul>
@@ -92777,71 +92777,71 @@ SQLITE_PRIVATE void sqlite3ParserTrace(FILE *TraceFILE, char *zTracePrompt){
 #ifndef NDEBUG
 /* For tracing shifts, the names of all terminals and nonterminals
 ** are required.  The following table supplies these names */
-static const char *const yyTokenName[] = { 
-  "$",             "SEMI",          "EXPLAIN",       "QUERY",       
-  "PLAN",          "BEGIN",         "TRANSACTION",   "DEFERRED",    
-  "IMMEDIATE",     "EXCLUSIVE",     "COMMIT",        "END",         
-  "ROLLBACK",      "SAVEPOINT",     "RELEASE",       "TO",          
-  "TABLE",         "CREATE",        "IF",            "NOT",         
-  "EXISTS",        "TEMP",          "LP",            "RP",          
-  "AS",            "COMMA",         "ID",            "INDEXED",     
-  "ABORT",         "ACTION",        "AFTER",         "ANALYZE",     
-  "ASC",           "ATTACH",        "BEFORE",        "BY",          
-  "CASCADE",       "CAST",          "COLUMNKW",      "CONFLICT",    
-  "DATABASE",      "DESC",          "DETACH",        "EACH",        
-  "FAIL",          "FOR",           "IGNORE",        "INITIALLY",   
-  "INSTEAD",       "LIKE_KW",       "MATCH",         "NO",          
-  "KEY",           "OF",            "OFFSET",        "PRAGMA",      
-  "RAISE",         "REPLACE",       "RESTRICT",      "ROW",         
-  "TRIGGER",       "VACUUM",        "VIEW",          "VIRTUAL",     
-  "REINDEX",       "RENAME",        "CTIME_KW",      "ANY",         
-  "OR",            "AND",           "IS",            "BETWEEN",     
-  "IN",            "ISNULL",        "NOTNULL",       "NE",          
-  "EQ",            "GT",            "LE",            "LT",          
-  "GE",            "ESCAPE",        "BITAND",        "BITOR",       
-  "LSHIFT",        "RSHIFT",        "PLUS",          "MINUS",       
-  "STAR",          "SLASH",         "REM",           "CONCAT",      
-  "COLLATE",       "BITNOT",        "STRING",        "JOIN_KW",     
-  "CONSTRAINT",    "DEFAULT",       "NULL",          "PRIMARY",     
-  "UNIQUE",        "CHECK",         "REFERENCES",    "AUTOINCR",    
-  "ON",            "INSERT",        "DELETE",        "UPDATE",      
-  "SET",           "DEFERRABLE",    "FOREIGN",       "DROP",        
-  "UNION",         "ALL",           "EXCEPT",        "INTERSECT",   
-  "SELECT",        "DISTINCT",      "DOT",           "FROM",        
-  "JOIN",          "USING",         "ORDER",         "GROUP",       
-  "HAVING",        "LIMIT",         "WHERE",         "INTO",        
-  "VALUES",        "INTEGER",       "FLOAT",         "BLOB",        
-  "REGISTER",      "VARIABLE",      "CASE",          "WHEN",        
-  "THEN",          "ELSE",          "INDEX",         "ALTER",       
-  "ADD",           "error",         "input",         "cmdlist",     
-  "ecmd",          "explain",       "cmdx",          "cmd",         
+static const char *const yyTokenName[] = {
+  "$",             "SEMI",          "EXPLAIN",       "QUERY",
+  "PLAN",          "BEGIN",         "TRANSACTION",   "DEFERRED",
+  "IMMEDIATE",     "EXCLUSIVE",     "COMMIT",        "END",
+  "ROLLBACK",      "SAVEPOINT",     "RELEASE",       "TO",
+  "TABLE",         "CREATE",        "IF",            "NOT",
+  "EXISTS",        "TEMP",          "LP",            "RP",
+  "AS",            "COMMA",         "ID",            "INDEXED",
+  "ABORT",         "ACTION",        "AFTER",         "ANALYZE",
+  "ASC",           "ATTACH",        "BEFORE",        "BY",
+  "CASCADE",       "CAST",          "COLUMNKW",      "CONFLICT",
+  "DATABASE",      "DESC",          "DETACH",        "EACH",
+  "FAIL",          "FOR",           "IGNORE",        "INITIALLY",
+  "INSTEAD",       "LIKE_KW",       "MATCH",         "NO",
+  "KEY",           "OF",            "OFFSET",        "PRAGMA",
+  "RAISE",         "REPLACE",       "RESTRICT",      "ROW",
+  "TRIGGER",       "VACUUM",        "VIEW",          "VIRTUAL",
+  "REINDEX",       "RENAME",        "CTIME_KW",      "ANY",
+  "OR",            "AND",           "IS",            "BETWEEN",
+  "IN",            "ISNULL",        "NOTNULL",       "NE",
+  "EQ",            "GT",            "LE",            "LT",
+  "GE",            "ESCAPE",        "BITAND",        "BITOR",
+  "LSHIFT",        "RSHIFT",        "PLUS",          "MINUS",
+  "STAR",          "SLASH",         "REM",           "CONCAT",
+  "COLLATE",       "BITNOT",        "STRING",        "JOIN_KW",
+  "CONSTRAINT",    "DEFAULT",       "NULL",          "PRIMARY",
+  "UNIQUE",        "CHECK",         "REFERENCES",    "AUTOINCR",
+  "ON",            "INSERT",        "DELETE",        "UPDATE",
+  "SET",           "DEFERRABLE",    "FOREIGN",       "DROP",
+  "UNION",         "ALL",           "EXCEPT",        "INTERSECT",
+  "SELECT",        "DISTINCT",      "DOT",           "FROM",
+  "JOIN",          "USING",         "ORDER",         "GROUP",
+  "HAVING",        "LIMIT",         "WHERE",         "INTO",
+  "VALUES",        "INTEGER",       "FLOAT",         "BLOB",
+  "REGISTER",      "VARIABLE",      "CASE",          "WHEN",
+  "THEN",          "ELSE",          "INDEX",         "ALTER",
+  "ADD",           "error",         "input",         "cmdlist",
+  "ecmd",          "explain",       "cmdx",          "cmd",
   "transtype",     "trans_opt",     "nm",            "savepoint_opt",
-  "create_table",  "create_table_args",  "createkw",      "temp",        
+  "create_table",  "create_table_args",  "createkw",      "temp",
   "ifnotexists",   "dbnm",          "columnlist",    "conslist_opt",
-  "select",        "column",        "columnid",      "type",        
-  "carglist",      "id",            "ids",           "typetoken",   
-  "typename",      "signed",        "plus_num",      "minus_num",   
-  "carg",          "ccons",         "term",          "expr",        
-  "onconf",        "sortorder",     "autoinc",       "idxlist_opt", 
-  "refargs",       "defer_subclause",  "refarg",        "refact",      
-  "init_deferred_pred_opt",  "conslist",      "tcons",         "idxlist",     
-  "defer_subclause_opt",  "orconf",        "resolvetype",   "raisetype",   
+  "select",        "column",        "columnid",      "type",
+  "carglist",      "id",            "ids",           "typetoken",
+  "typename",      "signed",        "plus_num",      "minus_num",
+  "carg",          "ccons",         "term",          "expr",
+  "onconf",        "sortorder",     "autoinc",       "idxlist_opt",
+  "refargs",       "defer_subclause",  "refarg",        "refact",
+  "init_deferred_pred_opt",  "conslist",      "tcons",         "idxlist",
+  "defer_subclause_opt",  "orconf",        "resolvetype",   "raisetype",
   "ifexists",      "fullname",      "oneselect",     "multiselect_op",
-  "distinct",      "selcollist",    "from",          "where_opt",   
-  "groupby_opt",   "having_opt",    "orderby_opt",   "limit_opt",   
-  "sclp",          "as",            "seltablist",    "stl_prefix",  
-  "joinop",        "indexed_opt",   "on_opt",        "using_opt",   
-  "joinop2",       "inscollist",    "sortlist",      "sortitem",    
+  "distinct",      "selcollist",    "from",          "where_opt",
+  "groupby_opt",   "having_opt",    "orderby_opt",   "limit_opt",
+  "sclp",          "as",            "seltablist",    "stl_prefix",
+  "joinop",        "indexed_opt",   "on_opt",        "using_opt",
+  "joinop2",       "inscollist",    "sortlist",      "sortitem",
   "nexprlist",     "setlist",       "insert_cmd",    "inscollist_opt",
-  "itemlist",      "exprlist",      "likeop",        "escape",      
+  "itemlist",      "exprlist",      "likeop",        "escape",
   "between_op",    "in_op",         "case_operand",  "case_exprlist",
-  "case_else",     "uniqueflag",    "collate",       "nmnum",       
+  "case_else",     "uniqueflag",    "collate",       "nmnum",
   "plus_opt",      "number",        "trigger_decl",  "trigger_cmd_list",
-  "trigger_time",  "trigger_event",  "foreach_clause",  "when_clause", 
+  "trigger_time",  "trigger_event",  "foreach_clause",  "when_clause",
   "trigger_cmd",   "trnm",          "tridxby",       "database_kw_opt",
-  "key_opt",       "add_column_fullname",  "kwcolumn_opt",  "create_vtab", 
-  "vtabarglist",   "vtabarg",       "vtabargtoken",  "lp",          
-  "anylist",     
+  "key_opt",       "add_column_fullname",  "kwcolumn_opt",  "create_vtab",
+  "vtabarglist",   "vtabarg",       "vtabargtoken",  "lp",
+  "anylist",
 };
 #endif /* NDEBUG */
 
@@ -93206,7 +93206,7 @@ static void yyGrowStack(yyParser *p){
 }
 #endif
 
-/* 
+/*
 ** This function allocates a new parser.
 ** The only argument is a pointer to a function which works like
 ** malloc.
@@ -93250,7 +93250,7 @@ static void yy_destructor(
     /* Here is inserted the actions which take place when a
     ** terminal or non-terminal is destroyed.  This can happen
     ** when the symbol is popped from the stack during a
-    ** reduce or during error processing or when a parser is 
+    ** reduce or during error processing or when a parser is
     ** being destroyed before it is finished parsing.
     **
     ** Note: during a reduce, the only symbols destroyed are those
@@ -93356,7 +93356,7 @@ static int yy_pop_parser_stack(yyParser *pParser){
   return yymajor;
 }
 
-/* 
+/*
 ** Deallocate and destroy a parser.  Destructors are all called for
 ** all stack elements before shutting the parser down.
 **
@@ -93407,7 +93407,7 @@ static int yy_find_shift_action(
 ){
   int i;
   int stateno = pParser->yystack[pParser->yyidx].stateno;
+
   if( stateno>YY_SHIFT_COUNT
    || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){
     return yy_default[stateno];
@@ -93432,7 +93432,7 @@ static int yy_find_shift_action(
 #ifdef YYWILDCARD
       {
         int j = i - iLookAhead + YYWILDCARD;
-        if( 
+        if(
 #if YY_SHIFT_MIN+YYWILDCARD<0
           j>=0 &&
 #endif
@@ -93530,7 +93530,7 @@ static void yy_shift(
     yypParser->yyidxMax = yypParser->yyidx;
   }
 #endif
-#if YYSTACKDEPTH>0 
+#if YYSTACKDEPTH>0
   if( yypParser->yyidx>=YYSTACKDEPTH ){
     yyStackOverflow(yypParser, yypMinor);
     return;
@@ -93917,7 +93917,7 @@ static void yy_reduce(
   sqlite3ParserARG_FETCH;
   yymsp = &yypParser->yystack[yypParser->yyidx];
 #ifndef NDEBUG
-  if( yyTraceFILE && yyruleno>=0 
+  if( yyTraceFILE && yyruleno>=0
         && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
     fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
       yyRuleName[yyruleno]);
@@ -93930,7 +93930,7 @@ static void yy_reduce(
   ** not set the value of its left-hand side nonterminal.  Leaving the
   ** value of the nonterminal uninitialized is utterly harmless as long
   ** as the value is never used.  So really the only thing this code
-  ** accomplishes is to quieten purify.  
+  ** accomplishes is to quieten purify.
   **
   ** 2007-01-16:  The wireshark project (www.wireshark.org) reports that
   ** without this code, their parser segfaults.  I'm not sure what there
@@ -94425,7 +94425,7 @@ static void yy_reduce(
       case 170: /* cmd ::= UPDATE orconf fullname indexed_opt SET setlist where_opt */
 {
   sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy65, &yymsp[-3].minor.yy0);
-  sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy14,"set list"); 
+  sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy14,"set list");
   sqlite3Update(pParse,yymsp[-4].minor.yy65,yymsp[-1].minor.yy14,yymsp[0].minor.yy132,yymsp[-5].minor.yy186);
 }
         break;
@@ -94563,7 +94563,7 @@ static void yy_reduce(
   ** treated as functions that return constants */
   yygotominor.yy346.pExpr = sqlite3ExprFunction(pParse, 0,&yymsp[0].minor.yy0);
   if( yygotominor.yy346.pExpr ){
-    yygotominor.yy346.pExpr->op = TK_CONST_FUNC;  
+    yygotominor.yy346.pExpr->op = TK_CONST_FUNC;
   }
   spanSet(&yygotominor.yy346, &yymsp[0].minor.yy0, &yymsp[0].minor.yy0);
 }
@@ -94641,7 +94641,7 @@ static void yy_reduce(
     yygotominor.yy346.pExpr->x.pList = pList;
   }else{
     sqlite3ExprListDelete(pParse->db, pList);
-  } 
+  }
   if( yymsp[-3].minor.yy328 ) yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy346.pExpr, 0, 0);
   yygotominor.yy346.zStart = yymsp[-4].minor.yy346.zStart;
   yygotominor.yy346.zEnd = yymsp[0].minor.yy346.zEnd;
@@ -94747,7 +94747,7 @@ static void yy_reduce(
         break;
       case 244: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP */
 {
-  sqlite3CreateIndex(pParse, &yymsp[-6].minor.yy0, &yymsp[-5].minor.yy0, 
+  sqlite3CreateIndex(pParse, &yymsp[-6].minor.yy0, &yymsp[-5].minor.yy0,
                      sqlite3SrcListAppend(pParse->db,0,&yymsp[-3].minor.yy0,0), yymsp[-1].minor.yy14, yymsp[-9].minor.yy328,
                       &yymsp[-10].minor.yy0, &yymsp[0].minor.yy0, SQLITE_SO_ASC, yymsp[-7].minor.yy328);
 }
@@ -94858,7 +94858,7 @@ static void yy_reduce(
 }
         break;
       case 285: /* trigger_cmd_list ::= trigger_cmd SEMI */
-{ 
+{
   assert( yymsp[-1].minor.yy473!=0 );
   yymsp[-1].minor.yy473->pLast = yymsp[-1].minor.yy473;
   yygotominor.yy473 = yymsp[-1].minor.yy473;
@@ -94867,7 +94867,7 @@ static void yy_reduce(
       case 287: /* trnm ::= nm DOT nm */
 {
   yygotominor.yy0 = yymsp[0].minor.yy0;
-  sqlite3ErrorMsg(pParse, 
+  sqlite3ErrorMsg(pParse,
         "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
         "statements within triggers");
 }
@@ -94903,7 +94903,7 @@ static void yy_reduce(
         break;
       case 296: /* expr ::= RAISE LP IGNORE RP */
 {
-  yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0, 0); 
+  yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0, 0);
   if( yygotominor.yy346.pExpr ){
     yygotominor.yy346.pExpr->affinity = OE_Ignore;
   }
@@ -94913,7 +94913,7 @@ static void yy_reduce(
         break;
       case 297: /* expr ::= RAISE LP raisetype COMMA nm RP */
 {
-  yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0, &yymsp[-1].minor.yy0); 
+  yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0, &yymsp[-1].minor.yy0);
   if( yygotominor.yy346.pExpr ) {
     yygotominor.yy346.pExpr->affinity = (char)yymsp[-3].minor.yy328;
   }
@@ -95196,7 +95196,7 @@ SQLITE_PRIVATE void sqlite3Parser(
 #ifdef YYERRORSYMBOL
       /* A syntax error has occurred.
       ** The response to an error depends upon whether or not the
-      ** grammar defines an error token "ERROR".  
+      ** grammar defines an error token "ERROR".
       **
       ** This is what we do if the grammar does define ERROR:
       **
@@ -95259,7 +95259,7 @@ SQLITE_PRIVATE void sqlite3Parser(
       yy_syntax_error(yypParser,yymajor,yyminorunion);
       yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
       yymajor = YYNOCODE;
-      
+
 #else  /* YYERRORSYMBOL is not defined */
       /* This is what we do if the grammar does not define ERROR:
       **
@@ -95340,7 +95340,7 @@ const unsigned char ebcdicToAscii[] = {
 
 /*
 ** The sqlite3KeywordCode function looks up an identifier to determine if
-** it is a keyword.  If it is a keyword, the token code of that keyword is 
+** it is a keyword.  If it is a keyword, the token code of that keyword is
 ** returned.  If the input is not a keyword, TK_ID is returned.
 **
 ** The implementation of this routine was generated by a program,
@@ -95458,31 +95458,31 @@ static int keywordCode(const char *z, int n){
      521, 527, 531, 536,
   };
   static const unsigned char aCode[121] = {
-    TK_REINDEX,    TK_INDEXED,    TK_INDEX,      TK_DESC,       TK_ESCAPE,     
-    TK_EACH,       TK_CHECK,      TK_KEY,        TK_BEFORE,     TK_FOREIGN,    
-    TK_FOR,        TK_IGNORE,     TK_LIKE_KW,    TK_EXPLAIN,    TK_INSTEAD,    
-    TK_ADD,        TK_DATABASE,   TK_AS,         TK_SELECT,     TK_TABLE,      
-    TK_JOIN_KW,    TK_THEN,       TK_END,        TK_DEFERRABLE, TK_ELSE,       
-    TK_EXCEPT,     TK_TRANSACTION,TK_ACTION,     TK_ON,         TK_JOIN_KW,    
-    TK_ALTER,      TK_RAISE,      TK_EXCLUSIVE,  TK_EXISTS,     TK_SAVEPOINT,  
-    TK_INTERSECT,  TK_TRIGGER,    TK_REFERENCES, TK_CONSTRAINT, TK_INTO,       
-    TK_OFFSET,     TK_OF,         TK_SET,        TK_TEMP,       TK_TEMP,       
-    TK_OR,         TK_UNIQUE,     TK_QUERY,      TK_ATTACH,     TK_HAVING,     
-    TK_GROUP,      TK_UPDATE,     TK_BEGIN,      TK_JOIN_KW,    TK_RELEASE,    
-    TK_BETWEEN,    TK_NOTNULL,    TK_NOT,        TK_NO,         TK_NULL,       
-    TK_LIKE_KW,    TK_CASCADE,    TK_ASC,        TK_DELETE,     TK_CASE,       
-    TK_COLLATE,    TK_CREATE,     TK_CTIME_KW,   TK_DETACH,     TK_IMMEDIATE,  
-    TK_JOIN,       TK_INSERT,     TK_MATCH,      TK_PLAN,       TK_ANALYZE,    
-    TK_PRAGMA,     TK_ABORT,      TK_VALUES,     TK_VIRTUAL,    TK_LIMIT,      
-    TK_WHEN,       TK_WHERE,      TK_RENAME,     TK_AFTER,      TK_REPLACE,    
-    TK_AND,        TK_DEFAULT,    TK_AUTOINCR,   TK_TO,         TK_IN,         
-    TK_CAST,       TK_COLUMNKW,   TK_COMMIT,     TK_CONFLICT,   TK_JOIN_KW,    
-    TK_CTIME_KW,   TK_CTIME_KW,   TK_PRIMARY,    TK_DEFERRED,   TK_DISTINCT,   
-    TK_IS,         TK_DROP,       TK_FAIL,       TK_FROM,       TK_JOIN_KW,    
-    TK_LIKE_KW,    TK_BY,         TK_IF,         TK_ISNULL,     TK_ORDER,      
-    TK_RESTRICT,   TK_JOIN_KW,    TK_JOIN_KW,    TK_ROLLBACK,   TK_ROW,        
-    TK_UNION,      TK_USING,      TK_VACUUM,     TK_VIEW,       TK_INITIALLY,  
-    TK_ALL,        
+    TK_REINDEX,    TK_INDEXED,    TK_INDEX,      TK_DESC,       TK_ESCAPE,
+    TK_EACH,       TK_CHECK,      TK_KEY,        TK_BEFORE,     TK_FOREIGN,
+    TK_FOR,        TK_IGNORE,     TK_LIKE_KW,    TK_EXPLAIN,    TK_INSTEAD,
+    TK_ADD,        TK_DATABASE,   TK_AS,         TK_SELECT,     TK_TABLE,
+    TK_JOIN_KW,    TK_THEN,       TK_END,        TK_DEFERRABLE, TK_ELSE,
+    TK_EXCEPT,     TK_TRANSACTION,TK_ACTION,     TK_ON,         TK_JOIN_KW,
+    TK_ALTER,      TK_RAISE,      TK_EXCLUSIVE,  TK_EXISTS,     TK_SAVEPOINT,
+    TK_INTERSECT,  TK_TRIGGER,    TK_REFERENCES, TK_CONSTRAINT, TK_INTO,
+    TK_OFFSET,     TK_OF,         TK_SET,        TK_TEMP,       TK_TEMP,
+    TK_OR,         TK_UNIQUE,     TK_QUERY,      TK_ATTACH,     TK_HAVING,
+    TK_GROUP,      TK_UPDATE,     TK_BEGIN,      TK_JOIN_KW,    TK_RELEASE,
+    TK_BETWEEN,    TK_NOTNULL,    TK_NOT,        TK_NO,         TK_NULL,
+    TK_LIKE_KW,    TK_CASCADE,    TK_ASC,        TK_DELETE,     TK_CASE,
+    TK_COLLATE,    TK_CREATE,     TK_CTIME_KW,   TK_DETACH,     TK_IMMEDIATE,
+    TK_JOIN,       TK_INSERT,     TK_MATCH,      TK_PLAN,       TK_ANALYZE,
+    TK_PRAGMA,     TK_ABORT,      TK_VALUES,     TK_VIRTUAL,    TK_LIMIT,
+    TK_WHEN,       TK_WHERE,      TK_RENAME,     TK_AFTER,      TK_REPLACE,
+    TK_AND,        TK_DEFAULT,    TK_AUTOINCR,   TK_TO,         TK_IN,
+    TK_CAST,       TK_COLUMNKW,   TK_COMMIT,     TK_CONFLICT,   TK_JOIN_KW,
+    TK_CTIME_KW,   TK_CTIME_KW,   TK_PRIMARY,    TK_DEFERRED,   TK_DISTINCT,
+    TK_IS,         TK_DROP,       TK_FAIL,       TK_FROM,       TK_JOIN_KW,
+    TK_LIKE_KW,    TK_BY,         TK_IF,         TK_ISNULL,     TK_ORDER,
+    TK_RESTRICT,   TK_JOIN_KW,    TK_JOIN_KW,    TK_ROLLBACK,   TK_ROW,
+    TK_UNION,      TK_USING,      TK_VACUUM,     TK_VIEW,       TK_INITIALLY,
+    TK_ALL,
   };
   int h, i;
   if( n<2 ) return TK_ID;
@@ -95631,14 +95631,14 @@ SQLITE_PRIVATE int sqlite3KeywordCode(const unsigned char *z, int n){
 ** IdChar(X) will be true.  Otherwise it is false.
 **
 ** For ASCII, any character with the high-order bit set is
-** allowed in an identifier.  For 7-bit characters, 
+** allowed in an identifier.  For 7-bit characters,
 ** sqlite3IsIdChar[X] must be 1.
 **
 ** For EBCDIC, the rules are more complex but have the same
 ** end result.
 **
 ** Ticket #1066.  the SQL standard does not allow '$' in the
-** middle of identfiers.  But many SQL implementations do. 
+** middle of identfiers.  But many SQL implementations do.
 ** SQLite will allow '$' in identifiers for compatibility.
 ** But the feature is undocumented.
 */
@@ -95666,7 +95666,7 @@ SQLITE_PRIVATE const char sqlite3IsEbcdicIdChar[] = {
 
 
 /*
-** Return the length of the token that begins at z[0]. 
+** Return the length of the token that begins at z[0].
 ** Store the token type in *tokenType before returning.
 */
 SQLITE_PRIVATE int sqlite3GetToken(const unsigned char *z, int *tokenType){
@@ -95841,7 +95841,7 @@ SQLITE_PRIVATE int sqlite3GetToken(const unsigned char *z, int *tokenType){
         *tokenType = TK_FLOAT;
       }
       if( (z[i]=='e' || z[i]=='E') &&
-           ( sqlite3Isdigit(z[i+1]) 
+           ( sqlite3Isdigit(z[i+1])
             || ((z[i+1]=='+' || z[i+1]=='-') && sqlite3Isdigit(z[i+2]))
            )
       ){
@@ -95942,7 +95942,7 @@ SQLITE_PRIVATE int sqlite3GetToken(const unsigned char *z, int *tokenType){
 /*
 ** Run the parser on the given SQL string.  The parser structure is
 ** passed in.  An SQLITE_ status code is returned.  If an error occurs
-** then an and attempt is made to write an error message into 
+** then an and attempt is made to write an error message into
 ** memory obtained from sqlite3_malloc() and to make *pzErrMsg point to that
 ** error message.
 */
@@ -96061,7 +96061,7 @@ abort_parse:
 #endif
 
   if( !IN_DECLARE_VTAB ){
-    /* If the pParse->declareVtab flag is set, do not delete any table 
+    /* If the pParse->declareVtab flag is set, do not delete any table
     ** structure built up in pParse->pNewTable. The calling code (see vtab.c)
     ** will take responsibility for freeing the Table structure.
     */
@@ -96156,7 +96156,7 @@ SQLITE_PRIVATE const char sqlite3IsEbcdicIdChar[];
 **   (2) NORMAL    We are in the middle of statement which ends with a single
 **                 semicolon.
 **
-**   (3) EXPLAIN   The keyword EXPLAIN has been seen at the beginning of 
+**   (3) EXPLAIN   The keyword EXPLAIN has been seen at the beginning of
 **                 a statement.
 **
 **   (4) CREATE    The keyword CREATE has been seen at the beginning of a
@@ -96520,13 +96520,13 @@ SQLITE_PRIVATE void (*sqlite3IoTrace)(const char*, ...) = 0;
 SQLITE_API char *sqlite3_temp_directory = 0;
 
 /*
-** Initialize SQLite.  
+** Initialize SQLite.
 **
 ** This routine must be called to initialize the memory allocation,
 ** VFS, and mutex subsystems prior to doing any serious work with
 ** SQLite.  But as long as you do not compile with SQLITE_OMIT_AUTOINIT
 ** this routine will be called automatically by key routines such as
-** sqlite3_open().  
+** sqlite3_open().
 **
 ** This routine is a no-op except on its very first call for the process,
 ** or for the first call after a call to sqlite3_shutdown.
@@ -96568,7 +96568,7 @@ SQLITE_API int sqlite3_initialize(void){
   */
   if( sqlite3GlobalConfig.isInit ) return SQLITE_OK;
 
-  /* Make sure the mutex subsystem is initialized.  If unable to 
+  /* Make sure the mutex subsystem is initialized.  If unable to
   ** initialize the mutex subsystem, return early with the error.
   ** If the system is so sick that we are unable to allocate a mutex,
   ** there is not much SQLite is going to be able to do.
@@ -96633,7 +96633,7 @@ SQLITE_API int sqlite3_initialize(void){
       rc = sqlite3OsInit();
     }
     if( rc==SQLITE_OK ){
-      sqlite3PCacheBufferSetup( sqlite3GlobalConfig.pPage, 
+      sqlite3PCacheBufferSetup( sqlite3GlobalConfig.pPage,
           sqlite3GlobalConfig.szPage, sqlite3GlobalConfig.nPage);
       sqlite3GlobalConfig.isInit = 1;
     }
@@ -96726,7 +96726,7 @@ SQLITE_API int sqlite3_config(int op, ...){
   switch( op ){
 
     /* Mutex configuration options are only available in a threadsafe
-    ** compile. 
+    ** compile.
     */
 #if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0
     case SQLITE_CONFIG_SINGLETHREAD: {
@@ -96841,7 +96841,7 @@ SQLITE_API int sqlite3_config(int op, ...){
       sqlite3GlobalConfig.nLookaside = va_arg(ap, int);
       break;
     }
-    
+
     /* Record a pointer to the logger funcction and its first argument.
     ** The default is NULL.  Logging is disabled if the function pointer is
     ** NULL.
@@ -96868,7 +96868,7 @@ SQLITE_API int sqlite3_config(int op, ...){
 
 /*
 ** Set up the lookaside buffers for a database connection.
-** Return SQLITE_OK on success.  
+** Return SQLITE_OK on success.
 ** If lookaside is already active, return SQLITE_BUSY.
 **
 ** The sz parameter is the number of bytes in each lookaside slot.
@@ -96883,7 +96883,7 @@ static int setupLookaside(sqlite3 *db, void *pBuf, int sz, int cnt){
     return SQLITE_BUSY;
   }
   /* Free any existing lookaside buffer for this handle before
-  ** allocating a new one so we don't have to have space for 
+  ** allocating a new one so we don't have to have space for
   ** both at the same time.
   */
   if( db->lookaside.bMalloced ){
@@ -96999,7 +96999,7 @@ static int binCollFunc(
 }
 
 /*
-** Another built-in collating sequence: NOCASE. 
+** Another built-in collating sequence: NOCASE.
 **
 ** This collating sequence is intended to be used for "case independant
 ** comparison". SQLite's knowledge of upper and lower case equivalents
@@ -97086,7 +97086,7 @@ SQLITE_API int sqlite3_close(sqlite3 *db){
 
   /* If there are any outstanding VMs, return SQLITE_BUSY. */
   if( db->pVdbe ){
-    sqlite3Error(db, SQLITE_BUSY, 
+    sqlite3Error(db, SQLITE_BUSY,
         "unable to close due to unfinalised statements");
     sqlite3_mutex_leave(db->mutex);
     return SQLITE_BUSY;
@@ -97096,7 +97096,7 @@ SQLITE_API int sqlite3_close(sqlite3 *db){
   for(j=0; j<db->nDb; j++){
     Btree *pBt = db->aDb[j].pBt;
     if( pBt && sqlite3BtreeIsInBackup(pBt) ){
-      sqlite3Error(db, SQLITE_BUSY, 
+      sqlite3Error(db, SQLITE_BUSY,
           "unable to close due to unfinished backup operation");
       sqlite3_mutex_leave(db->mutex);
       return SQLITE_BUSY;
@@ -97169,7 +97169,7 @@ SQLITE_API int sqlite3_close(sqlite3 *db){
   /* The temp-database schema is allocated differently from the other schema
   ** objects (using sqliteMalloc() directly, instead of sqlite3BtreeSchema()).
   ** So it needs to be freed here. Todo: Why not roll the temp schema into
-  ** the same sqliteMalloc() as the one that allocates the database 
+  ** the same sqliteMalloc() as the one that allocates the database
   ** structure?
   */
   sqlite3DbFree(db, db->aDb[1].pSchema);
@@ -97321,7 +97321,7 @@ SQLITE_PRIVATE int sqlite3InvokeBusyHandler(BusyHandler *p){
   }else{
     p->nBusy++;
   }
-  return rc; 
+  return rc;
 }
 
 /*
@@ -97348,9 +97348,9 @@ SQLITE_API int sqlite3_busy_handler(
 ** be invoked every nOps opcodes.
 */
 SQLITE_API void sqlite3_progress_handler(
-  sqlite3 *db, 
+  sqlite3 *db,
   int nOps,
-  int (*xProgress)(void*), 
+  int (*xProgress)(void*),
   void *pArg
 ){
   sqlite3_mutex_enter(db->mutex);
@@ -97394,7 +97394,7 @@ SQLITE_API void sqlite3_interrupt(sqlite3 *db){
 ** This function is exactly the same as sqlite3_create_function(), except
 ** that it is designed to be called by internal code. The difference is
 ** that if a malloc() fails in sqlite3_create_function(), an error code
-** is returned and the mallocFailed flag cleared. 
+** is returned and the mallocFailed flag cleared.
 */
 SQLITE_PRIVATE int sqlite3CreateFunc(
   sqlite3 *db,
@@ -97411,14 +97411,14 @@ SQLITE_PRIVATE int sqlite3CreateFunc(
 
   assert( sqlite3_mutex_held(db->mutex) );
   if( zFunctionName==0 ||
-      (xFunc && (xFinal || xStep)) || 
+      (xFunc && (xFinal || xStep)) ||
       (!xFunc && (xFinal && !xStep)) ||
       (!xFunc && (!xFinal && xStep)) ||
       (nArg<-1 || nArg>SQLITE_MAX_FUNCTION_ARG) ||
       (255<(nName = sqlite3Strlen30( zFunctionName))) ){
     return SQLITE_MISUSE_BKPT;
   }
-  
+
 #ifndef SQLITE_OMIT_UTF16
   /* If SQLITE_UTF16 is specified as the encoding type, transform this
   ** to one of SQLITE_UTF16LE or SQLITE_UTF16BE using the
@@ -97445,7 +97445,7 @@ SQLITE_PRIVATE int sqlite3CreateFunc(
 #else
   enc = SQLITE_UTF8;
 #endif
-  
+
   /* Check if an existing function is being overridden or deleted. If so,
   ** and there are active VMs, then return SQLITE_BUSY. If a function
   ** is being overridden/deleted but there are no active VMs, allow the
@@ -97454,7 +97454,7 @@ SQLITE_PRIVATE int sqlite3CreateFunc(
   p = sqlite3FindFunction(db, zFunctionName, nName, nArg, (u8)enc, 0);
   if( p && p->iPrefEnc==enc && p->nArg==nArg ){
     if( db->activeVdbeCnt ){
-      sqlite3Error(db, SQLITE_BUSY, 
+      sqlite3Error(db, SQLITE_BUSY,
         "unable to delete/modify user-function due to active statements");
       assert( !db->mallocFailed );
       return SQLITE_BUSY;
@@ -97528,7 +97528,7 @@ SQLITE_API int sqlite3_create_function16(
 **
 ** If the function already exists as a regular global function, then
 ** this routine is a no-op.  If the function does not exist, then create
-** a new one that always throws a run-time error.  
+** a new one that always throws a run-time error.
 **
 ** When virtual tables intend to provide an overloaded function, they
 ** should call this routine to make sure the global function exists.
@@ -97555,7 +97555,7 @@ SQLITE_API int sqlite3_overload_function(
 #ifndef SQLITE_OMIT_TRACE
 /*
 ** Register a trace function.  The pArg from the previously registered trace
-** is returned.  
+** is returned.
 **
 ** A NULL trace function means that no tracing is executes.  A non-NULL
 ** trace is a pointer to a function that is invoked at the start of each
@@ -97571,8 +97571,8 @@ SQLITE_API void *sqlite3_trace(sqlite3 *db, void (*xTrace)(void*,const char*), v
   return pOld;
 }
 /*
-** Register a profile function.  The pArg from the previously registered 
-** profile function is returned.  
+** Register a profile function.  The pArg from the previously registered
+** profile function is returned.
 **
 ** A NULL profile function means that no profiling is executes.  A non-NULL
 ** profile is a pointer to a function that is invoked at the conclusion of
@@ -97706,7 +97706,7 @@ SQLITE_PRIVATE int sqlite3BtreeFactory(
 ){
   int btFlags = 0;
   int rc;
-  
+
   assert( sqlite3_mutex_held(db->mutex) );
   assert( ppBtree != 0);
   if( omitJournal ){
@@ -97728,7 +97728,7 @@ SQLITE_PRIVATE int sqlite3BtreeFactory(
 
   /* If the B-Tree was successfully opened, set the pager-cache size to the
   ** default value. Except, if the call to BtreeOpen() returned a handle
-  ** open on an existing shared pager-cache, do not change the pager-cache 
+  ** open on an existing shared pager-cache, do not change the pager-cache
   ** size.
   */
   if( rc==SQLITE_OK && 0==sqlite3BtreeSchema(*ppBtree, 0, 0) ){
@@ -97773,11 +97773,11 @@ SQLITE_API const void *sqlite3_errmsg16(sqlite3 *db){
     'o', 'u', 't', ' ', 'o', 'f', ' ', 'm', 'e', 'm', 'o', 'r', 'y', 0
   };
   static const u16 misuse[] = {
-    'l', 'i', 'b', 'r', 'a', 'r', 'y', ' ', 
-    'r', 'o', 'u', 't', 'i', 'n', 'e', ' ', 
-    'c', 'a', 'l', 'l', 'e', 'd', ' ', 
-    'o', 'u', 't', ' ', 
-    'o', 'f', ' ', 
+    'l', 'i', 'b', 'r', 'a', 'r', 'y', ' ',
+    'r', 'o', 'u', 't', 'i', 'n', 'e', ' ',
+    'c', 'a', 'l', 'l', 'e', 'd', ' ',
+    'o', 'u', 't', ' ',
+    'o', 'f', ' ',
     's', 'e', 'q', 'u', 'e', 'n', 'c', 'e', 0
   };
 
@@ -97839,7 +97839,7 @@ SQLITE_API int sqlite3_extended_errcode(sqlite3 *db){
 */
 static int createCollation(
   sqlite3* db,
-  const char *zName, 
+  const char *zName,
   u8 enc,
   u8 collType,
   void* pCtx,
@@ -97849,7 +97849,7 @@ static int createCollation(
   CollSeq *pColl;
   int enc2;
   int nName = sqlite3Strlen30(zName);
-  
+
   assert( sqlite3_mutex_held(db->mutex) );
 
   /* If SQLITE_UTF16 is specified as the encoding type, transform this
@@ -97866,14 +97866,14 @@ static int createCollation(
     return SQLITE_MISUSE_BKPT;
   }
 
-  /* Check if this call is removing or replacing an existing collation 
+  /* Check if this call is removing or replacing an existing collation
   ** sequence. If so, and there are active VMs, return busy. If there
   ** are no active VMs, invalidate any pre-compiled statements.
   */
   pColl = sqlite3FindCollSeq(db, (u8)enc2, zName, 0);
   if( pColl && pColl->xCmp ){
     if( db->activeVdbeCnt ){
-      sqlite3Error(db, SQLITE_BUSY, 
+      sqlite3Error(db, SQLITE_BUSY,
         "unable to delete/modify collation sequence due to active statements");
       return SQLITE_BUSY;
     }
@@ -97884,7 +97884,7 @@ static int createCollation(
     ** then any copies made by synthCollSeq() need to be invalidated.
     ** Also, collation destructor - CollSeq.xDel() - function may need
     ** to be called.
-    */ 
+    */
     if( (pColl->enc & ~SQLITE_UTF16_ALIGNED)==enc2 ){
       CollSeq *aColl = sqlite3HashFind(&db->aCollSeq, zName, nName);
       int j;
@@ -97994,7 +97994,7 @@ SQLITE_API int sqlite3_limit(sqlite3 *db, int limitId, int newLimit){
 
 /*
 ** This routine does the work of opening a database on behalf of
-** sqlite3_open() and sqlite3_open16(). The database filename "zFilename"  
+** sqlite3_open() and sqlite3_open16(). The database filename "zFilename"
 ** is UTF-8 encoded.
 */
 static int openDatabase(
@@ -98039,11 +98039,11 @@ static int openDatabase(
   flags &=  ~( SQLITE_OPEN_DELETEONCLOSE |
                SQLITE_OPEN_EXCLUSIVE |
                SQLITE_OPEN_MAIN_DB |
-               SQLITE_OPEN_TEMP_DB | 
-               SQLITE_OPEN_TRANSIENT_DB | 
-               SQLITE_OPEN_MAIN_JOURNAL | 
-               SQLITE_OPEN_TEMP_JOURNAL | 
-               SQLITE_OPEN_SUBJOURNAL | 
+               SQLITE_OPEN_TEMP_DB |
+               SQLITE_OPEN_TRANSIENT_DB |
+               SQLITE_OPEN_MAIN_JOURNAL |
+               SQLITE_OPEN_TEMP_JOURNAL |
+               SQLITE_OPEN_SUBJOURNAL |
                SQLITE_OPEN_MASTER_JOURNAL |
                SQLITE_OPEN_NOMUTEX |
                SQLITE_OPEN_FULLMUTEX
@@ -98118,7 +98118,7 @@ static int openDatabase(
 
   /* Open the backend database driver */
   db->openFlags = flags;
-  rc = sqlite3BtreeFactory(db, zFilename, 0, SQLITE_DEFAULT_CACHE_SIZE, 
+  rc = sqlite3BtreeFactory(db, zFilename, 0, SQLITE_DEFAULT_CACHE_SIZE,
                            flags | SQLITE_OPEN_MAIN_DB,
                            &db->aDb[0].pBt);
   if( rc!=SQLITE_OK ){
@@ -98133,7 +98133,7 @@ static int openDatabase(
 
 
   /* The default safety_level for the main database is 'full'; for the temp
-  ** database it is 'NONE'. This matches the pager layer defaults.  
+  ** database it is 'NONE'. This matches the pager layer defaults.
   */
   db->aDb[0].zName = "main";
   db->aDb[0].safety_level = 3;
@@ -98229,8 +98229,8 @@ opendb_out:
 ** Open a new database handle.
 */
 SQLITE_API int sqlite3_open(
-  const char *zFilename, 
-  sqlite3 **ppDb 
+  const char *zFilename,
+  sqlite3 **ppDb
 ){
   return openDatabase(zFilename, ppDb,
                       SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0);
@@ -98249,7 +98249,7 @@ SQLITE_API int sqlite3_open_v2(
 ** Open a new database handle.
 */
 SQLITE_API int sqlite3_open16(
-  const void *zFilename, 
+  const void *zFilename,
   sqlite3 **ppDb
 ){
   char const *zFilename8;   /* zFilename encoded in UTF-8 instead of UTF-16 */
@@ -98286,9 +98286,9 @@ SQLITE_API int sqlite3_open16(
 ** Register a new collation sequence with the database handle db.
 */
 SQLITE_API int sqlite3_create_collation(
-  sqlite3* db, 
-  const char *zName, 
-  int enc, 
+  sqlite3* db,
+  const char *zName,
+  int enc,
   void* pCtx,
   int(*xCompare)(void*,int,const void*,int,const void*)
 ){
@@ -98305,9 +98305,9 @@ SQLITE_API int sqlite3_create_collation(
 ** Register a new collation sequence with the database handle db.
 */
 SQLITE_API int sqlite3_create_collation_v2(
-  sqlite3* db, 
-  const char *zName, 
-  int enc, 
+  sqlite3* db,
+  const char *zName,
+  int enc,
   void* pCtx,
   int(*xCompare)(void*,int,const void*,int,const void*),
   void(*xDel)(void*)
@@ -98326,9 +98326,9 @@ SQLITE_API int sqlite3_create_collation_v2(
 ** Register a new collation sequence with the database handle db.
 */
 SQLITE_API int sqlite3_create_collation16(
-  sqlite3* db, 
+  sqlite3* db,
   const void *zName,
-  int enc, 
+  int enc,
   void* pCtx,
   int(*xCompare)(void*,int,const void*,int,const void*)
 ){
@@ -98352,8 +98352,8 @@ SQLITE_API int sqlite3_create_collation16(
 ** db. Replace any previously installed collation sequence factory.
 */
 SQLITE_API int sqlite3_collation_needed(
-  sqlite3 *db, 
-  void *pCollNeededArg, 
+  sqlite3 *db,
+  void *pCollNeededArg,
   void(*xCollNeeded)(void*,sqlite3*,int eTextRep,const char*)
 ){
   sqlite3_mutex_enter(db->mutex);
@@ -98370,8 +98370,8 @@ SQLITE_API int sqlite3_collation_needed(
 ** db. Replace any previously installed collation sequence factory.
 */
 SQLITE_API int sqlite3_collation_needed16(
-  sqlite3 *db, 
-  void *pCollNeededArg, 
+  sqlite3 *db,
+  void *pCollNeededArg,
   void(*xCollNeeded16)(void*,sqlite3*,int eTextRep,const void*)
 ){
   sqlite3_mutex_enter(db->mutex);
@@ -98513,13 +98513,13 @@ SQLITE_API int sqlite3_table_column_metadata(
   /* The following block stores the meta information that will be returned
   ** to the caller in local variables zDataType, zCollSeq, notnull, primarykey
   ** and autoinc. At this point there are two possibilities:
-  ** 
-  **     1. The specified column name was rowid", "oid" or "_rowid_" 
-  **        and there is no explicitly declared IPK column. 
   **
-  **     2. The table is not a view and the column name identified an 
+  **     1. The specified column name was rowid", "oid" or "_rowid_"
+  **        and there is no explicitly declared IPK column.
+  **
+  **     2. The table is not a view and the column name identified an
   **        explicitly declared column. Copy meta information from *pCol.
-  */ 
+  */
   if( pCol ){
     zDataType = pCol->zType;
     zCollSeq = pCol->zColl;
@@ -98570,7 +98570,7 @@ SQLITE_API int sqlite3_sleep(int ms){
   pVfs = sqlite3_vfs_find(0);
   if( pVfs==0 ) return 0;
 
-  /* This function works in milliseconds, but the underlying OsSleep() 
+  /* This function works in milliseconds, but the underlying OsSleep()
   ** API uses microseconds. Hence the 1000's.
   */
   rc = (sqlite3OsSleep(pVfs, 1000*ms)/1000);
@@ -98618,7 +98618,7 @@ SQLITE_API int sqlite3_file_control(sqlite3 *db, const char *zDbName, int op, vo
     }
   }
   sqlite3_mutex_leave(db->mutex);
-  return rc;   
+  return rc;
 }
 
 /*
@@ -98677,7 +98677,7 @@ SQLITE_API int sqlite3_test_control(int op, ...){
     /*
     **  sqlite3_test_control(BENIGN_MALLOC_HOOKS, xBegin, xEnd)
     **
-    ** Register hooks to call to indicate which malloc() failures 
+    ** Register hooks to call to indicate which malloc() failures
     ** are benign.
     */
     case SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS: {
@@ -98734,7 +98734,7 @@ SQLITE_API int sqlite3_test_control(int op, ...){
     ** This action provides a run-time test to see how the ALWAYS and
     ** NEVER macros were defined at compile-time.
     **
-    ** The return value is ALWAYS(X).  
+    ** The return value is ALWAYS(X).
     **
     ** The recommended test is X==2.  If the return value is 2, that means
     ** ALWAYS() and NEVER() are both no-op pass-through macros, which is the
@@ -98777,7 +98777,7 @@ SQLITE_API int sqlite3_test_control(int op, ...){
 
     /*  sqlite3_test_control(SQLITE_TESTCTRL_OPTIMIZATIONS, sqlite3 *db, int N)
     **
-    ** Enable or disable various optimizations for testing purposes.  The 
+    ** Enable or disable various optimizations for testing purposes.  The
     ** argument N is a bitmask of optimizations to be disabled.  For normal
     ** operation N should be 0.  The idea is that a test program (like the
     ** SQL Logic Test or SLT test module) can run the same SQL multiple times
@@ -98796,7 +98796,7 @@ SQLITE_API int sqlite3_test_control(int op, ...){
     **
     ** If zWord is a keyword recognized by the parser, then return the
     ** number of keywords.  Or if zWord is not a keyword, return 0.
-    ** 
+    **
     ** This test feature is only available in the amalgamation since
     ** the SQLITE_N_KEYWORD macro is not defined in this file if SQLite
     ** is built using separate source files.
@@ -98807,7 +98807,7 @@ SQLITE_API int sqlite3_test_control(int op, ...){
       rc = (sqlite3KeywordCode((u8*)zWord, n)!=TK_ID) ? SQLITE_N_KEYWORD : 0;
       break;
     }
-#endif 
+#endif
 
   }
   va_end(ap);
@@ -98858,13 +98858,13 @@ static sqlite3 *SQLITE_WSD sqlite3BlockedList = 0;
 
 #ifndef NDEBUG
 /*
-** This function is a complex assert() that verifies the following 
+** This function is a complex assert() that verifies the following
 ** properties of the blocked connections list:
 **
-**   1) Each entry in the list has a non-NULL value for either 
+**   1) Each entry in the list has a non-NULL value for either
 **      pUnlockConnection or pBlockingConnection, or both.
 **
-**   2) All entries in the list that share a common value for 
+**   2) All entries in the list that share a common value for
 **      xUnlockNotify are grouped together.
 **
 **   3) If the argument db is not NULL, then none of the entries in the
@@ -98916,8 +98916,8 @@ static void addToBlockedList(sqlite3 *db){
   sqlite3 **pp;
   assertMutexHeld();
   for(
-    pp=&sqlite3BlockedList; 
-    *pp && (*pp)->xUnlockNotify!=db->xUnlockNotify; 
+    pp=&sqlite3BlockedList;
+    *pp && (*pp)->xUnlockNotify!=db->xUnlockNotify;
     pp=&(*pp)->pNextBlocked
   );
   db->pNextBlocked = *pp;
@@ -98978,9 +98978,9 @@ SQLITE_API int sqlite3_unlock_notify(
     db->xUnlockNotify = 0;
     db->pUnlockArg = 0;
   }else if( 0==db->pBlockingConnection ){
-    /* The blocking transaction has been concluded. Or there never was a 
+    /* The blocking transaction has been concluded. Or there never was a
     ** blocking transaction. In either case, invoke the notify callback
-    ** immediately. 
+    ** immediately.
     */
     xNotify(&pArg, 1);
   }else{
@@ -99006,7 +99006,7 @@ SQLITE_API int sqlite3_unlock_notify(
 }
 
 /*
-** This function is called while stepping or preparing a statement 
+** This function is called while stepping or preparing a statement
 ** associated with connection db. The operation will return SQLITE_LOCKED
 ** to the user because it requires a lock that will not be available
 ** until connection pBlocker concludes its current transaction.
@@ -99022,7 +99022,7 @@ SQLITE_PRIVATE void sqlite3ConnectionBlocked(sqlite3 *db, sqlite3 *pBlocker){
 
 /*
 ** This function is called when
-** the transaction opened by database db has just finished. Locks held 
+** the transaction opened by database db has just finished. Locks held
 ** by database connection db have been released.
 **
 ** This function loops through each entry in the blocked connections
@@ -99082,7 +99082,7 @@ SQLITE_PRIVATE void sqlite3ConnectionUnlocked(sqlite3 *db){
         }else{
           /* This occurs when the array of context pointers that need to
           ** be passed to the unlock-notify callback is larger than the
-          ** aStatic[] array allocated on the stack and the attempt to 
+          ** aStatic[] array allocated on the stack and the attempt to
           ** allocate a larger array from the heap has failed.
           **
           ** This is a difficult situation to handle. Returning an error
@@ -99090,17 +99090,17 @@ SQLITE_PRIVATE void sqlite3ConnectionUnlocked(sqlite3 *db){
           ** is returned the transaction on connection db will still be
           ** closed and the unlock-notify callbacks on blocked connections
           ** will go unissued. This might cause the application to wait
-          ** indefinitely for an unlock-notify callback that will never 
+          ** indefinitely for an unlock-notify callback that will never
           ** arrive.
           **
           ** Instead, invoke the unlock-notify callback with the context
           ** array already accumulated. We can then clear the array and
-          ** begin accumulating any further context pointers without 
+          ** begin accumulating any further context pointers without
           ** requiring any dynamic allocation. This is sub-optimal because
           ** it means that instead of one callback with a large array of
           ** context pointers the application will receive two or more
           ** callbacks with smaller arrays of context pointers, which will
-          ** reduce the applications ability to prioritize multiple 
+          ** reduce the applications ability to prioritize multiple
           ** connections. But it is the best that can be done under the
           ** circumstances.
           */
@@ -99135,7 +99135,7 @@ SQLITE_PRIVATE void sqlite3ConnectionUnlocked(sqlite3 *db){
 }
 
 /*
-** This is called when the database connection passed as an argument is 
+** This is called when the database connection passed as an argument is
 ** being closed. The connection is removed from the blocked list.
 */
 SQLITE_PRIVATE void sqlite3ConnectionClosed(sqlite3 *db){
@@ -99237,7 +99237,7 @@ SQLITE_PRIVATE void sqlite3ConnectionClosed(sqlite3 *db){
 **
 ** Here, array { X } means zero or more occurrences of X, adjacent in
 ** memory.  A "position" is an index of a token in the token stream
-** generated by the tokenizer. Note that POS_END and POS_COLUMN occur 
+** generated by the tokenizer. Note that POS_END and POS_COLUMN occur
 ** in the same logical place as the position element, and act as sentinals
 ** ending a position list array.  POS_END is 0.  POS_COLUMN is 1.
 ** The positions numbers are not stored literally but rather as two more
@@ -99468,7 +99468,7 @@ SQLITE_PRIVATE void sqlite3ConnectionClosed(sqlite3 *db){
 #ifndef _FTSINT_H
 #define _FTSINT_H
 
-#if !defined(NDEBUG) && !defined(SQLITE_DEBUG) 
+#if !defined(NDEBUG) && !defined(SQLITE_DEBUG)
 # define NDEBUG 1
 #endif
 
@@ -99510,7 +99510,7 @@ SQLITE_PRIVATE void sqlite3ConnectionClosed(sqlite3 *db){
 ** When an fts3 table is created, it passes any arguments passed to
 ** the tokenizer clause of the CREATE VIRTUAL TABLE statement to the
 ** sqlite3_tokenizer_module.xCreate() function of the requested tokenizer
-** implementation. The xCreate() function in turn returns an 
+** implementation. The xCreate() function in turn returns an
 ** sqlite3_tokenizer structure representing the specific tokenizer to
 ** be used for the fts3 table (customized by the tokenizer clause arguments).
 **
@@ -99542,7 +99542,7 @@ struct sqlite3_tokenizer_module {
   ** then argc is set to 2, and the argv[] array contains pointers
   ** to the strings "arg1" and "arg2".
   **
-  ** This method should return either SQLITE_OK (0), or an SQLite error 
+  ** This method should return either SQLITE_OK (0), or an SQLite error
   ** code. If SQLITE_OK is returned, then *ppTokenizer should be set
   ** to point at the newly created tokenizer structure. The generic
   ** sqlite3_tokenizer.pModule variable should not be initialised by
@@ -99563,7 +99563,7 @@ struct sqlite3_tokenizer_module {
   /*
   ** Create a tokenizer cursor to tokenize an input buffer. The caller
   ** is responsible for ensuring that the input buffer remains valid
-  ** until the cursor is closed (using the xClose() method). 
+  ** until the cursor is closed (using the xClose() method).
   */
   int (*xOpen)(
     sqlite3_tokenizer *pTokenizer,       /* Tokenizer object */
@@ -99572,7 +99572,7 @@ struct sqlite3_tokenizer_module {
   );
 
   /*
-  ** Destroy an existing tokenizer cursor. The fts3 module calls this 
+  ** Destroy an existing tokenizer cursor. The fts3 module calls this
   ** method exactly once for each successful call to xOpen().
   */
   int (*xClose)(sqlite3_tokenizer_cursor *pCursor);
@@ -99583,7 +99583,7 @@ struct sqlite3_tokenizer_module {
   ** "OUT" variables identified below, or SQLITE_DONE to indicate that
   ** the end of the buffer has been reached, or an SQLite error code.
   **
-  ** *ppToken should be set to point at a buffer containing the 
+  ** *ppToken should be set to point at a buffer containing the
   ** normalized version of the token (i.e. after any case-folding and/or
   ** stemming has been performed). *pnBytes should be set to the length
   ** of this buffer in bytes. The input text that generated the token is
@@ -99595,7 +99595,7 @@ struct sqlite3_tokenizer_module {
   **
   ** The buffer *ppToken is set to point at is managed by the tokenizer
   ** implementation. It is only required to be valid until the next call
-  ** to xNext() or xClose(). 
+  ** to xNext() or xClose().
   */
   /* TODO(shess) current implementation requires pInput to be
   ** nul-terminated.  This should either be fixed, or pInput/nBytes
@@ -99673,7 +99673,7 @@ struct Fts3Hash {
   } *ht;
 };
 
-/* Each element in the hash table is an instance of the following 
+/* Each element in the hash table is an instance of the following
 ** structure.  All elements are stored on a single doubly-linked list.
 **
 ** Again, this structure is intended to be opaque, but it can't really
@@ -99692,10 +99692,10 @@ struct Fts3HashElem {
 **                           (including the null-terminator, if any).  Case
 **                           is respected in comparisons.
 **
-**   FTS3_HASH_BINARY        pKey points to binary data nKey bytes long. 
+**   FTS3_HASH_BINARY        pKey points to binary data nKey bytes long.
 **                           memcmp() is used to compare keys.
 **
-** A copy of the key is made if the copyKey parameter to fts3HashInit is 1.  
+** A copy of the key is made if the copyKey parameter to fts3HashInit is 1.
 */
 #define FTS3_HASH_STRING    1
 #define FTS3_HASH_BINARY    2
@@ -99754,11 +99754,11 @@ SQLITE_PRIVATE Fts3HashElem *sqlite3Fts3HashFindElem(const Fts3Hash *, const voi
 #define FTS3_MERGE_COUNT 16
 
 /*
-** This is the maximum amount of data (in bytes) to store in the 
+** This is the maximum amount of data (in bytes) to store in the
 ** Fts3Table.pendingTerms hash table. Normally, the hash table is
 ** populated as documents are inserted/updated/deleted in a transaction
 ** and used to create a new segment when the transaction is committed.
-** However if this limit is reached midway through a transaction, a new 
+** However if this limit is reached midway through a transaction, a new
 ** segment is created and the hash table cleared immediately.
 */
 #define FTS3_MAX_PENDING_DATA (1*1024*1024)
@@ -99778,7 +99778,7 @@ SQLITE_PRIVATE Fts3HashElem *sqlite3Fts3HashFindElem(const Fts3Hash *, const voi
 
 /*
 ** This section provides definitions to allow the
-** FTS3 extension to be compiled outside of the 
+** FTS3 extension to be compiled outside of the
 ** amalgamation.
 */
 #ifndef SQLITE_AMALGAMATION
@@ -99824,14 +99824,14 @@ struct Fts3Table {
   char **azColumn;                /* column names.  malloced */
   sqlite3_tokenizer *pTokenizer;  /* tokenizer for inserts and queries */
 
-  /* Precompiled statements used by the implementation. Each of these 
-  ** statements is run and reset within a single virtual table API call. 
+  /* Precompiled statements used by the implementation. Each of these
+  ** statements is run and reset within a single virtual table API call.
   */
   sqlite3_stmt *aStmt[25];
 
   /* Pointer to string containing the SQL:
   **
-  ** "SELECT block FROM %_segments WHERE blockid BETWEEN ? AND ? 
+  ** "SELECT block FROM %_segments WHERE blockid BETWEEN ? AND ?
   **    ORDER BY blockid"
   */
   char *zSelectLeaves;
@@ -99845,9 +99845,9 @@ struct Fts3Table {
   u8 bHasDocsize;                 /* True if %_docsize table exists */
 
   /* The following hash table is used to buffer pending index updates during
-  ** transactions. Variable nPendingData estimates the memory size of the 
-  ** pending data, including hash table overhead, but not malloc overhead. 
-  ** When nPendingData exceeds nMaxPendingData, the buffer is flushed 
+  ** transactions. Variable nPendingData estimates the memory size of the
+  ** pending data, including hash table overhead, but not malloc overhead.
+  ** When nPendingData exceeds nMaxPendingData, the buffer is flushed
   ** automatically. Variable iPrevDocid is the docid of the most recently
   ** inserted record.
   */
@@ -99885,10 +99885,10 @@ struct Fts3Cursor {
 **
 **     CREATE VIRTUAL TABLE ex1 USING fts3(a,b,c,d);
 **     SELECT docid FROM ex1 WHERE b MATCH 'one two three';
-** 
+**
 ** Because the LHS of the MATCH operator is 2nd column "b",
 ** Fts3Cursor.eSearch will be set to FTS3_FULLTEXT_SEARCH+1.  (+0 for a,
-** +1 for b, +2 for c, +3 for d.)  If the LHS of MATCH were "ex1" 
+** +1 for b, +2 for c, +3 for d.)  If the LHS of MATCH were "ex1"
 ** indicating that all columns should be searched,
 ** then eSearch would be set to FTS3_FULLTEXT_SEARCH+4.
 */
@@ -99917,7 +99917,7 @@ struct Fts3Phrase {
 ** A tree of these objects forms the RHS of a MATCH operator.
 **
 ** If Fts3Expr.eType is either FTSQUERY_NEAR or FTSQUERY_PHRASE and isLoaded
-** is true, then aDoclist points to a malloced buffer, size nDoclist bytes, 
+** is true, then aDoclist points to a malloced buffer, size nDoclist bytes,
 ** containing the results of the NEAR or phrase query in FTS3 doclist
 ** format. As usual, the initial "Length" field found in doclists stored
 ** on disk is omitted from this buffer.
@@ -99944,7 +99944,7 @@ struct Fts3Expr {
 
 /*
 ** Candidate values for Fts3Query.eType. Note that the order of the first
-** four values is in order of precedence when parsing expressions. For 
+** four values is in order of precedence when parsing expressions. For
 ** example, the following:
 **
 **   "a OR b AND c NOT d NEAR e"
@@ -99962,7 +99962,7 @@ struct Fts3Expr {
 
 /* fts3_init.c */
 SQLITE_PRIVATE int sqlite3Fts3DeleteVtab(int, sqlite3_vtab *);
-SQLITE_PRIVATE int sqlite3Fts3InitVtab(int, sqlite3*, void*, int, const char*const*, 
+SQLITE_PRIVATE int sqlite3Fts3InitVtab(int, sqlite3*, void*, int, const char*const*,
                         sqlite3_vtab **, char **);
 
 /* fts3_write.c */
@@ -100011,7 +100011,7 @@ SQLITE_PRIVATE int sqlite3Fts3ExprNearTrim(Fts3Expr *, Fts3Expr *, int);
 /* fts3_tokenizer.c */
 SQLITE_PRIVATE const char *sqlite3Fts3NextToken(const char *, int *);
 SQLITE_PRIVATE int sqlite3Fts3InitHashTable(sqlite3 *, Fts3Hash *, const char *);
-SQLITE_PRIVATE int sqlite3Fts3InitTokenizer(Fts3Hash *pHash, 
+SQLITE_PRIVATE int sqlite3Fts3InitTokenizer(Fts3Hash *pHash,
   const char *, sqlite3_tokenizer **, const char **, char **
 );
 
@@ -100023,7 +100023,7 @@ SQLITE_PRIVATE void sqlite3Fts3Snippet(sqlite3_context *, Fts3Cursor *, const ch
 SQLITE_PRIVATE void sqlite3Fts3Matchinfo(sqlite3_context *, Fts3Cursor *);
 
 /* fts3_expr.c */
-SQLITE_PRIVATE int sqlite3Fts3ExprParse(sqlite3_tokenizer *, 
+SQLITE_PRIVATE int sqlite3Fts3ExprParse(sqlite3_tokenizer *,
   char **, int, int, const char *, int, Fts3Expr **
 );
 SQLITE_PRIVATE void sqlite3Fts3ExprFree(Fts3Expr *);
@@ -100037,11 +100037,11 @@ SQLITE_PRIVATE int sqlite3Fts3ExprInitTestInterface(sqlite3 *db);
 /************** Continuing where we left off in fts3.c ***********************/
 
 
-#ifndef SQLITE_CORE 
+#ifndef SQLITE_CORE
   SQLITE_EXTENSION_INIT1
 #endif
 
-/* 
+/*
 ** Write a 64-bit variable-length integer to memory starting at p[0].
 ** The length of data written will be between 1 and FTS3_VARINT_MAX bytes.
 ** The number of bytes written is returned.
@@ -100058,7 +100058,7 @@ SQLITE_PRIVATE int sqlite3Fts3PutVarint(char *p, sqlite_int64 v){
   return (int) (q - (unsigned char *)p);
 }
 
-/* 
+/*
 ** Read a 64-bit variable-length integer from memory starting at p[0].
 ** Return the number of bytes read, or 0 on error.
 ** The value is stored in *v.
@@ -100122,7 +100122,7 @@ SQLITE_PRIVATE void sqlite3Fts3Dequote(char *z){
     int iOut = 0;                 /* Index of next byte to write to output */
 
     /* If the first byte was a '[', then the close-quote character is a ']' */
-    if( quote=='[' ) quote = ']';  
+    if( quote=='[' ) quote = ']';
 
     while( ALWAYS(z[iIn]) ){
       if( z[iIn]==quote ){
@@ -100292,18 +100292,18 @@ static int fts3CreateTables(Fts3Table *p){
     if( zContentCols==0 ) rc = SQLITE_NOMEM;
 
     /* Create the content table */
-    fts3DbExec(&rc, db, 
+    fts3DbExec(&rc, db,
        "CREATE TABLE %Q.'%q_content'(%s)",
        p->zDb, p->zName, zContentCols
     );
     sqlite3_free(zContentCols);
   }
   /* Create other tables */
-  fts3DbExec(&rc, db, 
+  fts3DbExec(&rc, db,
       "CREATE TABLE %Q.'%q_segments'(blockid INTEGER PRIMARY KEY, block BLOB);",
       p->zDb, p->zName
   );
-  fts3DbExec(&rc, db, 
+  fts3DbExec(&rc, db,
       "CREATE TABLE %Q.'%q_segdir'("
         "level INTEGER,"
         "idx INTEGER,"
@@ -100316,11 +100316,11 @@ static int fts3CreateTables(Fts3Table *p){
       p->zDb, p->zName
   );
   if( p->bHasDocsize ){
-    fts3DbExec(&rc, db, 
+    fts3DbExec(&rc, db,
         "CREATE TABLE %Q.'%q_docsize'(docid INTEGER PRIMARY KEY, size BLOB);",
         p->zDb, p->zName
     );
-    fts3DbExec(&rc, db, 
+    fts3DbExec(&rc, db,
         "CREATE TABLE %Q.'%q_stat'(id INTEGER PRIMARY KEY, value BLOB);",
         p->zDb, p->zName
     );
@@ -100354,7 +100354,7 @@ static void fts3TableExists(
   zSql = sqlite3_mprintf(
     "SELECT 1 FROM %Q.sqlite_master WHERE name='%q%s'",
     zDb, zName, zSuffix
-  );    
+  );
   rc = sqlite3_exec(db, zSql, fts3TableExistsCallback, &res, 0);
   sqlite3_free(zSql);
   *pResult = res & 0xff;
@@ -100457,7 +100457,7 @@ static int fts3InitVtab(
   iCol = 0;
   for(i=3; i<argc; i++){
     if( argv[i]!=zTokenizer ){
-      char *z; 
+      char *z;
       int n;
       z = (char *)sqlite3Fts3NextToken(argv[i], &n);
       memcpy(zCsr, z, n);
@@ -100473,7 +100473,7 @@ static int fts3InitVtab(
     p->azColumn[0] = "content";
   }
 
-  /* If this is an xCreate call, create the underlying tables in the 
+  /* If this is an xCreate call, create the underlying tables in the
   ** database. TODO: For xConnect(), it could verify that said tables exist.
   */
   if( isCreate ){
@@ -100529,11 +100529,11 @@ static int fts3CreateMethod(
   return fts3InitVtab(1, db, pAux, argc, argv, ppVtab, pzErr);
 }
 
-/* 
+/*
 ** Implementation of the xBestIndex method for FTS3 tables. There
 ** are three possible strategies, in order of preference:
 **
-**   1. Direct lookup by rowid or docid. 
+**   1. Direct lookup by rowid or docid.
 **   2. Full-text search using a MATCH operator on a non-docid column.
 **   3. Linear scan of %_content table.
 */
@@ -100543,7 +100543,7 @@ static int fts3BestIndexMethod(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){
   int iCons = -1;                 /* Index of constraint to use */
 
   /* By default use a full table scan. This is an expensive option,
-  ** so search through the constraints to see if a more efficient 
+  ** so search through the constraints to see if a more efficient
   ** strategy is possible.
   */
   pInfo->idxNum = FTS3_FULLSCAN_SEARCH;
@@ -100553,7 +100553,7 @@ static int fts3BestIndexMethod(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){
     if( pCons->usable==0 ) continue;
 
     /* A direct lookup on the rowid or docid column. Assign a cost of 1.0. */
-    if( pCons->op==SQLITE_INDEX_CONSTRAINT_EQ 
+    if( pCons->op==SQLITE_INDEX_CONSTRAINT_EQ
      && (pCons->iColumn<0 || pCons->iColumn==p->nColumn+1 )
     ){
       pInfo->idxNum = FTS3_DOCID_SEARCH;
@@ -100565,12 +100565,12 @@ static int fts3BestIndexMethod(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){
     **
     ** If there is more than one MATCH constraint available, use the first
     ** one encountered. If there is both a MATCH constraint and a direct
-    ** rowid/docid lookup, prefer the MATCH strategy. This is done even 
+    ** rowid/docid lookup, prefer the MATCH strategy. This is done even
     ** though the rowid/docid lookup is faster than a MATCH query, selecting
-    ** it would lead to an "unable to use function MATCH in the requested 
+    ** it would lead to an "unable to use function MATCH in the requested
     ** context" error.
     */
-    if( pCons->op==SQLITE_INDEX_CONSTRAINT_MATCH 
+    if( pCons->op==SQLITE_INDEX_CONSTRAINT_MATCH
      && pCons->iColumn>=0 && pCons->iColumn<=p->nColumn
     ){
       pInfo->idxNum = FTS3_FULLTEXT_SEARCH + pCons->iColumn;
@@ -100583,7 +100583,7 @@ static int fts3BestIndexMethod(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){
   if( iCons>=0 ){
     pInfo->aConstraintUsage[iCons].argvIndex = 1;
     pInfo->aConstraintUsage[iCons].omit = 1;
-  } 
+  }
   return SQLITE_OK;
 }
 
@@ -100596,7 +100596,7 @@ static int fts3OpenMethod(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCsr){
   UNUSED_PARAMETER(pVTab);
 
   /* Allocate a buffer large enough for an Fts3Cursor structure. If the
-  ** allocation succeeds, zero it and return SQLITE_OK. Otherwise, 
+  ** allocation succeeds, zero it and return SQLITE_OK. Otherwise,
   ** if the allocation fails, return SQLITE_NOMEM.
   */
   *ppCsr = pCsr = (sqlite3_vtab_cursor *)sqlite3_malloc(sizeof(Fts3Cursor));
@@ -100672,8 +100672,8 @@ static int fts3NextMethod(sqlite3_vtab_cursor *pCursor){
 ** The buffer pointed to by argument zNode (size nNode bytes) contains the
 ** root node of a b-tree segment. The segment is guaranteed to be at least
 ** one level high (i.e. the root node is not also a leaf). If successful,
-** this function locates the leaf node of the segment that may contain the 
-** term specified by arguments zTerm and nTerm and writes its block number 
+** this function locates the leaf node of the segment that may contain the
+** term specified by arguments zTerm and nTerm and writes its block number
 ** to *piLeaf.
 **
 ** It is possible that the returned leaf node does not contain the specified
@@ -100683,7 +100683,7 @@ static int fts3NextMethod(sqlite3_vtab_cursor *pCursor){
 ** to be sure.
 **
 ** If an error occurs, an error code other than SQLITE_OK is returned.
-*/ 
+*/
 static int fts3SelectLeaf(
   Fts3Table *p,                   /* Virtual table handle */
   const char *zTerm,              /* Term to select leaves for */
@@ -100706,13 +100706,13 @@ static int fts3SelectLeaf(
 
     zCsr += sqlite3Fts3GetVarint32(zCsr, &iHeight);
     zCsr += sqlite3Fts3GetVarint(zCsr, &iChild);
-  
+
     while( zCsr<zEnd ){
       int cmp;                    /* memcmp() result */
       int nSuffix;                /* Size of term suffix */
       int nPrefix = 0;            /* Size of term prefix */
       int nBuffer;                /* Total term size */
-  
+
       /* Load the next term on the node into zBuffer */
       if( !isFirstTerm ){
         zCsr += sqlite3Fts3GetVarint32(zCsr, &nPrefix);
@@ -100732,11 +100732,11 @@ static int fts3SelectLeaf(
       memcpy(&zBuffer[nPrefix], zCsr, nSuffix);
       nBuffer = nPrefix + nSuffix;
       zCsr += nSuffix;
-  
+
       /* Compare the term we are searching for with the term just loaded from
       ** the interior node. If the specified term is greater than or equal
-      ** to the term from the interior node, then all terms on the sub-tree 
-      ** headed by node iChild are smaller than zTerm. No need to search 
+      ** to the term from the interior node, then all terms on the sub-tree
+      ** headed by node iChild are smaller than zTerm. No need to search
       ** iChild.
       **
       ** If the interior node term is larger than the specified term, then
@@ -100765,7 +100765,7 @@ static int fts3SelectLeaf(
 }
 
 /*
-** This function is used to create delta-encoded serialized lists of FTS3 
+** This function is used to create delta-encoded serialized lists of FTS3
 ** varints. Each call to this function appends a single varint to a list.
 */
 static void fts3PutDeltaVarint(
@@ -100779,7 +100779,7 @@ static void fts3PutDeltaVarint(
 }
 
 /*
-** When this function is called, *ppPoslist is assumed to point to the 
+** When this function is called, *ppPoslist is assumed to point to the
 ** start of a position-list. After it returns, *ppPoslist points to the
 ** first byte after the position-list.
 **
@@ -100791,12 +100791,12 @@ static void fts3PoslistCopy(char **pp, char **ppPoslist){
   char *pEnd = *ppPoslist;
   char c = 0;
 
-  /* The end of a position list is marked by a zero encoded as an FTS3 
+  /* The end of a position list is marked by a zero encoded as an FTS3
   ** varint. A single 0x00 byte. Except, if the 0x00 byte is preceded by
   ** a byte with the 0x80 bit set, then it is not a varint 0, but the tail
   ** of some other, multi-byte, value.
   **
-  ** The following block moves pEnd to point to the first byte that is not 
+  ** The following block moves pEnd to point to the first byte that is not
   ** immediately preceded by a byte with the 0x80 bit set. Then increments
   ** pEnd once more so that it points to the byte immediately following the
   ** last byte in the position-list.
@@ -100842,7 +100842,7 @@ static void fts3ColumnlistCopy(char **pp, char **ppPoslist){
 ** being parsed, or it may point to 1 byte past the end of the offset-list
 ** (in which case **pp will be 0x00 or 0x01).
 **
-** If *pp points past the end of the current offset list, set *pi to 
+** If *pp points past the end of the current offset list, set *pi to
 ** OFFSET_LIST_END and return. Otherwise, read the next varint from *pp,
 ** increment the current value of *pi by the value read, and set *pp to
 ** point to the next value before returning.
@@ -100861,9 +100861,9 @@ static void fts3ReadNextPos(
 
 /*
 ** If parameter iCol is not 0, write an 0x01 byte followed by the value of
-** iCol encoded as a varint to *pp. 
+** iCol encoded as a varint to *pp.
 **
-** Set *pp to point to the byte just after the last byte written before 
+** Set *pp to point to the byte just after the last byte written before
 ** returning (do not modify it if iCol==0). Return the total number of bytes
 ** written (0 if iCol==0).
 */
@@ -100911,8 +100911,8 @@ static void fts3PoslistMerge(
       p2 += n;
 
       /* At this point, both p1 and p2 point to the start of offset-lists.
-      ** An offset-list is a list of non-negative delta-encoded varints, each 
-      ** incremented by 2 before being stored. Each list is terminated by a 0 
+      ** An offset-list is a list of non-negative delta-encoded varints, each
+      ** incremented by 2 before being stored. Each list is terminated by a 0
       ** or 1 value (0x00 or 0x01). The following block merges the two lists
       ** and writes the results to buffer p. p is left pointing to the byte
       ** after the list written. No terminator (0x00 or 0x01) is written to
@@ -100921,7 +100921,7 @@ static void fts3PoslistMerge(
       fts3GetDeltaVarint(&p1, &i1);
       fts3GetDeltaVarint(&p2, &i2);
       do {
-        fts3PutDeltaVarint(&p, &iPrev, (i1<i2) ? i1 : i2); 
+        fts3PutDeltaVarint(&p, &iPrev, (i1<i2) ? i1 : i2);
         iPrev -= 2;
         if( i1==i2 ){
           fts3ReadNextPos(&p1, &i1);
@@ -100964,11 +100964,11 @@ static int fts3PoslistPhraseMerge(
   int iCol1 = 0;
   int iCol2 = 0;
   assert( *p1!=0 && *p2!=0 );
-  if( *p1==0x01 ){ 
+  if( *p1==0x01 ){
     p1++;
     p1 += sqlite3Fts3GetVarint32(p1, &iCol1);
   }
-  if( *p2==0x01 ){ 
+  if( *p2==0x01 ){
     p2++;
     p2 += sqlite3Fts3GetVarint32(p2, &iCol2);
   }
@@ -101030,8 +101030,8 @@ static int fts3PoslistPhraseMerge(
 
     /* Advance pointer p1 or p2 (whichever corresponds to the smaller of
     ** iCol1 and iCol2) so that it points to either the 0x00 that marks the
-    ** end of the position list, or the 0x01 that precedes the next 
-    ** column-number in the position list. 
+    ** end of the position list, or the 0x01 that precedes the next
+    ** column-number in the position list.
     */
     else if( iCol1<iCol2 ){
       fts3ColumnlistCopy(0, &p1);
@@ -101145,7 +101145,7 @@ static int fts3DoclistMerge(
   char *pEnd1 = &a1[n1];
   char *pEnd2 = &a2[n2];
 
-  assert( mergetype==MERGE_OR     || mergetype==MERGE_POS_OR 
+  assert( mergetype==MERGE_OR     || mergetype==MERGE_POS_OR
        || mergetype==MERGE_AND    || mergetype==MERGE_NOT
        || mergetype==MERGE_PHRASE || mergetype==MERGE_POS_PHRASE
        || mergetype==MERGE_NEAR   || mergetype==MERGE_POS_NEAR
@@ -101275,8 +101275,8 @@ static int fts3DoclistMerge(
   return SQLITE_OK;
 }
 
-/* 
-** A pointer to an instance of this structure is used as the context 
+/*
+** A pointer to an instance of this structure is used as the context
 ** argument to sqlite3Fts3SegReaderIterate()
 */
 typedef struct TermSelect TermSelect;
@@ -101337,11 +101337,11 @@ static int fts3TermSelectCb(
 
 /*
 ** This function retreives the doclist for the specified term (or term
-** prefix) from the database. 
+** prefix) from the database.
 **
-** The returned doclist may be in one of two formats, depending on the 
+** The returned doclist may be in one of two formats, depending on the
 ** value of parameter isReqPos. If isReqPos is zero, then the doclist is
-** a sorted list of delta-compressed docids. If isReqPos is non-zero, 
+** a sorted list of delta-compressed docids. If isReqPos is non-zero,
 ** then the returned list is in the same format as is stored in the
 ** database without the found length specifier at the start of on-disk
 ** doclists.
@@ -101392,7 +101392,7 @@ static int fts3TermSelect(
     if( sqlite3_column_int64(pStmt, 1)==0 ){
       /* The entire segment is stored on the root node (which must be a
       ** leaf). Do not bother inspecting any data in this case, just
-      ** create a Fts3SegReader to scan the single leaf. 
+      ** create a Fts3SegReader to scan the single leaf.
       */
       rc = sqlite3Fts3SegReaderNew(p, iAge, 0, 0, 0, zRoot, nRoot, &pNew);
     }else{
@@ -101406,10 +101406,10 @@ static int fts3TermSelect(
 
       /* The following call to ReadBlock() serves to reset the SQL statement
       ** used to retrieve blocks of data from the %_segments table. If it is
-      ** not reset here, then it may remain classified as an active statement 
-      ** by SQLite, which may lead to "DROP TABLE" or "DETACH" commands 
+      ** not reset here, then it may remain classified as an active statement
+      ** by SQLite, which may lead to "DROP TABLE" or "DETACH" commands
       ** failing.
-      */ 
+      */
       rc2 = sqlite3Fts3ReadBlock(p, 0, 0, 0);
       if( rc==SQLITE_OK ){
         rc = rc2;
@@ -101444,7 +101444,7 @@ static int fts3TermSelect(
   memset(&tsc, 0, sizeof(TermSelect));
   tsc.isReqPos = isReqPos;
 
-  filter.flags = FTS3_SEGMENT_IGNORE_EMPTY 
+  filter.flags = FTS3_SEGMENT_IGNORE_EMPTY
         | (isPrefix ? FTS3_SEGMENT_PREFIX : 0)
         | (isReqPos ? FTS3_SEGMENT_REQUIRE_POS : 0)
         | (iColumn<p->nColumn ? FTS3_SEGMENT_COLUMN_FILTER : 0);
@@ -101473,7 +101473,7 @@ finished:
 }
 
 
-/* 
+/*
 ** Return a DocList corresponding to the phrase *pPhrase.
 */
 static int fts3PhraseSelect(
@@ -101554,7 +101554,7 @@ static int fts3NearMerge(
   if( aOut==0 ){
     rc = SQLITE_NOMEM;
   }else{
-    rc = fts3DoclistMerge(mergetype, nNear+nTokenRight, nNear+nTokenLeft, 
+    rc = fts3DoclistMerge(mergetype, nNear+nTokenRight, nNear+nTokenLeft,
       aOut, pnOut, aLeft, nLeft, aRight, nRight
     );
     if( rc!=SQLITE_OK ){
@@ -101579,7 +101579,7 @@ SQLITE_PRIVATE int sqlite3Fts3ExprNearTrim(Fts3Expr *pLeft, Fts3Expr *pRight, in
     char *aOut;
     int nOut;
 
-    rc = fts3NearMerge(MERGE_POS_NEAR, nNear, 
+    rc = fts3NearMerge(MERGE_POS_NEAR, nNear,
         pLeft->pPhrase->nToken, pLeft->aDoclist, pLeft->nDoclist,
         pRight->pPhrase->nToken, pRight->aDoclist, pRight->nDoclist,
         &aOut, &nOut
@@ -101589,7 +101589,7 @@ SQLITE_PRIVATE int sqlite3Fts3ExprNearTrim(Fts3Expr *pLeft, Fts3Expr *pRight, in
     pRight->aDoclist = aOut;
     pRight->nDoclist = nOut;
 
-    rc = fts3NearMerge(MERGE_POS_NEAR, nNear, 
+    rc = fts3NearMerge(MERGE_POS_NEAR, nNear,
         pRight->pPhrase->nToken, pRight->aDoclist, pRight->nDoclist,
         pLeft->pPhrase->nToken, pLeft->aDoclist, pLeft->nDoclist,
         &aOut, &nOut
@@ -101619,12 +101619,12 @@ static int evalFts3Expr(
   *pnOut = 0;
 
   if( pExpr ){
-    assert( pExpr->eType==FTSQUERY_PHRASE 
-         || pExpr->eType==FTSQUERY_NEAR 
+    assert( pExpr->eType==FTSQUERY_PHRASE
+         || pExpr->eType==FTSQUERY_NEAR
          || isReqPos==0
     );
     if( pExpr->eType==FTSQUERY_PHRASE ){
-      rc = fts3PhraseSelect(p, pExpr->pPhrase, 
+      rc = fts3PhraseSelect(p, pExpr->pPhrase,
           isReqPos || (pExpr->pParent && pExpr->pParent->eType==FTSQUERY_NEAR),
           paOut, pnOut
       );
@@ -101637,7 +101637,7 @@ static int evalFts3Expr(
       if( 0==(rc = evalFts3Expr(p, pExpr->pRight, &aRight, &nRight, isReqPos))
        && 0==(rc = evalFts3Expr(p, pExpr->pLeft, &aLeft, &nLeft, isReqPos))
       ){
-        assert( pExpr->eType==FTSQUERY_NEAR || pExpr->eType==FTSQUERY_OR     
+        assert( pExpr->eType==FTSQUERY_NEAR || pExpr->eType==FTSQUERY_OR
             || pExpr->eType==FTSQUERY_AND  || pExpr->eType==FTSQUERY_NOT
         );
         switch( pExpr->eType ){
@@ -101645,19 +101645,19 @@ static int evalFts3Expr(
             Fts3Expr *pLeft;
             Fts3Expr *pRight;
             int mergetype = isReqPos ? MERGE_POS_NEAR : MERGE_NEAR;
-           
+
             if( pExpr->pParent && pExpr->pParent->eType==FTSQUERY_NEAR ){
               mergetype = MERGE_POS_NEAR;
             }
             pLeft = pExpr->pLeft;
-            while( pLeft->eType==FTSQUERY_NEAR ){ 
+            while( pLeft->eType==FTSQUERY_NEAR ){
               pLeft=pLeft->pRight;
             }
             pRight = pExpr->pRight;
             assert( pRight->eType==FTSQUERY_PHRASE );
             assert( pLeft->eType==FTSQUERY_PHRASE );
 
-            rc = fts3NearMerge(mergetype, pExpr->nNear, 
+            rc = fts3NearMerge(mergetype, pExpr->nNear,
                 pLeft->pPhrase->nToken, aLeft, nLeft,
                 pRight->pPhrase->nToken, aRight, nRight,
                 paOut, pnOut
@@ -101773,7 +101773,7 @@ static int fts3FilterMethod(
       return SQLITE_NOMEM;
     }
 
-    rc = sqlite3Fts3ExprParse(p->pTokenizer, p->azColumn, p->nColumn, 
+    rc = sqlite3Fts3ExprParse(p->pTokenizer, p->azColumn, p->nColumn,
         iCol, zQuery, -1, &pCsr->pExpr
     );
     if( rc!=SQLITE_OK ){
@@ -101793,15 +101793,15 @@ static int fts3FilterMethod(
   return fts3NextMethod(pCursor);
 }
 
-/* 
-** This is the xEof method of the virtual table. SQLite calls this 
+/*
+** This is the xEof method of the virtual table. SQLite calls this
 ** routine to find out if it has reached the end of a result set.
 */
 static int fts3EofMethod(sqlite3_vtab_cursor *pCursor){
   return ((Fts3Cursor *)pCursor)->isEof;
 }
 
-/* 
+/*
 ** This is the xRowid method. The SQLite core calls this routine to
 ** retrieve the rowid for the current row of the result set. fts3
 ** exposes %_content.docid as the rowid for the virtual table. The
@@ -101817,7 +101817,7 @@ static int fts3RowidMethod(sqlite3_vtab_cursor *pCursor, sqlite_int64 *pRowid){
   return SQLITE_OK;
 }
 
-/* 
+/*
 ** This is the xColumn method, called by SQLite to request a value from
 ** the row that the supplied cursor currently points to.
 */
@@ -101834,7 +101834,7 @@ static int fts3ColumnMethod(
   assert( iCol>=0 && iCol<=p->nColumn+1 );
 
   if( iCol==p->nColumn+1 ){
-    /* This call is a request for the "docid" column. Since "docid" is an 
+    /* This call is a request for the "docid" column. Since "docid" is an
     ** alias for "rowid", use the xRowid() method to obtain the value.
     */
     sqlite3_int64 iRowid;
@@ -101855,8 +101855,8 @@ static int fts3ColumnMethod(
   return rc;
 }
 
-/* 
-** This function is the implementation of the xUpdate callback used by 
+/*
+** This function is the implementation of the xUpdate callback used by
 ** FTS3 virtual tables. It is invoked by SQLite each time a row is to be
 ** inserted, updated or deleted.
 */
@@ -101970,7 +101970,7 @@ SQLITE_PRIVATE char *sqlite3Fts3FindPositions(
 ** offsets() and optimize() SQL functions.
 **
 ** If the value passed as the third argument is a blob of size
-** sizeof(Fts3Cursor*), then the blob contents are copied to the 
+** sizeof(Fts3Cursor*), then the blob contents are copied to the
 ** output variable *ppCsr and SQLITE_OK is returned. Otherwise, an error
 ** message is written to context pContext and SQLITE_ERROR returned. The
 ** string passed via zFunc is used as part of the error message.
@@ -101982,7 +101982,7 @@ static int fts3FunctionArg(
   Fts3Cursor **ppCsr         /* OUT: Store cursor handle here */
 ){
   Fts3Cursor *pRet;
-  if( sqlite3_value_type(pVal)!=SQLITE_BLOB 
+  if( sqlite3_value_type(pVal)!=SQLITE_BLOB
    || sqlite3_value_bytes(pVal)!=sizeof(Fts3Cursor *)
   ){
     char *zErr = sqlite3_mprintf("illegal first argument to %s", zFunc);
@@ -102016,7 +102016,7 @@ static void fts3SnippetFunc(
   assert( nVal>=1 );
 
   if( nVal>6 ){
-    sqlite3_result_error(pContext, 
+    sqlite3_result_error(pContext,
         "wrong number of arguments to function snippet()", -1);
     return;
   }
@@ -102056,8 +102056,8 @@ static void fts3OffsetsFunc(
   }
 }
 
-/* 
-** Implementation of the special optimize() function for FTS3. This 
+/*
+** Implementation of the special optimize() function for FTS3. This
 ** function merges all segments in the database to a single segment.
 ** Example usage is:
 **
@@ -102164,7 +102164,7 @@ static int fts3RenameMethod(
   Fts3Table *p = (Fts3Table *)pVtab;
   sqlite3 *db;                    /* Database connection */
   int rc;                         /* Return Code */
+
   db = p->db;
   rc = SQLITE_OK;
   fts3DbExec(&rc, db,
@@ -102273,7 +102273,7 @@ SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db){
   /* Load the built-in tokenizers into the hash table */
   if( rc==SQLITE_OK ){
     if( sqlite3Fts3HashInsert(pHash, "simple", 7, (void *)pSimple)
-     || sqlite3Fts3HashInsert(pHash, "porter", 7, (void *)pPorter) 
+     || sqlite3Fts3HashInsert(pHash, "porter", 7, (void *)pPorter)
 #ifdef SQLITE_ENABLE_ICU
      || (pIcu && sqlite3Fts3HashInsert(pHash, "icu", 4, (void *)pIcu))
 #endif
@@ -102288,11 +102288,11 @@ SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db){
   }
 #endif
 
-  /* Create the virtual table wrapper around the hash-table and overload 
+  /* Create the virtual table wrapper around the hash-table and overload
   ** the two scalar functions. If this is successful, register the
   ** module with sqlite.
   */
-  if( SQLITE_OK==rc 
+  if( SQLITE_OK==rc
    && SQLITE_OK==(rc = sqlite3Fts3InitHashTable(db, pHash, "fts3_tokenizer"))
    && SQLITE_OK==(rc = sqlite3_overload_function(db, "snippet", -1))
    && SQLITE_OK==(rc = sqlite3_overload_function(db, "offsets", 1))
@@ -102321,7 +102321,7 @@ SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db){
 
 #if !SQLITE_CORE
 SQLITE_API int sqlite3_extension_init(
-  sqlite3 *db, 
+  sqlite3 *db,
   char **pzErrMsg,
   const sqlite3_api_routines *pApi
 ){
@@ -102347,14 +102347,14 @@ SQLITE_API int sqlite3_extension_init(
 ******************************************************************************
 **
 ** This module contains code that implements a parser for fts3 query strings
-** (the right-hand argument to the MATCH operator). Because the supported 
+** (the right-hand argument to the MATCH operator). Because the supported
 ** syntax is relatively simple, the whole tokenizer/parser system is
-** hand-coded. 
+** hand-coded.
 */
 #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3)
 
 /*
-** By default, this module parses the legacy syntax that has been 
+** By default, this module parses the legacy syntax that has been
 ** traditionally used by fts3. Or, if SQLITE_ENABLE_FTS3_PARENTHESIS
 ** is defined, then it uses the new syntax. The differences between
 ** the new and the old syntaxes are:
@@ -102363,7 +102363,7 @@ SQLITE_API int sqlite3_extension_init(
 **
 **  b) The new syntax supports the AND and NOT operators. The old does not.
 **
-**  c) The old syntax supports the "-" token qualifier. This is not 
+**  c) The old syntax supports the "-" token qualifier. This is not
 **     supported by the new syntax (it is replaced by the NOT operator).
 **
 **  d) When using the old syntax, the OR operator has a greater precedence
@@ -102372,7 +102372,7 @@ SQLITE_API int sqlite3_extension_init(
 **
 ** If compiled with SQLITE_TEST defined, then this module exports the
 ** symbol "int sqlite3_fts3_enable_parentheses". Setting this variable
-** to zero causes the module to use the old syntax. If it is set to 
+** to zero causes the module to use the old syntax. If it is set to
 ** non-zero the new syntax is activated. This is so both syntaxes can
 ** be tested using a single build of testfixture.
 **
@@ -102401,7 +102401,7 @@ SQLITE_API int sqlite3_extension_init(
 #ifdef SQLITE_TEST
 SQLITE_API int sqlite3_fts3_enable_parentheses = 0;
 #else
-# ifdef SQLITE_ENABLE_FTS3_PARENTHESIS 
+# ifdef SQLITE_ENABLE_FTS3_PARENTHESIS
 #  define sqlite3_fts3_enable_parentheses 1
 # else
 #  define sqlite3_fts3_enable_parentheses 0
@@ -102425,7 +102425,7 @@ struct ParseContext {
 };
 
 /*
-** This function is equivalent to the standard isspace() function. 
+** This function is equivalent to the standard isspace() function.
 **
 ** The standard isspace() can be awkward to use safely, because although it
 ** is defined to accept an argument of type int, its behaviour when passed
@@ -102445,7 +102445,7 @@ static int fts3isspace(char c){
 ** structure of type FTSQUERY_PHRASE containing a phrase consisting of this
 ** single token and set *ppExpr to point to it. If the end of the buffer is
 ** reached before a token is found, set *ppExpr to zero. It is the
-** responsibility of the caller to eventually deallocate the allocated 
+** responsibility of the caller to eventually deallocate the allocated
 ** Fts3Expr structure (if any) by passing it to sqlite3_free().
 **
 ** Return SQLITE_OK if successful, or SQLITE_NOMEM if a memory allocation
@@ -102502,7 +102502,7 @@ static int getNextToken(
 
     pModule->xClose(pCursor);
   }
-  
+
   *pnConsumed = nConsumed;
   *ppExpr = pRet;
   return rc;
@@ -102525,7 +102525,7 @@ static void *fts3ReallocOrFree(void *pOrig, int nNew){
 ** Buffer zInput, length nInput, contains the contents of a quoted string
 ** that appeared as part of an fts3 query expression. Neither quote character
 ** is included in the buffer. This function attempts to tokenize the entire
-** input buffer and create an Fts3Expr structure of type FTSQUERY_PHRASE 
+** input buffer and create an Fts3Expr structure of type FTSQUERY_PHRASE
 ** containing the results.
 **
 ** If successful, SQLITE_OK is returned and *ppExpr set to point at the
@@ -102629,7 +102629,7 @@ no_mem:
 static int fts3ExprParse(ParseContext *, const char *, int, Fts3Expr **, int *);
 
 /*
-** The output variable *ppExpr is populated with an allocated Fts3Expr 
+** The output variable *ppExpr is populated with an allocated Fts3Expr
 ** structure, or set to 0 if the end of the input buffer is reached.
 **
 ** Returns an SQLite error code. SQLITE_OK if everything works, SQLITE_NOMEM
@@ -102663,7 +102663,7 @@ static int getNextNode(
   int nInput = n;
 
   /* Skip over any whitespace before checking for a keyword, an open or
-  ** close bracket, or a quoted string. 
+  ** close bracket, or a quoted string.
   */
   while( nInput>0 && fts3isspace(*zInput) ){
     nInput--;
@@ -102699,10 +102699,10 @@ static int getNextNode(
 
       /* At this point this is probably a keyword. But for that to be true,
       ** the next byte must contain either whitespace, an open or close
-      ** parenthesis, a quote character, or EOF. 
+      ** parenthesis, a quote character, or EOF.
       */
       cNext = zInput[nKey];
-      if( fts3isspace(cNext) 
+      if( fts3isspace(cNext)
        || cNext=='"' || cNext=='(' || cNext==')' || cNext==0
       ){
         pRet = (Fts3Expr *)sqlite3_malloc(sizeof(Fts3Expr));
@@ -102736,7 +102736,7 @@ static int getNextNode(
       *pnConsumed = (int)((zInput - z) + 1 + nConsumed);
       return rc;
     }
-  
+
     /* Check for a close bracket. */
     if( *zInput==')' ){
       pParse->nNest--;
@@ -102760,15 +102760,15 @@ static int getNextNode(
   }
 
 
-  /* If control flows to this point, this must be a regular token, or 
+  /* If control flows to this point, this must be a regular token, or
   ** the end of the input. Read a regular token using the sqlite3_tokenizer
   ** interface. Before doing so, figure out if there is an explicit
-  ** column specifier for the token. 
+  ** column specifier for the token.
   **
   ** TODO: Strangely, it is not possible to associate a column specifier
   ** with a quoted phrase, only with a single token. Not sure if this was
   ** an implementation artifact or an intentional decision when fts3 was
-  ** first implemented. Whichever it was, this module duplicates the 
+  ** first implemented. Whichever it was, this module duplicates the
   ** limitation.
   */
   iCol = pParse->iDefaultCol;
@@ -102776,8 +102776,8 @@ static int getNextNode(
   for(ii=0; ii<pParse->nCol; ii++){
     const char *zStr = pParse->azCol[ii];
     int nStr = (int)strlen(zStr);
-    if( nInput>nStr && zInput[nStr]==':' 
-     && sqlite3_strnicmp(zStr, zInput, nStr)==0 
+    if( nInput>nStr && zInput[nStr]==':'
+     && sqlite3_strnicmp(zStr, zInput, nStr)==0
     ){
       iCol = ii;
       iColLen = (int)((zInput - z) + nStr + 1);
@@ -102822,7 +102822,7 @@ static int opPrecedence(Fts3Expr *p){
 }
 
 /*
-** Argument ppHead contains a pointer to the current head of a query 
+** Argument ppHead contains a pointer to the current head of a query
 ** expression tree being parsed. pPrev is the expression node most recently
 ** inserted into the tree. This function adds pNew, which is always a binary
 ** operator node, into the expression tree based on the relative precedence
@@ -102852,7 +102852,7 @@ static void insertBinaryOperator(
 
 /*
 ** Parse the fts3 query expression found in buffer z, length n. This function
-** returns either when the end of the buffer is reached or an unmatched 
+** returns either when the end of the buffer is reached or an unmatched
 ** closing bracket - ')' - is encountered.
 **
 ** If successful, SQLITE_OK is returned, *ppExpr is set to point to the
@@ -102881,8 +102881,8 @@ static int fts3ExprParse(
     if( rc==SQLITE_OK ){
       int isPhrase;
 
-      if( !sqlite3_fts3_enable_parentheses 
-       && p->eType==FTSQUERY_PHRASE && p->pPhrase->isNot 
+      if( !sqlite3_fts3_enable_parentheses
+       && p->eType==FTSQUERY_PHRASE && p->pPhrase->isNot
       ){
         /* Create an implicit NOT operator. */
         Fts3Expr *pNot = sqlite3_malloc(sizeof(Fts3Expr));
@@ -102914,7 +102914,7 @@ static int fts3ExprParse(
           rc = SQLITE_ERROR;
           goto exprparse_out;
         }
-  
+
         if( isPhrase && !isRequirePhrase ){
           /* Insert an implicit AND operator. */
           Fts3Expr *pAnd;
@@ -102948,7 +102948,7 @@ static int fts3ExprParse(
           rc = SQLITE_ERROR;
           goto exprparse_out;
         }
-  
+
         if( isPhrase ){
           if( pRet ){
             assert( pPrev && pPrev->pLeft && pPrev->pRight==0 );
@@ -103016,7 +103016,7 @@ exprparse_out:
 ** The first parameter, pTokenizer, is passed the fts3 tokenizer module to
 ** use to normalize query tokens while parsing the expression. The azCol[]
 ** array, which is assumed to contain nCol entries, should contain the names
-** of each column in the target fts3 table, in order from left to right. 
+** of each column in the target fts3 table, in order from left to right.
 ** Column names must be nul-terminated strings.
 **
 ** The iDefaultCol parameter should be passed the index of the table column
@@ -103084,8 +103084,8 @@ SQLITE_PRIVATE void sqlite3Fts3ExprFree(Fts3Expr *p){
 ** Function to query the hash-table of tokenizers (see README.tokenizers).
 */
 static int queryTestTokenizer(
-  sqlite3 *db, 
-  const char *zName,  
+  sqlite3 *db,
+  const char *zName,
   const sqlite3_tokenizer_module **pp
 ){
   int rc;
@@ -103111,7 +103111,7 @@ static int queryTestTokenizer(
 /*
 ** This function is part of the test interface for the query parser. It
 ** writes a text representation of the query expression pExpr into the
-** buffer pointed to by argument zBuf. It is assumed that zBuf is large 
+** buffer pointed to by argument zBuf. It is assumed that zBuf is large
 ** enough to store the required text representation.
 */
 static void exprToString(Fts3Expr *pExpr, char *zBuf){
@@ -103153,7 +103153,7 @@ static void exprToString(Fts3Expr *pExpr, char *zBuf){
 }
 
 /*
-** This is the implementation of a scalar SQL function used to test the 
+** This is the implementation of a scalar SQL function used to test the
 ** expression parser. It should be called as follows:
 **
 **   fts3_exprtest(<tokenizer>, <expr>, <column 1>, ...);
@@ -103183,7 +103183,7 @@ static void fts3ExprTest(
   sqlite3 *db = sqlite3_context_db_handle(context);
 
   if( argc<3 ){
-    sqlite3_result_error(context, 
+    sqlite3_result_error(context,
         "Usage: fts3_exprtest(tokenizer, expr, col1, ...", -1
     );
     return;
@@ -103242,8 +103242,8 @@ exprtest_out:
 }
 
 /*
-** Register the query expression parser test function fts3_exprtest() 
-** with database connection db. 
+** Register the query expression parser test function fts3_exprtest()
+** with database connection db.
 */
 SQLITE_PRIVATE int sqlite3Fts3ExprInitTestInterface(sqlite3* db){
   return sqlite3_create_function(
@@ -103303,8 +103303,8 @@ static void fts3HashFree(void *p){
 ** fields of the Hash structure.
 **
 ** "pNew" is a pointer to the hash table that is to be initialized.
-** keyClass is one of the constants 
-** FTS3_HASH_BINARY or FTS3_HASH_STRING.  The value of keyClass 
+** keyClass is one of the constants
+** FTS3_HASH_BINARY or FTS3_HASH_STRING.  The value of keyClass
 ** determines what kind of key the hash table will use.  "copyKey" is
 ** true if the hash table should make its own private copy of keys and
 ** false if it should just use the supplied pointer.
@@ -103381,7 +103381,7 @@ static int fts3BinCompare(const void *pKey1, int n1, const void *pKey2, int n2){
 /*
 ** Return a pointer to the appropriate hash function given the key class.
 **
-** The C syntax in this function definition may be unfamilar to some 
+** The C syntax in this function definition may be unfamilar to some
 ** programmers, so we provide the following additional explanation:
 **
 ** The name of the function is "ftsHashFunction".  The function takes a
@@ -103441,7 +103441,7 @@ static void fts3HashInsertElement(
 
 
 /* Resize the hash table so that it cantains "new_size" buckets.
-** "new_size" must be a power of 2.  The hash table might fail 
+** "new_size" must be a power of 2.  The hash table might fail
 ** to resize if sqliteMalloc() fails.
 **
 ** Return non-zero if a memory allocation error occurs.
@@ -103486,7 +103486,7 @@ static Fts3HashElem *fts3FindElementByHash(
     count = pEntry->count;
     xCompare = ftsCompareFunction(pH->keyClass);
     while( count-- && elem ){
-      if( (*xCompare)(elem->pKey,elem->nKey,pKey,nKey)==0 ){ 
+      if( (*xCompare)(elem->pKey,elem->nKey,pKey,nKey)==0 ){
         return elem;
       }
       elem = elem->next;
@@ -103505,7 +103505,7 @@ static void fts3RemoveElementByHash(
 ){
   struct _fts3ht *pEntry;
   if( elem->prev ){
-    elem->prev->next = elem->next; 
+    elem->prev->next = elem->next;
   }else{
     pH->first = elem->next;
   }
@@ -103533,8 +103533,8 @@ static void fts3RemoveElementByHash(
 }
 
 SQLITE_PRIVATE Fts3HashElem *sqlite3Fts3HashFindElem(
-  const Fts3Hash *pH, 
-  const void *pKey, 
+  const Fts3Hash *pH,
+  const void *pKey,
   int nKey
 ){
   int h;                          /* A hash on key */
@@ -103548,7 +103548,7 @@ SQLITE_PRIVATE Fts3HashElem *sqlite3Fts3HashFindElem(
   return fts3FindElementByHash(pH,pKey,nKey, h & (pH->htsize-1));
 }
 
-/* 
+/*
 ** Attempt to locate an element of the hash table pH with a key
 ** that matches pKey,nKey.  Return the data for this element if it is
 ** found, or NULL if there is no match.
@@ -103717,7 +103717,7 @@ static int porterDestroy(sqlite3_tokenizer *pTokenizer){
 /*
 ** Prepare to begin tokenizing a particular string.  The input
 ** string to be tokenized is zInput[0..nInput-1].  A cursor
-** used to incrementally tokenize this string is returned in 
+** used to incrementally tokenize this string is returned in
 ** *ppCursor.
 */
 static int porterOpen(
@@ -103770,7 +103770,7 @@ static const char cType[] = {
 /*
 ** isConsonant() and isVowel() determine if their first character in
 ** the string they point to is a consonant or a vowel, according
-** to Porter ruls.  
+** to Porter ruls.
 **
 ** A consonate is any letter other than 'a', 'e', 'i', 'o', or 'u'.
 ** 'Y' is a consonant unless it follows another consonant,
@@ -103890,11 +103890,11 @@ static int star_oh(const char *z){
 
 /*
 ** If the word ends with zFrom and xCond() is true for the stem
-** of the word that preceeds the zFrom ending, then change the 
+** of the word that preceeds the zFrom ending, then change the
 ** ending to zTo.
 **
 ** The input word *pz and zFrom are both in reverse order.  zTo
-** is in normal order. 
+** is in normal order.
 **
 ** Return TRUE if zFrom matches.  Return FALSE if zFrom does not
 ** match.  Not that TRUE is returned even if xCond() fails and
@@ -103963,9 +103963,9 @@ static void copy_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){
 ** word contains digits, 3 bytes are taken from the beginning and
 ** 3 bytes from the end.  For long words without digits, 10 bytes
 ** are taken from each end.  US-ASCII case folding still applies.
-** 
-** If the input word contains not digits but does characters not 
-** in [a-zA-Z] then no stemming is attempted and this routine just 
+**
+** If the input word contains not digits but does characters not
+** in [a-zA-Z] then no stemming is attempted and this routine just
 ** copies the input into the input into the output with US-ASCII
 ** case folding.
 **
@@ -104010,11 +104010,11 @@ static void porter_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){
     }
   }
 
-  /* Step 1b */  
+  /* Step 1b */
   z2 = z;
   if( stem(&z, "dee", "ee", m_gt_0) ){
     /* Do nothing.  The work was all in the test */
-  }else if( 
+  }else if(
      (stem(&z, "gni", "", hasVowel) || stem(&z, "de", "", hasVowel))
       && z!=z2
   ){
@@ -104313,7 +104313,7 @@ SQLITE_PRIVATE void sqlite3Fts3PorterTokenizerModule(
 
 
 /*
-** Implementation of the SQL scalar function for accessing the underlying 
+** Implementation of the SQL scalar function for accessing the underlying
 ** hash table. This function may be called as follows:
 **
 **   SELECT <function-name>(<key-name>);
@@ -104486,7 +104486,7 @@ SQLITE_PRIVATE int sqlite3Fts3InitTokenizer(
     if( rc!=SQLITE_OK ){
       *pzErr = sqlite3_mprintf("unknown tokenizer");
     }else{
-      (*ppTok)->pModule = m; 
+      (*ppTok)->pModule = m;
     }
     sqlite3_free((void *)aArg);
   }
@@ -104500,7 +104500,7 @@ SQLITE_PRIVATE int sqlite3Fts3InitTokenizer(
 
 
 /*
-** Implementation of a special SQL scalar function for testing tokenizers 
+** Implementation of a special SQL scalar function for testing tokenizers
 ** designed to be used in concert with the Tcl testing framework. This
 ** function must be called with two arguments:
 **
@@ -104513,9 +104513,9 @@ SQLITE_PRIVATE int sqlite3Fts3InitTokenizer(
 **
 ** The return value is a string that may be interpreted as a Tcl
 ** list. For each token in the <input-string>, three elements are
-** added to the returned list. The first is the token position, the 
+** added to the returned list. The first is the token position, the
 ** second is the token text (folded, stemmed, etc.) and the third is the
-** substring of <input-string> associated with the token. For example, 
+** substring of <input-string> associated with the token. For example,
 ** using the built-in "simple" tokenizer:
 **
 **   SELECT fts_tokenizer_test('simple', 'I don't see how');
@@ -104523,7 +104523,7 @@ SQLITE_PRIVATE int sqlite3Fts3InitTokenizer(
 ** will return the string:
 **
 **   "{0 i I 1 dont don't 2 see see 3 how how}"
-**   
+**
 */
 static void testFunc(
   sqlite3_context *context,
@@ -104615,8 +104615,8 @@ finish:
 
 static
 int registerTokenizer(
-  sqlite3 *db, 
-  char *zName, 
+  sqlite3 *db,
+  char *zName,
   const sqlite3_tokenizer_module *p
 ){
   int rc;
@@ -104637,8 +104637,8 @@ int registerTokenizer(
 
 static
 int queryTokenizer(
-  sqlite3 *db, 
-  char *zName,  
+  sqlite3 *db,
+  char *zName,
   const sqlite3_tokenizer_module **pp
 ){
   int rc;
@@ -104719,23 +104719,23 @@ static void intTestFunc(
 /*
 ** Set up SQL objects in database db used to access the contents of
 ** the hash table pointed to by argument pHash. The hash table must
-** been initialised to use string keys, and to take a private copy 
+** been initialised to use string keys, and to take a private copy
 ** of the key when a value is inserted. i.e. by a call similar to:
 **
 **    sqlite3Fts3HashInit(pHash, FTS3_HASH_STRING, 1);
 **
 ** This function adds a scalar function (see header comment above
 ** scalarFunc() in this file for details) and, if ENABLE_TABLE is
-** defined at compilation time, a temporary virtual table (see header 
-** comment above struct HashTableVtab) to the database schema. Both 
+** defined at compilation time, a temporary virtual table (see header
+** comment above struct HashTableVtab) to the database schema. Both
 ** provide read/write access to the contents of *pHash.
 **
 ** The third argument to this function, zName, is used as the name
 ** of both the scalar and, if created, the virtual table.
 */
 SQLITE_PRIVATE int sqlite3Fts3InitHashTable(
-  sqlite3 *db, 
-  Fts3Hash *pHash, 
+  sqlite3 *db,
+  Fts3Hash *pHash,
   const char *zName
 ){
   int rc = SQLITE_OK;
@@ -104876,7 +104876,7 @@ static int simpleDestroy(sqlite3_tokenizer *pTokenizer){
 /*
 ** Prepare to begin tokenizing a particular string.  The input
 ** string to be tokenized is pInput[0..nBytes-1].  A cursor
-** used to incrementally tokenize this string is returned in 
+** used to incrementally tokenize this string is returned in
 ** *ppCursor.
 */
 static int simpleOpen(
@@ -105018,7 +105018,7 @@ SQLITE_PRIVATE void sqlite3Fts3SimpleTokenizerModule(
 ** This file is part of the SQLite FTS3 extension module. Specifically,
 ** this file contains code to insert, update and delete rows from FTS3
 ** tables. It also contains code to merge FTS3 b-tree segments. Some
-** of the sub-routines used to merge segments are also used by the query 
+** of the sub-routines used to merge segments are also used by the query
 ** code in fts3.c.
 */
 
@@ -105137,7 +105137,7 @@ struct SegmentNode {
 */
 #define SQL_DELETE_CONTENT             0
 #define SQL_IS_EMPTY                   1
-#define SQL_DELETE_ALL_CONTENT         2 
+#define SQL_DELETE_ALL_CONTENT         2
 #define SQL_DELETE_ALL_SEGMENTS        3
 #define SQL_DELETE_ALL_SEGDIR          4
 #define SQL_DELETE_ALL_DOCSIZE         5
@@ -105168,7 +105168,7 @@ struct SegmentNode {
 ** Otherwise, an SQLite error code is returned and *pp is set to 0.
 **
 ** If argument apVal is not NULL, then it must point to an array with
-** at least as many entries as the requested statement has bound 
+** at least as many entries as the requested statement has bound
 ** parameters. The values are bound to the statements parameters before
 ** returning.
 */
@@ -105192,7 +105192,7 @@ static int fts3SqlStmt(
 /* 10 */  "SELECT coalesce((SELECT max(blockid) FROM %Q.'%q_segments') + 1, 1)",
 /* 11 */  "INSERT INTO %Q.'%q_segdir' VALUES(?,?,?,?,?,?)",
 
-          /* Return segments in order from oldest to newest.*/ 
+          /* Return segments in order from oldest to newest.*/
 /* 12 */  "SELECT idx, start_block, leaves_end_block, end_block, root "
             "FROM %Q.'%q_segdir' WHERE level = ? ORDER BY idx ASC",
 /* 13 */  "SELECT idx, start_block, leaves_end_block, end_block, root "
@@ -105216,12 +105216,12 @@ static int fts3SqlStmt(
 
   assert( SizeofArray(azSql)==SizeofArray(p->aStmt) );
   assert( eStmt<SizeofArray(azSql) && eStmt>=0 );
-  
+
   pStmt = p->aStmt[eStmt];
   if( !pStmt ){
     char *zSql;
     if( eStmt==SQL_CONTENT_INSERT ){
-      int i;                      /* Iterator variable */  
+      int i;                      /* Iterator variable */
       char *zVarlist;             /* The "?, ?, ..." string */
       zVarlist = (char *)sqlite3_malloc(2*p->nColumn+2);
       if( !zVarlist ){
@@ -105275,7 +105275,7 @@ static void fts3SqlExec(
   sqlite3_stmt *pStmt;
   int rc;
   if( *pRC ) return;
-  rc = fts3SqlStmt(p, eStmt, &pStmt, apVal); 
+  rc = fts3SqlStmt(p, eStmt, &pStmt, apVal);
   if( rc==SQLITE_OK ){
     sqlite3_step(pStmt);
     rc = sqlite3_reset(pStmt);
@@ -105286,14 +105286,14 @@ static void fts3SqlExec(
 
 /*
 ** Read a single block from the %_segments table. If the specified block
-** does not exist, return SQLITE_CORRUPT. If some other error (malloc, IO 
+** does not exist, return SQLITE_CORRUPT. If some other error (malloc, IO
 ** etc.) occurs, return the appropriate SQLite error code.
 **
 ** Otherwise, if successful, set *pzBlock to point to a buffer containing
 ** the block read from the database, and *pnBlock to the size of the read
 ** block in bytes.
 **
-** WARNING: The returned buffer is only valid until the next call to 
+** WARNING: The returned buffer is only valid until the next call to
 ** sqlite3Fts3ReadBlock().
 */
 SQLITE_PRIVATE int sqlite3Fts3ReadBlock(
@@ -105309,11 +105309,11 @@ SQLITE_PRIVATE int sqlite3Fts3ReadBlock(
 
   if( pzBlock ){
     sqlite3_bind_int64(pStmt, 1, iBlock);
-    rc = sqlite3_step(pStmt); 
+    rc = sqlite3_step(pStmt);
     if( rc!=SQLITE_ROW ){
       return (rc==SQLITE_DONE ? SQLITE_CORRUPT : rc);
     }
-  
+
     *pnBlock = sqlite3_column_bytes(pStmt, 0);
     *pzBlock = (char *)sqlite3_column_blob(pStmt, 0);
     if( sqlite3_column_type(pStmt, 0)!=SQLITE_BLOB ){
@@ -105326,7 +105326,7 @@ SQLITE_PRIVATE int sqlite3Fts3ReadBlock(
 /*
 ** Set *ppStmt to a statement handle that may be used to iterate through
 ** all rows in the %_segdir table, from oldest to newest. If successful,
-** return SQLITE_OK. If an error occurs while preparing the statement, 
+** return SQLITE_OK. If an error occurs while preparing the statement,
 ** return an SQLite error code.
 **
 ** There is only ever one instance of this SQL statement compiled for
@@ -105494,7 +105494,7 @@ static int fts3PendingTermsAdd(
       && SQLITE_OK==(rc = xNext(pCsr, &zToken, &nToken, &iStart, &iEnd, &iPos))
   ){
     PendingList *pList;
+
     if( iPos>=nWord ) nWord = iPos+1;
 
     /* Positions cannot be negative; we use -1 as a terminator internally.
@@ -105511,7 +105511,7 @@ static int fts3PendingTermsAdd(
     }
     if( fts3PendingListAppend(&pList, p->iPrevDocid, iCol, iPos, &rc) ){
       if( pList==fts3HashInsert(&p->pendingTerms, zToken, nToken, pList) ){
-        /* Malloc failed while inserting the new entry. This can only 
+        /* Malloc failed while inserting the new entry. This can only
         ** happen if there was no previous entry for this token.
         */
         assert( 0==fts3HashFind(&p->pendingTerms, zToken, nToken) );
@@ -105529,8 +105529,8 @@ static int fts3PendingTermsAdd(
   return (rc==SQLITE_DONE ? SQLITE_OK : rc);
 }
 
-/* 
-** Calling this function indicates that subsequent calls to 
+/*
+** Calling this function indicates that subsequent calls to
 ** fts3PendingTermsAdd() are to add term/position-list pairs for the
 ** contents of the document with docid iDocid.
 */
@@ -105635,8 +105635,8 @@ static int fts3InsertData(
     if( rc!=SQLITE_OK ) return rc;
   }
 
-  /* Execute the statement to insert the record. Set *piDocid to the 
-  ** new docid value. 
+  /* Execute the statement to insert the record. Set *piDocid to the
+  ** new docid value.
   */
   sqlite3_step(pContentInsert);
   rc = sqlite3_reset(pContentInsert);
@@ -105710,7 +105710,7 @@ static void fts3DeleteTerms(
 */
 static int fts3SegmentMerge(Fts3Table *, int);
 
-/* 
+/*
 ** This function allocates a new level iLevel index in the segdir table.
 ** Usually, indexes are allocated within a level sequentially starting
 ** with 0, so the allocated index is one greater than the value returned
@@ -105719,7 +105719,7 @@ static int fts3SegmentMerge(Fts3Table *, int);
 **   SELECT max(idx) FROM %_segdir WHERE level = :iLevel
 **
 ** However, if there are already FTS3_MERGE_COUNT indexes at the requested
-** level, they are merged into a single level (iLevel+1) segment and the 
+** level, they are merged into a single level (iLevel+1) segment and the
 ** allocated index is 0.
 **
 ** If successful, *piIdx is set to the allocated index slot and SQLITE_OK
@@ -105803,7 +105803,7 @@ static int fts3SegReaderNext(Fts3SegReader *pReader){
     pReader->aNode = (char *)sqlite3_column_blob(pReader->pStmt, 0);
     pNext = pReader->aNode;
   }
-  
+
   pNext += sqlite3Fts3GetVarint32(pNext, &nPrefix);
   pNext += sqlite3Fts3GetVarint32(pNext, &nSuffix);
 
@@ -105841,8 +105841,8 @@ static void fts3SegReaderFirstDocid(Fts3SegReader *pReader){
 /*
 ** Advance the SegReader to point to the next docid in the doclist
 ** associated with the current term.
-** 
-** If arguments ppOffsetList and pnOffsetList are not NULL, then 
+**
+** If arguments ppOffsetList and pnOffsetList are not NULL, then
 ** *ppOffsetList is set to point to the first column-offset list
 ** in the doclist entry (i.e. immediately past the docid varint).
 ** *pnOffsetList is set to the length of the set of column-offset
@@ -105886,7 +105886,7 @@ static void fts3SegReaderNextDocid(
 }
 
 /*
-** Free all allocations associated with the iterator passed as the 
+** Free all allocations associated with the iterator passed as the
 ** second argument.
 */
 SQLITE_PRIVATE void sqlite3Fts3SegReaderFree(Fts3Table *p, Fts3SegReader *pReader){
@@ -106100,7 +106100,7 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderPending(
 ** The second argument to this function is expected to be a statement of
 ** the form:
 **
-**   SELECT 
+**   SELECT
 **     idx,                  -- col 0
 **     start_block,          -- col 1
 **     leaves_end_block,     -- col 2
@@ -106110,7 +106110,7 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderPending(
 **
 ** This function allocates and initializes a Fts3SegReader structure to
 ** iterate through the terms stored in the segment identified by the
-** current row that pStmt is pointing to. 
+** current row that pStmt is pointing to.
 **
 ** If successful, the Fts3SegReader is left pointing to the first term
 ** in the segment and SQLITE_OK is returned. Otherwise, an SQLite error
@@ -106122,7 +106122,7 @@ static int fts3SegReaderNew(
   int iAge,                       /* Segment "age". */
   Fts3SegReader **ppReader        /* OUT: Allocated Fts3SegReader */
 ){
-  return sqlite3Fts3SegReaderNew(p, iAge, 
+  return sqlite3Fts3SegReaderNew(p, iAge,
       sqlite3_column_int64(pStmt, 1),
       sqlite3_column_int64(pStmt, 2),
       sqlite3_column_int64(pStmt, 3),
@@ -106133,7 +106133,7 @@ static int fts3SegReaderNew(
 }
 
 /*
-** Compare the entries pointed to by two Fts3SegReader structures. 
+** Compare the entries pointed to by two Fts3SegReader structures.
 ** Comparison is as follows:
 **
 **   1) EOF is greater than not EOF.
@@ -106192,7 +106192,7 @@ static int fts3SegReaderDoclistCmp(Fts3SegReader *pLhs, Fts3SegReader *pRhs){
 
 /*
 ** Compare the term that the Fts3SegReader object passed as the first argument
-** points to with the term specified by arguments zTerm and nTerm. 
+** points to with the term specified by arguments zTerm and nTerm.
 **
 ** If the pSeg iterator is already at EOF, return 0. Otherwise, return
 ** -ve if the pSeg term is less than zTerm/nTerm, 0 if the two terms are
@@ -106253,7 +106253,7 @@ static void fts3SegReaderSort(
 #endif
 }
 
-/* 
+/*
 ** Insert a record into the %_segments table.
 */
 static int fts3WriteSegment(
@@ -106273,7 +106273,7 @@ static int fts3WriteSegment(
   return rc;
 }
 
-/* 
+/*
 ** Insert a record into the %_segdir table.
 */
 static int fts3WriteSegdir(
@@ -106303,7 +106303,7 @@ static int fts3WriteSegdir(
 
 /*
 ** Return the size of the common prefix (if any) shared by zPrev and
-** zNext, in bytes. For example, 
+** zNext, in bytes. For example,
 **
 **   fts3PrefixCompress("abc", 3, "abcdef", 6)   // returns 3
 **   fts3PrefixCompress("abX", 3, "abcdef", 6)   // returns 2
@@ -106327,7 +106327,7 @@ static int fts3PrefixCompress(
 */
 static int fts3NodeAddTerm(
   Fts3Table *p,               /* Virtual table handle */
-  SegmentNode **ppTree,           /* IN/OUT: SegmentNode handle */ 
+  SegmentNode **ppTree,           /* IN/OUT: SegmentNode handle */
   int isCopyTerm,                 /* True if zTerm/nTerm is transient */
   const char *zTerm,              /* Pointer to buffer containing term */
   int nTerm                       /* Size of term in bytes */
@@ -106336,7 +106336,7 @@ static int fts3NodeAddTerm(
   int rc;
   SegmentNode *pNew;
 
-  /* First try to append the term to the current node. Return early if 
+  /* First try to append the term to the current node. Return early if
   ** this is possible.
   */
   if( pTree ){
@@ -106356,8 +106356,8 @@ static int fts3NodeAddTerm(
         ** and the static node buffer (p->nNodeSize bytes) is not large
         ** enough. Use a separately malloced buffer instead This wastes
         ** p->nNodeSize bytes, but since this scenario only comes about when
-        ** the database contain two terms that share a prefix of almost 2KB, 
-        ** this is not expected to be a serious problem. 
+        ** the database contain two terms that share a prefix of almost 2KB,
+        ** this is not expected to be a serious problem.
         */
         assert( pTree->aData==(char *)&pTree[1] );
         pTree->aData = (char *)sqlite3_malloc(nReq);
@@ -106401,7 +106401,7 @@ static int fts3NodeAddTerm(
   ** If this is the first node in the tree, the term is added to it.
   **
   ** Otherwise, the term is not added to the new node, it is left empty for
-  ** now. Instead, the term is inserted into the parent of pTree. If pTree 
+  ** now. Instead, the term is inserted into the parent of pTree. If pTree
   ** has no parent, one is created here.
   */
   pNew = (SegmentNode *)sqlite3_malloc(sizeof(SegmentNode) + p->nNodeSize);
@@ -106426,7 +106426,7 @@ static int fts3NodeAddTerm(
     pTree->zMalloc = 0;
   }else{
     pNew->pLeftmost = pNew;
-    rc = fts3NodeAddTerm(p, &pNew, isCopyTerm, zTerm, nTerm); 
+    rc = fts3NodeAddTerm(p, &pNew, isCopyTerm, zTerm, nTerm);
   }
 
   *ppTree = pNew;
@@ -106437,8 +106437,8 @@ static int fts3NodeAddTerm(
 ** Helper function for fts3NodeWrite().
 */
 static int fts3TreeFinishNode(
-  SegmentNode *pTree, 
-  int iHeight, 
+  SegmentNode *pTree,
+  int iHeight,
   sqlite3_int64 iLeftChild
 ){
   int nStart;
@@ -106451,15 +106451,15 @@ static int fts3TreeFinishNode(
 
 /*
 ** Write the buffer for the segment node pTree and all of its peers to the
-** database. Then call this function recursively to write the parent of 
-** pTree and its peers to the database. 
+** database. Then call this function recursively to write the parent of
+** pTree and its peers to the database.
 **
 ** Except, if pTree is a root node, do not write it to the database. Instead,
 ** set output variables *paRoot and *pnRoot to contain the root node.
 **
 ** If successful, SQLITE_OK is returned and output variable *piLast is
 ** set to the largest blockid written to the database (or zero if no
-** blocks were written to the db). Otherwise, an SQLite error code is 
+** blocks were written to the db). Otherwise, an SQLite error code is
 ** returned.
 */
 static int fts3NodeWrite(
@@ -106487,7 +106487,7 @@ static int fts3NodeWrite(
     for(pIter=pTree->pLeftmost; pIter && rc==SQLITE_OK; pIter=pIter->pRight){
       int nStart = fts3TreeFinishNode(pIter, iHeight, iNextLeaf);
       int nWrite = pIter->nData - nStart;
-  
+
       rc = fts3WriteSegment(p, iNextFree, &pIter->aData[nStart], nWrite);
       iNextFree++;
       iNextLeaf += (pIter->nEntry+1);
@@ -106533,7 +106533,7 @@ static void fts3NodeFree(SegmentNode *pTree){
 */
 static int fts3SegWriterAdd(
   Fts3Table *p,                   /* Virtual table handle */
-  SegmentWriter **ppWriter,       /* IN/OUT: SegmentWriter handle */ 
+  SegmentWriter **ppWriter,       /* IN/OUT: SegmentWriter handle */
   int isCopyTerm,                 /* True if buffer zTerm must be copied */
   const char *zTerm,              /* Pointer to buffer containing term */
   int nTerm,                      /* Size of term in bytes */
@@ -106701,7 +106701,7 @@ static int fts3SegWriterFlush(
 }
 
 /*
-** Release all memory held by the SegmentWriter object passed as the 
+** Release all memory held by the SegmentWriter object passed as the
 ** first argument.
 */
 static void fts3SegWriterFree(SegmentWriter *pWriter){
@@ -106779,9 +106779,9 @@ static int fts3SegmentCountMax(Fts3Table *p, int *pnSegment, int *pnMax){
 ** This function is used after merging multiple segments into a single large
 ** segment to delete the old, now redundant, segment b-trees. Specifically,
 ** it:
-** 
-**   1) Deletes all %_segments entries for the segments associated with 
-**      each of the SegReader objects in the array passed as the third 
+**
+**   1) Deletes all %_segments entries for the segments associated with
+**      each of the SegReader objects in the array passed as the third
 **      argument, and
 **
 **   2) deletes all %_segdir entries with level iLevel, or all %_segdir
@@ -106828,7 +106828,7 @@ static int fts3DeleteSegdir(
 }
 
 /*
-** When this function is called, buffer *ppList (size *pnList bytes) contains 
+** When this function is called, buffer *ppList (size *pnList bytes) contains
 ** a position list that may (or may not) feature multiple columns. This
 ** function adjusts the pointer *ppList and the length *pnList so that they
 ** identify the subset of the position list that corresponds to column iCol.
@@ -106851,7 +106851,7 @@ static void fts3ColumnFilter(
   while( 1 ){
     char c = 0;
     while( p<pEnd && (c | *p)&0xFE ) c = *p++ & 0x80;
-  
+
     if( iCol==iCurrent ){
       nList = (int)(p - pList);
       break;
@@ -106871,7 +106871,7 @@ static void fts3ColumnFilter(
 }
 
 /*
-** sqlite3Fts3SegReaderIterate() callback used when merging multiple 
+** sqlite3Fts3SegReaderIterate() callback used when merging multiple
 ** segments to create a single, larger segment.
 */
 static int fts3MergeCallback(
@@ -106903,12 +106903,12 @@ static int fts3FlushCallback(
 }
 
 /*
-** This function is used to iterate through a contiguous set of terms 
-** stored in the full-text index. It merges data contained in one or 
+** This function is used to iterate through a contiguous set of terms
+** stored in the full-text index. It merges data contained in one or
 ** more segments to support this.
 **
 ** The second argument is passed an array of pointers to SegReader objects
-** allocated with sqlite3Fts3SegReaderNew(). This function merges the range 
+** allocated with sqlite3Fts3SegReaderNew(). This function merges the range
 ** of terms selected by each SegReader. If a single term is present in
 ** more than one segment, the associated doclists are merged. For each
 ** term and (possibly merged) doclist in the merged range, the callback
@@ -106950,7 +106950,7 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderIterate(
   */
   if( nSegment==0 ) goto finished;
 
-  /* If the Fts3SegFilter defines a specific term (or term prefix) to search 
+  /* If the Fts3SegFilter defines a specific term (or term prefix) to search
   ** for, then advance each segment iterator until it points to a term of
   ** equal or greater value than the specified term. This prevents many
   ** unnecessary merge/sort operations for the case where single segment
@@ -106974,24 +106974,24 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderIterate(
     int nMerge = 1;
 
     /* If this is a prefix-search, and if the term that apSegment[0] points
-    ** to does not share a suffix with pFilter->zTerm/nTerm, then all 
+    ** to does not share a suffix with pFilter->zTerm/nTerm, then all
     ** required callbacks have been made. In this case exit early.
     **
     ** Similarly, if this is a search for an exact match, and the first term
     ** of segment apSegment[0] is not a match, exit early.
     */
     if( pFilter->zTerm ){
-      if( nTerm<pFilter->nTerm 
+      if( nTerm<pFilter->nTerm
        || (!isPrefix && nTerm>pFilter->nTerm)
-       || memcmp(zTerm, pFilter->zTerm, pFilter->nTerm) 
+       || memcmp(zTerm, pFilter->zTerm, pFilter->nTerm)
     ){
         goto finished;
       }
     }
 
-    while( nMerge<nSegment 
+    while( nMerge<nSegment
         && apSegment[nMerge]->aNode
-        && apSegment[nMerge]->nTerm==nTerm 
+        && apSegment[nMerge]->nTerm==nTerm
         && 0==memcmp(zTerm, apSegment[nMerge]->zTerm, nTerm)
     ){
       nMerge++;
@@ -107085,14 +107085,14 @@ SQLITE_PRIVATE int sqlite3Fts3SegReaderIterate(
 }
 
 /*
-** Merge all level iLevel segments in the database into a single 
+** Merge all level iLevel segments in the database into a single
 ** iLevel+1 segment. Or, if iLevel<0, merge all segments into a
-** single segment with a level equal to the numerically largest level 
+** single segment with a level equal to the numerically largest level
 ** currently present in the database.
 **
 ** If this function is called with iLevel<0, but there is only one
-** segment in the database, SQLITE_DONE is returned immediately. 
-** Otherwise, if successful, SQLITE_OK is returned. If an error occurs, 
+** segment in the database, SQLITE_DONE is returned immediately.
+** Otherwise, if successful, SQLITE_OK is returned. If an error occurs,
 ** an SQLite error code is returned.
 */
 static int fts3SegmentMerge(Fts3Table *p, int iLevel){
@@ -107109,7 +107109,7 @@ static int fts3SegmentMerge(Fts3Table *p, int iLevel){
 
   if( iLevel<0 ){
     /* This call is to merge all segments in the database to a single
-    ** segment. The level of the new segment is equal to the the numerically 
+    ** segment. The level of the new segment is equal to the the numerically
     ** greatest segment level currently present in the database. The index
     ** of the new segment is always 0.
     */
@@ -107125,7 +107125,7 @@ static int fts3SegmentMerge(Fts3Table *p, int iLevel){
   }else{
     /* This call is to merge all segments at level iLevel. Find the next
     ** available segment index at level iLevel+1. The call to
-    ** fts3AllocateSegdirIdx() will merge the segments at level iLevel+1 to 
+    ** fts3AllocateSegdirIdx() will merge the segments at level iLevel+1 to
     ** a single iLevel+2 segment if necessary.
     */
     iNewLevel = iLevel+1;
@@ -107145,9 +107145,9 @@ static int fts3SegmentMerge(Fts3Table *p, int iLevel){
   }
   memset(apSegment, 0, sizeof(Fts3SegReader *)*nSegment);
 
-  /* Allocate a Fts3SegReader structure for each segment being merged. A 
-  ** Fts3SegReader stores the state data required to iterate through all 
-  ** entries on all leaves of a single segment. 
+  /* Allocate a Fts3SegReader structure for each segment being merged. A
+  ** Fts3SegReader stores the state data required to iterate through all
+  ** entries on all leaves of a single segment.
   */
   assert( SQL_SELECT_LEVEL+1==SQL_SELECT_ALL_LEVEL);
   rc = fts3SqlStmt(p, SQL_SELECT_LEVEL+(iLevel<0), &pStmt, 0);
@@ -107194,7 +107194,7 @@ static int fts3SegmentMerge(Fts3Table *p, int iLevel){
 }
 
 
-/* 
+/*
 ** Flush the contents of pendingTerms to a level 0 segment.
 */
 SQLITE_PRIVATE int sqlite3Fts3PendingTermsFlush(Fts3Table *p){
@@ -107218,7 +107218,7 @@ SQLITE_PRIVATE int sqlite3Fts3PendingTermsFlush(Fts3Table *p){
   */
   rc = fts3AllocateSegdirIdx(p, 0, &idx);
 
-  /* If no errors have occured, iterate through the contents of the 
+  /* If no errors have occured, iterate through the contents of the
   ** pending-terms hash table using the Fts3SegReader iterator. The callback
   ** writes each term (along with its doclist) to the database via the
   ** SegmentWriter handle pWriter.
@@ -107322,7 +107322,7 @@ SQLITE_PRIVATE int sqlite3Fts3MatchinfoDocsizeLocal(Fts3Cursor *pCur, u32 *a){
     }
   }
   sqlite3_reset(pStmt);
-  return SQLITE_OK; 
+  return SQLITE_OK;
 }
 SQLITE_PRIVATE int sqlite3Fts3MatchinfoDocsizeGlobal(Fts3Cursor *pCur, u32 *a){
   const char *pBlob;       /* The BLOB holding %_stat info */
@@ -107350,7 +107350,7 @@ SQLITE_PRIVATE int sqlite3Fts3MatchinfoDocsizeGlobal(Fts3Cursor *pCur, u32 *a){
     }
   }
   sqlite3_reset(pStmt);
-  return SQLITE_OK; 
+  return SQLITE_OK;
 }
 
 /*
@@ -107459,7 +107459,7 @@ static void fts3UpdateDocTotals(
 **
 **   "INSERT INTO tbl(tbl) VALUES(<expr>)"
 **
-** Argument pVal contains the result of <expr>. Currently the only 
+** Argument pVal contains the result of <expr>. Currently the only
 ** meaningful value to insert is the text 'optimize'.
 */
 static int fts3SpecialInsert(Fts3Table *p, sqlite3_value *pVal){
@@ -107543,7 +107543,7 @@ SQLITE_PRIVATE int sqlite3Fts3UpdateMethod(
     sqlite3_free(aSzIns);
     return fts3SpecialInsert(p, apVal[p->nColumn+2]);
   }
-  
+
   /* If this is an INSERT or UPDATE operation, insert the new record. */
   if( nArg>1 && rc==SQLITE_OK ){
     rc = fts3InsertData(p, apVal, pRowid);
@@ -107567,10 +107567,10 @@ SQLITE_PRIVATE int sqlite3Fts3UpdateMethod(
   return rc;
 }
 
-/* 
+/*
 ** Flush any data in the pending-terms hash table to disk. If successful,
-** merge all segments in the database (including the new segment, if 
-** there was any data to flush) into a single segment. 
+** merge all segments in the database (including the new segment, if
+** there was any data to flush) into a single segment.
 */
 SQLITE_PRIVATE int sqlite3Fts3Optimize(Fts3Table *p){
   int rc;
@@ -107623,7 +107623,7 @@ struct LoadDoclistCtx {
 };
 
 /*
-** The following types are used as part of the implementation of the 
+** The following types are used as part of the implementation of the
 ** fts3BestSnippet() routine.
 */
 typedef struct SnippetIter SnippetIter;
@@ -107656,7 +107656,7 @@ struct SnippetFragment {
 };
 
 /*
-** This type is used as an fts3ExprIterate() context object while 
+** This type is used as an fts3ExprIterate() context object while
 ** accumulating the data returned by the matchinfo() function.
 */
 typedef struct MatchInfo MatchInfo;
@@ -107737,7 +107737,7 @@ static int fts3ExprIterate2(
 ** are part of a sub-tree that is the right-hand-side of a NOT operator.
 ** For each phrase node found, the supplied callback function is invoked.
 **
-** If the callback function returns anything other than SQLITE_OK, 
+** If the callback function returns anything other than SQLITE_OK,
 ** the iteration is abandoned and the error code returned immediately.
 ** Otherwise, SQLITE_OK is returned after a callback has been made for
 ** all eligible phrase nodes.
@@ -107752,15 +107752,15 @@ static int fts3ExprIterate(
 }
 
 /*
-** The argument to this function is always a phrase node. Its doclist 
+** The argument to this function is always a phrase node. Its doclist
 ** (Fts3Expr.aDoclist[]) and the doclists associated with all phrase nodes
 ** to the left of this one in the query tree have already been loaded.
 **
-** If this phrase node is part of a series of phrase nodes joined by 
+** If this phrase node is part of a series of phrase nodes joined by
 ** NEAR operators (and is not the left-most of said series), then elements are
 ** removed from the phrases doclist consistent with the NEAR restriction. If
 ** required, elements may be removed from the doclists of phrases to the
-** left of this one that are part of the same series of NEAR operator 
+** left of this one that are part of the same series of NEAR operator
 ** connected phrases.
 **
 ** If an OOM error occurs, SQLITE_NOMEM is returned. Otherwise, SQLITE_OK.
@@ -107771,11 +107771,11 @@ static int fts3ExprNearTrim(Fts3Expr *pExpr){
 
   assert( pExpr->eType==FTSQUERY_PHRASE );
   while( rc==SQLITE_OK
-   && pParent 
-   && pParent->eType==FTSQUERY_NEAR 
-   && pParent->pRight==pExpr 
+   && pParent
+   && pParent->eType==FTSQUERY_NEAR
+   && pParent->pRight==pExpr
   ){
-    /* This expression (pExpr) is the right-hand-side of a NEAR operator. 
+    /* This expression (pExpr) is the right-hand-side of a NEAR operator.
     ** Find the expression to the left of the same operator.
     */
     int nNear = pParent->nNear;
@@ -107839,11 +107839,11 @@ static int fts3ExprLoadDoclistsCb2(Fts3Expr *pExpr, int iPhrase, void *ctx){
 
 /*
 ** Load the doclists for each phrase in the query associated with FTS3 cursor
-** pCsr. 
+** pCsr.
 **
-** If pnPhrase is not NULL, then *pnPhrase is set to the number of matchable 
-** phrases in the expression (all phrases except those directly or 
-** indirectly descended from the right-hand-side of a NOT operator). If 
+** If pnPhrase is not NULL, then *pnPhrase is set to the number of matchable
+** phrases in the expression (all phrases except those directly or
+** indirectly descended from the right-hand-side of a NOT operator). If
 ** pnToken is not NULL, then it is set to the number of tokens in all
 ** matchable phrases of the expression.
 */
@@ -107865,7 +107865,7 @@ static int fts3ExprLoadDoclists(
 }
 
 /*
-** Advance the position list iterator specified by the first two 
+** Advance the position list iterator specified by the first two
 ** arguments so that it points to the first element with a value greater
 ** than or equal to parameter iNext.
 */
@@ -107934,7 +107934,7 @@ static int fts3SnippetNextCandidate(SnippetIter *pIter){
 }
 
 /*
-** Retrieve information about the current candidate snippet of snippet 
+** Retrieve information about the current candidate snippet of snippet
 ** iterator pIter.
 */
 static void fts3SnippetDetails(
@@ -108014,14 +108014,14 @@ static int fts3SnippetFindPositions(Fts3Expr *pExpr, int iPhrase, void *ctx){
 }
 
 /*
-** Select the fragment of text consisting of nFragment contiguous tokens 
+** Select the fragment of text consisting of nFragment contiguous tokens
 ** from column iCol that represent the "best" snippet. The best snippet
 ** is the snippet with the highest score, where scores are calculated
 ** by adding:
 **
 **   (a) +1 point for each occurence of a matchable phrase in the snippet.
 **
-**   (b) +1000 points for the first occurence of each matchable phrase in 
+**   (b) +1000 points for the first occurence of each matchable phrase in
 **       the snippet for which the corresponding mCovered bit is not set.
 **
 ** The selected snippet parameters are stored in structure *pFragment before
@@ -108081,7 +108081,7 @@ static int fts3BestSnippet(
     }
   }
 
-  /* Loop through all candidate snippets. Store the best snippet in 
+  /* Loop through all candidate snippets. Store the best snippet in
   ** *pFragment. Store its associated 'score' in iBestScore.
   */
   pFragment->iCol = iCol;
@@ -108151,8 +108151,8 @@ static int fts3StringAppend(
 **
 **     ........X.....X
 **
-** This function "shifts" the beginning of the snippet forward in the 
-** document so that there are approximately the same number of 
+** This function "shifts" the beginning of the snippet forward in the
+** document so that there are approximately the same number of
 ** non-highlighted terms to the right of the final highlighted term as there
 ** are to the left of the first highlighted term. For example, to this:
 **
@@ -108160,8 +108160,8 @@ static int fts3StringAppend(
 **
 ** This is done as part of extracting the snippet text, not when selecting
 ** the snippet. Snippet selection is done based on doclists only, so there
-** is no way for fts3BestSnippet() to know whether or not the document 
-** actually contains terms that follow the final highlighted term. 
+** is no way for fts3BestSnippet() to know whether or not the document
+** actually contains terms that follow the final highlighted term.
 */
 int fts3SnippetShift(
   Fts3Table *pTab,                /* FTS3 table snippet comes from */
@@ -108252,7 +108252,7 @@ static int fts3SnippetText(
   sqlite3_tokenizer_cursor *pC;   /* Tokenizer cursor open on zDoc/nDoc */
   const char *ZDUMMY;             /* Dummy argument used with tokenizer */
   int DUMMY1;                     /* Dummy argument used with tokenizer */
-  
+
   zDoc = (const char *)sqlite3_column_text(pCsr->pStmt, iCol);
   if( zDoc==0 ){
     if( sqlite3_column_type(pCsr->pStmt, iCol)!=SQLITE_NULL ){
@@ -108280,7 +108280,7 @@ static int fts3SnippetText(
       if( rc==SQLITE_DONE ){
         /* Special case - the last token of the snippet is also the last token
         ** of the column. Append any punctuation that occurred between the end
-        ** of the previous token and the end of the document to the output. 
+        ** of the previous token and the end of the document to the output.
         ** Then break out of the loop. */
         rc = fts3StringAppend(pOut, &zDoc[iEnd], -1);
       }
@@ -108295,7 +108295,7 @@ static int fts3SnippetText(
 
       /* Now that the shift has been done, check if the initial "..." are
       ** required. They are required if (a) this is not the first fragment,
-      ** or (b) this fragment does not begin at position 0 of its column. 
+      ** or (b) this fragment does not begin at position 0 of its column.
       */
       if( rc==SQLITE_OK && (iPos>0 || iFragment>0) ){
         rc = fts3StringAppend(pOut, zEllipsis, -1);
@@ -108327,8 +108327,8 @@ static int fts3SnippetText(
 
 
 /*
-** This function is used to count the entries in a column-list (a 
-** delta-encoded list of term offsets within a single column of a single 
+** This function is used to count the entries in a column-list (a
+** delta-encoded list of term offsets within a single column of a single
 ** row). When this function is called, *ppCollist should point to the
 ** beginning of the first varint in the column-list (the varint that
 ** contains the position of the first matching term in the column data).
@@ -108431,7 +108431,7 @@ static int fts3ExprLocalMatchinfoCb(
 }
 
 /*
-** Populate pCsr->aMatchinfo[] with data for the current row. The 
+** Populate pCsr->aMatchinfo[] with data for the current row. The
 ** 'matchinfo' data is an array of 32-bit unsigned integers (C type u32).
 */
 static int fts3GetMatchinfo(Fts3Cursor *pCsr){
@@ -108444,7 +108444,7 @@ static int fts3GetMatchinfo(Fts3Cursor *pCsr){
 
   if( pCsr->aMatchinfo==0 ){
     /* If Fts3Cursor.aMatchinfo[] is NULL, then this is the first time the
-    ** matchinfo function has been called for this query. In this case 
+    ** matchinfo function has been called for this query. In this case
     ** allocate the array used to accumulate the matchinfo data and
     ** initialize those elements that are constant for every row.
     */
@@ -108462,7 +108462,7 @@ static int fts3GetMatchinfo(Fts3Cursor *pCsr){
     }
 
     sInfo.aMatchinfo = (u32 *)sqlite3_malloc(sizeof(u32)*nMatchinfo);
-    if( !sInfo.aMatchinfo ){ 
+    if( !sInfo.aMatchinfo ){
       return SQLITE_NOMEM;
     }
     memset(sInfo.aMatchinfo, 0, sizeof(u32)*nMatchinfo);
@@ -108512,7 +108512,7 @@ SQLITE_PRIVATE void sqlite3Fts3Snippet(
 
   /* The returned text includes up to four fragments of text extracted from
   ** the data in the current row. The first iteration of the for(...) loop
-  ** below attempts to locate a single fragment of text nToken tokens in 
+  ** below attempts to locate a single fragment of text nToken tokens in
   ** size that contains at least one instance of all phrases in the query
   ** expression that appear in the current row. If such a fragment of text
   ** cannot be found, the second iteration of the loop attempts to locate
@@ -108579,7 +108579,7 @@ SQLITE_PRIVATE void sqlite3Fts3Snippet(
   assert( nFToken>0 );
 
   for(i=0; i<nSnippet && rc==SQLITE_OK; i++){
-    rc = fts3SnippetText(pCsr, &aSnippet[i], 
+    rc = fts3SnippetText(pCsr, &aSnippet[i],
         i, (i==nSnippet-1), nFToken, zStart, zEnd, zEllipsis, &res
     );
   }
@@ -108675,7 +108675,7 @@ SQLITE_PRIVATE void sqlite3Fts3Offsets(
   }
   sCtx.iDocid = pCsr->iPrevId;
 
-  /* Loop through the table columns, appending offset information to 
+  /* Loop through the table columns, appending offset information to
   ** string-buffer res for each column.
   */
   for(iCol=0; iCol<pTab->nColumn; iCol++){
@@ -108686,7 +108686,7 @@ SQLITE_PRIVATE void sqlite3Fts3Offsets(
     const char *zDoc;
     int nDoc;
 
-    /* Initialize the contents of sCtx.aTerm[] for column iCol. There is 
+    /* Initialize the contents of sCtx.aTerm[] for column iCol. There is
     ** no way that this operation can fail, so the return code from
     ** fts3ExprIterate() can be discarded.
     */
@@ -108694,11 +108694,11 @@ SQLITE_PRIVATE void sqlite3Fts3Offsets(
     sCtx.iTerm = 0;
     (void)fts3ExprIterate(pCsr->pExpr, fts3ExprTermOffsetInit, (void *)&sCtx);
 
-    /* Retreive the text stored in column iCol. If an SQL NULL is stored 
+    /* Retreive the text stored in column iCol. If an SQL NULL is stored
     ** in column iCol, jump immediately to the next iteration of the loop.
     ** If an OOM occurs while retrieving the data (this can happen if SQLite
-    ** needs to transform the data from utf-16 to utf-8), return SQLITE_NOMEM 
-    ** to the caller. 
+    ** needs to transform the data from utf-16 to utf-8), return SQLITE_NOMEM
+    ** to the caller.
     */
     zDoc = (const char *)sqlite3_column_text(pCsr->pStmt, iCol+1);
     nDoc = sqlite3_column_bytes(pCsr->pStmt, iCol+1);
@@ -108744,7 +108744,7 @@ SQLITE_PRIVATE void sqlite3Fts3Offsets(
         }
         if( rc==SQLITE_OK ){
           char aBuffer[64];
-          sqlite3_snprintf(sizeof(aBuffer), aBuffer, 
+          sqlite3_snprintf(sizeof(aBuffer), aBuffer,
               "%d %d %d %d ", iCol, pTerm-sCtx.aTerm, iStart, iEnd-iStart
           );
           rc = fts3StringAppend(&res, aBuffer, -1);
@@ -108818,19 +108818,19 @@ SQLITE_PRIVATE void sqlite3Fts3Matchinfo(sqlite3_context *pContext, Fts3Cursor *
 
 /*
 ** This file contains an implementation of a couple of different variants
-** of the r-tree algorithm. See the README file for further details. The 
+** of the r-tree algorithm. See the README file for further details. The
 ** same data-structure is used for all, but the algorithms for insert and
-** delete operations vary. The variants used are selected at compile time 
+** delete operations vary. The variants used are selected at compile time
 ** by defining the following symbols:
 */
 
-/* Either, both or none of the following may be set to activate 
+/* Either, both or none of the following may be set to activate
 ** r*tree variant algorithms.
 */
 #define VARIANT_RSTARTREE_CHOOSESUBTREE 0
 #define VARIANT_RSTARTREE_REINSERT      1
 
-/* 
+/*
 ** Exactly one of the following must be set to 1.
 */
 #define VARIANT_GUTTMAN_QUADRATIC_SPLIT 0
@@ -108878,12 +108878,12 @@ typedef union RtreeCoord RtreeCoord;
 #define RTREE_MAX_DIMENSIONS 5
 
 /* Size of hash table Rtree.aHash. This hash table is not expected to
-** ever contain very many entries, so a fixed number of buckets is 
+** ever contain very many entries, so a fixed number of buckets is
 ** used.
 */
 #define HASHSIZE 128
 
-/* 
+/*
 ** An rtree virtual-table object.
 */
 struct Rtree {
@@ -108894,13 +108894,13 @@ struct Rtree {
   int nBytesPerCell;          /* Bytes consumed per cell */
   int iDepth;                 /* Current depth of the r-tree structure */
   char *zDb;                  /* Name of database containing r-tree table */
-  char *zName;                /* Name of r-tree table */ 
-  RtreeNode *aHash[HASHSIZE]; /* Hash table of in-memory nodes. */ 
+  char *zName;                /* Name of r-tree table */
+  RtreeNode *aHash[HASHSIZE]; /* Hash table of in-memory nodes. */
   int nBusy;                  /* Current number of users of this structure */
 
   /* List of nodes removed during a CondenseTree operation. List is
   ** linked together via the pointer normally used for hash chains -
-  ** RtreeNode.pNext. RtreeNode.iNode stores the depth of the sub-tree 
+  ** RtreeNode.pNext. RtreeNode.iNode stores the depth of the sub-tree
   ** headed by the node (leaf nodes have RtreeNode.iNode==0).
   */
   RtreeNode *pDeleted;
@@ -108929,7 +108929,7 @@ struct Rtree {
 #define RTREE_COORD_INT32  1
 
 /*
-** The minimum number of cells allowed for a node is a third of the 
+** The minimum number of cells allowed for a node is a third of the
 ** maximum. In Gutman's notation:
 **
 **     m = M/3
@@ -108941,7 +108941,7 @@ struct Rtree {
 #define RTREE_REINSERT(p) RTREE_MINCELLS(p)
 #define RTREE_MAXCELLS 51
 
-/* 
+/*
 ** An rtree cursor object.
 */
 struct RtreeCursor {
@@ -108985,7 +108985,7 @@ struct RtreeConstraint {
 #define RTREE_GE 0x44
 #define RTREE_GT 0x45
 
-/* 
+/*
 ** An rtree structure node.
 **
 ** Data format (RtreeNode.zData):
@@ -108994,7 +108994,7 @@ struct RtreeConstraint {
 **      of the node contain the tree depth as a big-endian integer.
 **      For non-root nodes, the first 2 bytes are left unused.
 **
-**   2. The next 2 bytes contain the number of entries currently 
+**   2. The next 2 bytes contain the number of entries currently
 **      stored in the node.
 **
 **   3. The remainder of the node contains the node entries. Each entry
@@ -109013,7 +109013,7 @@ struct RtreeNode {
 };
 #define NCELL(pNode) readInt16(&(pNode)->zData[2])
 
-/* 
+/*
 ** Structure to store a deserialized rtree record.
 */
 struct RtreeCell {
@@ -109037,22 +109037,22 @@ static int readInt16(u8 *p){
 }
 static void readCoord(u8 *p, RtreeCoord *pCoord){
   u32 i = (
-    (((u32)p[0]) << 24) + 
-    (((u32)p[1]) << 16) + 
-    (((u32)p[2]) <<  8) + 
+    (((u32)p[0]) << 24) +
+    (((u32)p[1]) << 16) +
+    (((u32)p[2]) <<  8) +
     (((u32)p[3]) <<  0)
   );
   *(u32 *)pCoord = i;
 }
 static i64 readInt64(u8 *p){
   return (
-    (((i64)p[0]) << 56) + 
-    (((i64)p[1]) << 48) + 
-    (((i64)p[2]) << 40) + 
-    (((i64)p[3]) << 32) + 
-    (((i64)p[4]) << 24) + 
-    (((i64)p[5]) << 16) + 
-    (((i64)p[6]) <<  8) + 
+    (((i64)p[0]) << 56) +
+    (((i64)p[1]) << 48) +
+    (((i64)p[2]) << 40) +
+    (((i64)p[3]) << 32) +
+    (((i64)p[4]) << 24) +
+    (((i64)p[5]) << 16) +
+    (((i64)p[6]) <<  8) +
     (((i64)p[7]) <<  0)
   );
 }
@@ -109115,7 +109115,7 @@ static void nodeZero(Rtree *pRtree, RtreeNode *p){
 */
 static int nodeHash(i64 iNode){
   return (
-    (iNode>>56) ^ (iNode>>48) ^ (iNode>>40) ^ (iNode>>32) ^ 
+    (iNode>>56) ^ (iNode>>48) ^ (iNode>>40) ^ (iNode>>32) ^
     (iNode>>24) ^ (iNode>>16) ^ (iNode>> 8) ^ (iNode>> 0)
   ) % HASHSIZE;
 }
@@ -109245,9 +109245,9 @@ nodeAcquire(
 ** Overwrite cell iCell of node pNode with the contents of pCell.
 */
 static void nodeOverwriteCell(
-  Rtree *pRtree, 
-  RtreeNode *pNode,  
-  RtreeCell *pCell, 
+  Rtree *pRtree,
+  RtreeNode *pNode,
+  RtreeCell *pCell,
   int iCell
 ){
   int ii;
@@ -109279,9 +109279,9 @@ static void nodeDeleteCell(Rtree *pRtree, RtreeNode *pNode, int iCell){
 */
 static int
 nodeInsertCell(
-  Rtree *pRtree, 
-  RtreeNode *pNode, 
-  RtreeCell *pCell 
+  Rtree *pRtree,
+  RtreeNode *pNode,
+  RtreeCell *pCell
 ){
   int nCell;                    /* Current number of cells in pNode */
   int nMaxCell;                 /* Maximum number of cells for pNode */
@@ -109358,8 +109358,8 @@ nodeRelease(Rtree *pRtree, RtreeNode *pNode){
 ** an internal node, then the 64-bit integer is a child page number.
 */
 static i64 nodeGetRowid(
-  Rtree *pRtree, 
-  RtreeNode *pNode, 
+  Rtree *pRtree,
+  RtreeNode *pNode,
   int iCell
 ){
   assert( iCell<NCELL(pNode) );
@@ -109370,8 +109370,8 @@ static i64 nodeGetRowid(
 ** Return coordinate iCoord from cell iCell in node pNode.
 */
 static void nodeGetCoord(
-  Rtree *pRtree, 
-  RtreeNode *pNode, 
+  Rtree *pRtree,
+  RtreeNode *pNode,
   int iCell,
   int iCoord,
   RtreeCoord *pCoord           /* Space to write result to */
@@ -109384,8 +109384,8 @@ static void nodeGetCoord(
 ** to by pCell with the results.
 */
 static void nodeGetCell(
-  Rtree *pRtree, 
-  RtreeNode *pNode, 
+  Rtree *pRtree,
+  RtreeNode *pNode,
   int iCell,
   RtreeCell *pCell
 ){
@@ -109404,7 +109404,7 @@ static int rtreeInit(
   sqlite3 *, void *, int, const char *const*, sqlite3_vtab **, char **, int
 );
 
-/* 
+/*
 ** Rtree virtual table module xCreate method.
 */
 static int rtreeCreate(
@@ -109417,7 +109417,7 @@ static int rtreeCreate(
   return rtreeInit(db, pAux, argc, argv, ppVtab, pzErr, 1);
 }
 
-/* 
+/*
 ** Rtree virtual table module xConnect method.
 */
 static int rtreeConnect(
@@ -109457,7 +109457,7 @@ static void rtreeRelease(Rtree *pRtree){
   }
 }
 
-/* 
+/*
 ** Rtree virtual table module xDisconnect method.
 */
 static int rtreeDisconnect(sqlite3_vtab *pVtab){
@@ -109465,7 +109465,7 @@ static int rtreeDisconnect(sqlite3_vtab *pVtab){
   return SQLITE_OK;
 }
 
-/* 
+/*
 ** Rtree virtual table module xDestroy method.
 */
 static int rtreeDestroy(sqlite3_vtab *pVtab){
@@ -109475,7 +109475,7 @@ static int rtreeDestroy(sqlite3_vtab *pVtab){
     "DROP TABLE '%q'.'%q_node';"
     "DROP TABLE '%q'.'%q_rowid';"
     "DROP TABLE '%q'.'%q_parent';",
-    pRtree->zDb, pRtree->zName, 
+    pRtree->zDb, pRtree->zName,
     pRtree->zDb, pRtree->zName,
     pRtree->zDb, pRtree->zName
   );
@@ -109492,7 +109492,7 @@ static int rtreeDestroy(sqlite3_vtab *pVtab){
   return rc;
 }
 
-/* 
+/*
 ** Rtree virtual table module xOpen method.
 */
 static int rtreeOpen(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor){
@@ -109510,7 +109510,7 @@ static int rtreeOpen(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor){
   return rc;
 }
 
-/* 
+/*
 ** Rtree virtual table module xClose method.
 */
 static int rtreeClose(sqlite3_vtab_cursor *cur){
@@ -109526,7 +109526,7 @@ static int rtreeClose(sqlite3_vtab_cursor *cur){
 /*
 ** Rtree virtual table module xEof method.
 **
-** Return non-zero if the cursor does not currently point to a valid 
+** Return non-zero if the cursor does not currently point to a valid
 ** record (i.e if the scan has finished), or zero otherwise.
 */
 static int rtreeEof(sqlite3_vtab_cursor *cur){
@@ -109534,10 +109534,10 @@ static int rtreeEof(sqlite3_vtab_cursor *cur){
   return (pCsr->pNode==0);
 }
 
-/* 
+/*
 ** Cursor pCursor currently points to a cell in a non-leaf page.
 ** Return true if the sub-tree headed by the cell is filtered
-** (excluded) by the constraints in the pCursor->aConstraint[] 
+** (excluded) by the constraints in the pCursor->aConstraint[]
 ** array, or false otherwise.
 */
 static int testRtreeCell(Rtree *pRtree, RtreeCursor *pCursor){
@@ -109551,14 +109551,14 @@ static int testRtreeCell(Rtree *pRtree, RtreeCursor *pCursor){
     double cell_min = DCOORD(cell.aCoord[(p->iCoord>>1)*2]);
     double cell_max = DCOORD(cell.aCoord[(p->iCoord>>1)*2+1]);
 
-    assert(p->op==RTREE_LE || p->op==RTREE_LT || p->op==RTREE_GE 
+    assert(p->op==RTREE_LE || p->op==RTREE_LT || p->op==RTREE_GE
         || p->op==RTREE_GT || p->op==RTREE_EQ
     );
 
     switch( p->op ){
       case RTREE_LE: case RTREE_LT: bRes = p->rValue<cell_min; break;
       case RTREE_GE: case RTREE_GT: bRes = p->rValue>cell_max; break;
-      case RTREE_EQ: 
+      case RTREE_EQ:
         bRes = (p->rValue>cell_max || p->rValue<cell_min);
         break;
     }
@@ -109567,9 +109567,9 @@ static int testRtreeCell(Rtree *pRtree, RtreeCursor *pCursor){
   return bRes;
 }
 
-/* 
+/*
 ** Return true if the cell that cursor pCursor currently points to
-** would be filtered (excluded) by the constraints in the 
+** would be filtered (excluded) by the constraints in the
 ** pCursor->aConstraint[] array, or false otherwise.
 **
 ** This function assumes that the cell is part of a leaf node.
@@ -109583,7 +109583,7 @@ static int testRtreeEntry(Rtree *pRtree, RtreeCursor *pCursor){
     RtreeConstraint *p = &pCursor->aConstraint[ii];
     double coord = DCOORD(cell.aCoord[p->iCoord]);
     int res;
-    assert(p->op==RTREE_LE || p->op==RTREE_LT || p->op==RTREE_GE 
+    assert(p->op==RTREE_LE || p->op==RTREE_LT || p->op==RTREE_GE
         || p->op==RTREE_GT || p->op==RTREE_EQ
     );
     switch( p->op ){
@@ -109603,12 +109603,12 @@ static int testRtreeEntry(Rtree *pRtree, RtreeCursor *pCursor){
 /*
 ** Cursor pCursor currently points at a node that heads a sub-tree of
 ** height iHeight (if iHeight==0, then the node is a leaf). Descend
-** to point to the left-most cell of the sub-tree that matches the 
+** to point to the left-most cell of the sub-tree that matches the
 ** configured constraints.
 */
 static int descendToCell(
-  Rtree *pRtree, 
-  RtreeCursor *pCursor, 
+  Rtree *pRtree,
+  RtreeCursor *pCursor,
   int iHeight,
   int *pEof                 /* OUT: Set to true if cannot descend */
 ){
@@ -109663,7 +109663,7 @@ static int descendToCell(
 }
 
 /*
-** One of the cells in node pNode is guaranteed to have a 64-bit 
+** One of the cells in node pNode is guaranteed to have a 64-bit
 ** integer value equal to iRowid. Return the index of this cell.
 */
 static int nodeRowidIndex(Rtree *pRtree, RtreeNode *pNode, i64 iRowid){
@@ -109686,7 +109686,7 @@ static int nodeParentIndex(Rtree *pRtree, RtreeNode *pNode){
   return -1;
 }
 
-/* 
+/*
 ** Rtree virtual table module xNext method.
 */
 static int rtreeNext(sqlite3_vtab_cursor *pVtabCursor){
@@ -109724,7 +109724,7 @@ static int rtreeNext(sqlite3_vtab_cursor *pVtabCursor){
   return rc;
 }
 
-/* 
+/*
 ** Rtree virtual table module xRowid method.
 */
 static int rtreeRowid(sqlite3_vtab_cursor *pVtabCursor, sqlite_int64 *pRowid){
@@ -109737,7 +109737,7 @@ static int rtreeRowid(sqlite3_vtab_cursor *pVtabCursor, sqlite_int64 *pRowid){
   return SQLITE_OK;
 }
 
-/* 
+/*
 ** Rtree virtual table module xColumn method.
 */
 static int rtreeColumn(sqlite3_vtab_cursor *cur, sqlite3_context *ctx, int i){
@@ -109761,8 +109761,8 @@ static int rtreeColumn(sqlite3_vtab_cursor *cur, sqlite3_context *ctx, int i){
   return SQLITE_OK;
 }
 
-/* 
-** Use nodeAcquire() to obtain the leaf node containing the record with 
+/*
+** Use nodeAcquire() to obtain the leaf node containing the record with
 ** rowid iRowid. If successful, set *ppLeaf to point to the node and
 ** return SQLITE_OK. If there is no such record in the table, set
 ** *ppLeaf to 0 and return SQLITE_OK. If an error occurs, set *ppLeaf
@@ -109783,11 +109783,11 @@ static int findLeafNode(Rtree *pRtree, i64 iRowid, RtreeNode **ppLeaf){
 }
 
 
-/* 
+/*
 ** Rtree virtual table module xFilter method.
 */
 static int rtreeFilter(
-  sqlite3_vtab_cursor *pVtabCursor, 
+  sqlite3_vtab_cursor *pVtabCursor,
   int idxNum, const char *idxStr,
   int argc, sqlite3_value **argv
 ){
@@ -109809,13 +109809,13 @@ static int rtreeFilter(
     RtreeNode *pLeaf;        /* Leaf on which the required cell resides */
     i64 iRowid = sqlite3_value_int64(argv[0]);
     rc = findLeafNode(pRtree, iRowid, &pLeaf);
-    pCsr->pNode = pLeaf; 
+    pCsr->pNode = pLeaf;
     if( pLeaf && rc==SQLITE_OK ){
       pCsr->iCell = nodeRowidIndex(pRtree, pLeaf, iRowid);
     }
   }else{
-    /* Normal case - r-tree scan. Set up the RtreeCursor.aConstraint array 
-    ** with the configured constraints. 
+    /* Normal case - r-tree scan. Set up the RtreeCursor.aConstraint array
+    ** with the configured constraints.
     */
     if( argc>0 ){
       pCsr->aConstraint = sqlite3_malloc(sizeof(RtreeConstraint)*argc);
@@ -109832,7 +109832,7 @@ static int rtreeFilter(
         }
       }
     }
-  
+
     if( rc==SQLITE_OK ){
       pCsr->pNode = 0;
       rc = nodeAcquire(pRtree, 1, 0, &pRoot);
@@ -109863,7 +109863,7 @@ static int rtreeFilter(
 
 /*
 ** Rtree virtual table module xBestIndex method. There are three
-** table scan strategies to choose from (in order from most to 
+** table scan strategies to choose from (in order from most to
 ** least desirable):
 **
 **   idxNum     idxStr        Strategy
@@ -109874,8 +109874,8 @@ static int rtreeFilter(
 **   ------------------------------------------------
 **
 ** If strategy 1 or 3 is used, then idxStr is not meaningful. If strategy
-** 2 is used, idxStr is formatted to contain 2 bytes for each 
-** constraint used. The first two bytes of idxStr correspond to 
+** 2 is used, idxStr is formatted to contain 2 bytes for each
+** constraint used. The first two bytes of idxStr correspond to
 ** the constraint in sqlite3_index_info.aConstraintUsage[] with
 ** (argvIndex==1) etc.
 **
@@ -109919,10 +109919,10 @@ static int rtreeBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo){
       pIdxInfo->aConstraintUsage[jj].omit = 1;
 
       /* This strategy involves a two rowid lookups on an B-Tree structures
-      ** and then a linear search of an R-Tree node. This should be 
-      ** considered almost as quick as a direct rowid lookup (for which 
+      ** and then a linear search of an R-Tree node. This should be
+      ** considered almost as quick as a direct rowid lookup (for which
       ** sqlite uses an internal cost of 0.0).
-      */ 
+      */
       pIdxInfo->estimatedCost = 10.0;
       return SQLITE_OK;
     }
@@ -110035,8 +110035,8 @@ static int cellContains(Rtree *pRtree, RtreeCell *p1, RtreeCell *p2){
   for(ii=0; ii<(pRtree->nDim*2); ii+=2){
     RtreeCoord *a1 = &p1->aCoord[ii];
     RtreeCoord *a2 = &p2->aCoord[ii];
-    if( (!isInt && (a2[0].f<a1[0].f || a2[1].f>a1[1].f)) 
-     || ( isInt && (a2[0].i<a1[0].i || a2[1].i>a1[1].i)) 
+    if( (!isInt && (a2[0].f<a1[0].f || a2[1].f>a1[1].f))
+     || ( isInt && (a2[0].i<a1[0].i || a2[1].i>a1[1].i))
     ){
       return 0;
     }
@@ -110058,10 +110058,10 @@ static float cellGrowth(Rtree *pRtree, RtreeCell *p, RtreeCell *pCell){
 
 #if VARIANT_RSTARTREE_CHOOSESUBTREE || VARIANT_RSTARTREE_SPLIT
 static float cellOverlap(
-  Rtree *pRtree, 
-  RtreeCell *p, 
-  RtreeCell *aCell, 
-  int nCell, 
+  Rtree *pRtree,
+  RtreeCell *p,
+  RtreeCell *aCell,
+  int nCell,
   int iExclude
 ){
   int ii;
@@ -110093,11 +110093,11 @@ static float cellOverlap(
 
 #if VARIANT_RSTARTREE_CHOOSESUBTREE
 static float cellOverlapEnlargement(
-  Rtree *pRtree, 
-  RtreeCell *p, 
-  RtreeCell *pInsert, 
-  RtreeCell *aCell, 
-  int nCell, 
+  Rtree *pRtree,
+  RtreeCell *p,
+  RtreeCell *pInsert,
+  RtreeCell *aCell,
+  int nCell,
   int iExclude
 ){
   float before;
@@ -110171,8 +110171,8 @@ static int ChooseLeaf(
         overlap = cellOverlapEnlargement(pRtree,&cell,pCell,aCell,nCell,iCell);
       }
 #endif
-      if( (iCell==0) 
-       || (overlap<fMinOverlap) 
+      if( (iCell==0)
+       || (overlap<fMinOverlap)
        || (overlap==fMinOverlap && growth<fMinGrowth)
        || (overlap==fMinOverlap && growth==fMinGrowth && area<fMinArea)
       ){
@@ -110214,7 +110214,7 @@ static void AdjustTree(
       cellUnion(pRtree, &cell, pCell);
       nodeOverwriteCell(pRtree, pParent, &cell, iCell);
     }
+
     p = pParent;
   }
 }
@@ -110248,9 +110248,9 @@ static int rtreeInsertCell(Rtree *, RtreeNode *, RtreeCell *, int);
 */
 static RtreeCell *LinearPickNext(
   Rtree *pRtree,
-  RtreeCell *aCell, 
-  int nCell, 
-  RtreeCell *pLeftBox, 
+  RtreeCell *aCell,
+  int nCell,
+  RtreeCell *pLeftBox,
   RtreeCell *pRightBox,
   int *aiUsed
 ){
@@ -110266,9 +110266,9 @@ static RtreeCell *LinearPickNext(
 */
 static void LinearPickSeeds(
   Rtree *pRtree,
-  RtreeCell *aCell, 
-  int nCell, 
-  int *piLeftSeed, 
+  RtreeCell *aCell,
+  int nCell,
+  int *piLeftSeed,
   int *piRightSeed
 ){
   int i;
@@ -110277,7 +110277,7 @@ static void LinearPickSeeds(
   float maxNormalInnerWidth = 0.0;
 
   /* Pick two "seed" cells from the array of cells. The algorithm used
-  ** here is the LinearPickSeeds algorithm from Gutman[1984]. The 
+  ** here is the LinearPickSeeds algorithm from Gutman[1984]. The
   ** indices of the two seed cells in the array are stored in local
   ** variables iLeftSeek and iRightSeed.
   */
@@ -110328,9 +110328,9 @@ static void LinearPickSeeds(
 */
 static RtreeCell *QuadraticPickNext(
   Rtree *pRtree,
-  RtreeCell *aCell, 
-  int nCell, 
-  RtreeCell *pLeftBox, 
+  RtreeCell *aCell,
+  int nCell,
+  RtreeCell *pLeftBox,
   RtreeCell *pRightBox,
   int *aiUsed
 ){
@@ -110360,9 +110360,9 @@ static RtreeCell *QuadraticPickNext(
 */
 static void QuadraticPickSeeds(
   Rtree *pRtree,
-  RtreeCell *aCell, 
-  int nCell, 
-  int *piLeftSeed, 
+  RtreeCell *aCell,
+  int nCell,
+  int *piLeftSeed,
   int *piRightSeed
 ){
   int ii;
@@ -110393,7 +110393,7 @@ static void QuadraticPickSeeds(
 
 /*
 ** Arguments aIdx, aDistance and aSpare all point to arrays of size
-** nIdx. The aIdx array contains the set of integers from 0 to 
+** nIdx. The aIdx array contains the set of integers from 0 to
 ** (nIdx-1) in no particular order. This function sorts the values
 ** in aIdx according to the indexed values in aDistance. For
 ** example, assuming the inputs:
@@ -110409,9 +110409,9 @@ static void QuadraticPickSeeds(
 ** sorting algorithm.
 */
 static void SortByDistance(
-  int *aIdx, 
-  int nIdx, 
-  float *aDistance, 
+  int *aIdx,
+  int nIdx,
+  float *aDistance,
   int *aSpare
 ){
   if( nIdx>1 ){
@@ -110465,7 +110465,7 @@ static void SortByDistance(
 
 /*
 ** Arguments aIdx, aCell and aSpare all point to arrays of size
-** nIdx. The aIdx array contains the set of integers from 0 to 
+** nIdx. The aIdx array contains the set of integers from 0 to
 ** (nIdx-1) in no particular order. This function sorts the values
 ** in aIdx according to dimension iDim of the cells in aCell. The
 ** minimum value of dimension iDim is considered first, the
@@ -110476,10 +110476,10 @@ static void SortByDistance(
 */
 static void SortByDimension(
   Rtree *pRtree,
-  int *aIdx, 
-  int nIdx, 
-  int iDim, 
-  RtreeCell *aCell, 
+  int *aIdx,
+  int nIdx,
+  int iDim,
+  RtreeCell *aCell,
   int *aSpare
 ){
   if( nIdx>1 ){
@@ -110577,8 +110577,8 @@ static int splitNodeStartree(
     int nLeft;
 
     for(
-      nLeft=RTREE_MINCELLS(pRtree); 
-      nLeft<=(nCell-RTREE_MINCELLS(pRtree)); 
+      nLeft=RTREE_MINCELLS(pRtree);
+      nLeft<=(nCell-RTREE_MINCELLS(pRtree));
       nLeft++
     ){
       RtreeCell left;
@@ -110668,8 +110668,8 @@ static int splitNodeGuttman(
   for(i=nCell-2; i>0; i--){
     RtreeCell *pNext;
     pNext = PickNext(pRtree, aCell, nCell, pBboxLeft, pBboxRight, aiUsed);
-    float diff =  
-      cellGrowth(pRtree, pBboxLeft, pNext) - 
+    float diff =
+      cellGrowth(pRtree, pBboxLeft, pNext) -
       cellGrowth(pRtree, pBboxRight, pNext)
     ;
     if( (RTREE_MINCELLS(pRtree)-NCELL(pRight)==i)
@@ -110689,9 +110689,9 @@ static int splitNodeGuttman(
 #endif
 
 static int updateMapping(
-  Rtree *pRtree, 
-  i64 iRowid, 
-  RtreeNode *pNode, 
+  Rtree *pRtree,
+  i64 iRowid,
+  RtreeNode *pNode,
   int iHeight
 ){
   int (*xSetMapping)(Rtree *, sqlite3_int64, sqlite3_int64);
@@ -110727,7 +110727,7 @@ static int SplitNode(
   RtreeCell leftbbox;
   RtreeCell rightbbox;
 
-  /* Allocate an array and populate it with a copy of pCell and 
+  /* Allocate an array and populate it with a copy of pCell and
   ** all cells from node pLeft. Then zero the original node.
   */
   aCell = sqlite3_malloc((sizeof(RtreeCell)+sizeof(int))*(nCell+1));
@@ -110863,7 +110863,7 @@ static int removeNode(Rtree *pRtree, RtreeNode *pNode, int iHeight){
   iCell = nodeParentIndex(pRtree, pNode);
   pParent = pNode->pParent;
   pNode->pParent = 0;
-  if( SQLITE_OK!=(rc = deleteCell(pRtree, pParent, iCell, iHeight+1)) 
+  if( SQLITE_OK!=(rc = deleteCell(pRtree, pParent, iCell, iHeight+1))
    || SQLITE_OK!=(rc = nodeRelease(pRtree, pParent))
   ){
     return rc;
@@ -110882,7 +110882,7 @@ static int removeNode(Rtree *pRtree, RtreeNode *pNode, int iHeight){
   if( SQLITE_OK!=(rc = sqlite3_reset(pRtree->pDeleteParent)) ){
     return rc;
   }
-  
+
   /* Remove the node from the in-memory hash table and link it into
   ** the Rtree.pDeleted list. Its contents will be re-inserted later on.
   */
@@ -110898,7 +110898,7 @@ static int removeNode(Rtree *pRtree, RtreeNode *pNode, int iHeight){
 static void fixBoundingBox(Rtree *pRtree, RtreeNode *pNode){
   RtreeNode *pParent = pNode->pParent;
   if( pParent ){
-    int ii; 
+    int ii;
     int nCell = NCELL(pNode);
     RtreeCell box;                            /* Bounding box for pNode */
     nodeGetCell(pRtree, pNode, 0, &box);
@@ -110937,7 +110937,7 @@ static int deleteCell(Rtree *pRtree, RtreeNode *pNode, int iCell, int iHeight){
   */
   if( pNode->iNode!=1 ){
     RtreeNode *pParent = pNode->pParent;
-    if( (pParent->iNode!=1 || NCELL(pParent)!=1) 
+    if( (pParent->iNode!=1 || NCELL(pParent)!=1)
      && (NCELL(pNode)<RTREE_MINCELLS(pRtree))
     ){
       rc = removeNode(pRtree, pNode, iHeight);
@@ -110950,9 +110950,9 @@ static int deleteCell(Rtree *pRtree, RtreeNode *pNode, int iCell, int iHeight){
 }
 
 static int Reinsert(
-  Rtree *pRtree, 
-  RtreeNode *pNode, 
-  RtreeCell *pCell, 
+  Rtree *pRtree,
+  RtreeNode *pNode,
+  RtreeCell *pCell,
   int iHeight
 ){
   int *aOrder;
@@ -111004,7 +111004,7 @@ static int Reinsert(
   for(ii=0; ii<nCell; ii++){
     aDistance[ii] = 0.0;
     for(iDim=0; iDim<pRtree->nDim; iDim++){
-      float coord = DCOORD(aCell[ii].aCoord[iDim*2+1]) - 
+      float coord = DCOORD(aCell[ii].aCoord[iDim*2+1]) -
           DCOORD(aCell[ii].aCoord[iDim*2]);
       aDistance[ii] += (coord-aCenterCoord[iDim])*(coord-aCenterCoord[iDim]);
     }
@@ -111049,7 +111049,7 @@ static int Reinsert(
 }
 
 /*
-** Insert cell pCell into node pNode. Node pNode is the head of a 
+** Insert cell pCell into node pNode. Node pNode is the head of a
 ** subtree iHeight high (leaf nodes have iHeight==0).
 */
 static int rtreeInsertCell(
@@ -111142,9 +111142,9 @@ static int hashIsEmpty(Rtree *pRtree){
 ** The xUpdate method for rtree module virtual tables.
 */
 static int rtreeUpdate(
-  sqlite3_vtab *pVtab, 
-  int nData, 
-  sqlite3_value **azData, 
+  sqlite3_vtab *pVtab,
+  int nData,
+  sqlite3_value **azData,
   sqlite_int64 *pRowid
 ){
   Rtree *pRtree = (Rtree *)pVtab;
@@ -111168,8 +111168,8 @@ static int rtreeUpdate(
     /* Obtain a reference to the root node to initialise Rtree.iDepth */
     rc = nodeAcquire(pRtree, 1, 0, &pRoot);
 
-    /* Obtain a reference to the leaf node that contains the entry 
-    ** about to be deleted. 
+    /* Obtain a reference to the leaf node that contains the entry
+    ** about to be deleted.
     */
     if( rc==SQLITE_OK ){
       iDelete = sqlite3_value_int64(azData[0]);
@@ -111195,11 +111195,11 @@ static int rtreeUpdate(
     }
 
     /* Check if the root node now has exactly one child. If so, remove
-    ** it, schedule the contents of the child for reinsertion and 
+    ** it, schedule the contents of the child for reinsertion and
     ** reduce the tree height by one.
     **
     ** This is equivalent to copying the contents of the child into
-    ** the root node (the operation that Gutman's paper says to perform 
+    ** the root node (the operation that Gutman's paper says to perform
     ** in this scenario).
     */
     if( rc==SQLITE_OK && pRtree->iDepth>0 ){
@@ -111310,8 +111310,8 @@ static int rtreeRename(sqlite3_vtab *pVtab, const char *zNewName){
     "ALTER TABLE %Q.'%q_node'   RENAME TO \"%w_node\";"
     "ALTER TABLE %Q.'%q_parent' RENAME TO \"%w_parent\";"
     "ALTER TABLE %Q.'%q_rowid'  RENAME TO \"%w_rowid\";"
-    , pRtree->zDb, pRtree->zName, zNewName 
-    , pRtree->zDb, pRtree->zName, zNewName 
+    , pRtree->zDb, pRtree->zName, zNewName
+    , pRtree->zDb, pRtree->zName, zNewName
     , pRtree->zDb, pRtree->zName, zNewName
   );
   if( zSql ){
@@ -111345,10 +111345,10 @@ static sqlite3_module rtreeModule = {
 };
 
 static int rtreeSqlInit(
-  Rtree *pRtree, 
-  sqlite3 *db, 
-  const char *zDb, 
-  const char *zPrefix, 
+  Rtree *pRtree,
+  sqlite3 *db,
+  const char *zDb,
+  const char *zPrefix,
   int isCreate
 ){
   int rc = SQLITE_OK;
@@ -111406,7 +111406,7 @@ static int rtreeSqlInit(
   for(i=0; i<N_STATEMENT && rc==SQLITE_OK; i++){
     char *zSql = sqlite3_mprintf(azSql[i], zDb, zPrefix);
     if( zSql ){
-      rc = sqlite3_prepare_v2(db, zSql, -1, appStmt[i], 0); 
+      rc = sqlite3_prepare_v2(db, zSql, -1, appStmt[i], 0);
     }else{
       rc = SQLITE_NOMEM;
     }
@@ -111448,9 +111448,9 @@ static int getIntFromStmt(sqlite3 *db, const char *zSql, int *piVal){
 ** table already exists. In this case the node-size is determined by inspecting
 ** the root node of the tree.
 **
-** Otherwise, for an xCreate(), use 64 bytes less than the database page-size. 
-** This ensures that each node is stored on a single database page. If the 
-** database page-size is so large that more than RTREE_MAXCELLS entries 
+** Otherwise, for an xCreate(), use 64 bytes less than the database page-size.
+** This ensures that each node is stored on a single database page. If the
+** database page-size is so large that more than RTREE_MAXCELLS entries
 ** would fit in a single node, use a smaller node-size.
 */
 static int getNodeSize(
@@ -111482,7 +111482,7 @@ static int getNodeSize(
   return rc;
 }
 
-/* 
+/*
 ** This function is the implementation of both the xConnect and xCreate
 ** methods of the r-tree virtual table.
 **
@@ -111591,7 +111591,7 @@ static int rtreeInit(
 **
 ** The human readable string takes the form of a Tcl list with one
 ** entry for each cell in the r-tree node. Each entry is itself a
-** list, containing the 8-byte rowid/pageno followed by the 
+** list, containing the 8-byte rowid/pageno followed by the
 ** <num-dimension>*2 coordinates.
 */
 static void rtreenode(sqlite3_context *ctx, int nArg, sqlite3_value **apArg){
@@ -111628,15 +111628,15 @@ static void rtreenode(sqlite3_context *ctx, int nArg, sqlite3_value **apArg){
       zText = sqlite3_mprintf("{%s}", zCell);
     }
   }
-  
+
   sqlite3_result_text(ctx, zText, -1, sqlite3_free);
 }
 
 static void rtreedepth(sqlite3_context *ctx, int nArg, sqlite3_value **apArg){
-  if( sqlite3_value_type(apArg[0])!=SQLITE_BLOB 
+  if( sqlite3_value_type(apArg[0])!=SQLITE_BLOB
    || sqlite3_value_bytes(apArg[0])<2
   ){
-    sqlite3_result_error(ctx, "Invalid argument to rtreedepth()", -1); 
+    sqlite3_result_error(ctx, "Invalid argument to rtreedepth()", -1);
   }else{
     u8 *zBlob = (u8 *)sqlite3_value_blob(apArg[0]);
     sqlite3_result_int(ctx, readInt16(zBlob));
@@ -111645,7 +111645,7 @@ static void rtreedepth(sqlite3_context *ctx, int nArg, sqlite3_value **apArg){
 
 /*
 ** Register the r-tree module with database handle db. This creates the
-** virtual table module "rtree" and the debugging/analysis scalar 
+** virtual table module "rtree" and the debugging/analysis scalar
 ** function "rtreenode".
 */
 SQLITE_PRIVATE int sqlite3RtreeInit(sqlite3 *db){
@@ -111699,9 +111699,9 @@ SQLITE_API int sqlite3_extension_init(
 *************************************************************************
 ** $Id: icu.c,v 1.7 2007/12/13 21:54:11 drh Exp $
 **
-** This file implements an integration between the ICU library 
-** ("International Components for Unicode", an open-source library 
-** for handling unicode data) and SQLite. The integration uses 
+** This file implements an integration between the ICU library
+** ("International Components for Unicode", an open-source library
+** for handling unicode data) and SQLite. The integration uses
 ** ICU to provide the following to SQLite:
 **
 **   * An implementation of the SQL regexp() function (and hence REGEXP
@@ -111712,7 +111712,7 @@ SQLITE_API int sqlite3_extension_init(
 **
 **   * Integration of ICU and SQLite collation seqences.
 **
-**   * An implementation of the LIKE operator that uses ICU to 
+**   * An implementation of the LIKE operator that uses ICU to
 **     provide case-independent matching.
 */
 
@@ -111747,7 +111747,7 @@ static void xFree(void *p){
 
 /*
 ** Compare two UTF-8 strings for equality where the first string is
-** a "LIKE" expression. Return true (1) if they are the same and 
+** a "LIKE" expression. Return true (1) if they are the same and
 ** false (0) if they are different.
 */
 static int icuLikeCompare(
@@ -111782,7 +111782,7 @@ static int icuLikeCompare(
       uint8_t c;
 
       /* Skip any MATCH_ALL or MATCH_ONE characters that follow a
-      ** MATCH_ALL. For each MATCH_ONE, skip one character in the 
+      ** MATCH_ALL. For each MATCH_ONE, skip one character in the
       ** test string.
       */
       while( (c=zPattern[iPattern]) == MATCH_ALL || c == MATCH_ONE ){
@@ -111835,15 +111835,15 @@ static int icuLikeCompare(
 **
 **       A LIKE B
 **
-** is implemented as like(B, A). If there is an escape character E, 
+** is implemented as like(B, A). If there is an escape character E,
 **
 **       A LIKE B ESCAPE E
 **
 ** is mapped to like(B, A, E).
 */
 static void icuLikeFunc(
-  sqlite3_context *context, 
-  int argc, 
+  sqlite3_context *context,
+  int argc,
   sqlite3_value **argv
 ){
   const unsigned char *zA = sqlite3_value_text(argv[0]);
@@ -111869,7 +111869,7 @@ static void icuLikeFunc(
     if( zE==0 ) return;
     U8_NEXT(zE, i, nE, uEsc);
     if( i!=nE){
-      sqlite3_result_error(context, 
+      sqlite3_result_error(context,
           "ESCAPE expression must be a single character", -1);
       return;
     }
@@ -111884,7 +111884,7 @@ static void icuLikeFunc(
 ** This function is called when an ICU function called from within
 ** the implementation of an SQL scalar function returns an error.
 **
-** The scalar function context passed as the first argument is 
+** The scalar function context passed as the first argument is
 ** loaded with an error message based on the following two args.
 */
 static void icuFunctionError(
@@ -111910,7 +111910,7 @@ static void icuRegexpDelete(void *p){
 /*
 ** Implementation of SQLite REGEXP operator. This scalar function takes
 ** two arguments. The first is a regular expression pattern to compile
-** the second is a string to match against that pattern. If either 
+** the second is a string to match against that pattern. If either
 ** argument is an SQL NULL, then NULL Is returned. Otherwise, the result
 ** is 1 if the string matches the pattern, or 0 otherwise.
 **
@@ -111932,8 +111932,8 @@ static void icuRegexpFunc(sqlite3_context *p, int nArg, sqlite3_value **apArg){
   UBool res;
   const UChar *zString = sqlite3_value_text16(apArg[1]);
 
-  /* If the left hand side of the regexp operator is NULL, 
-  ** then the result is also NULL. 
+  /* If the left hand side of the regexp operator is NULL,
+  ** then the result is also NULL.
   */
   if( !zString ){
     return;
@@ -111971,7 +111971,7 @@ static void icuRegexpFunc(sqlite3_context *p, int nArg, sqlite3_value **apArg){
   }
 
   /* Set the text that the regular expression operates on to a NULL
-  ** pointer. This is not really necessary, but it is tidier than 
+  ** pointer. This is not really necessary, but it is tidier than
   ** leaving the regular expression object configured with an invalid
   ** pointer after this function returns.
   */
@@ -111982,7 +111982,7 @@ static void icuRegexpFunc(sqlite3_context *p, int nArg, sqlite3_value **apArg){
 }
 
 /*
-** Implementations of scalar functions for case mapping - upper() and 
+** Implementations of scalar functions for case mapping - upper() and
 ** lower(). Function upper() converts its input to upper-case (ABC).
 ** Function lower() converts to lower-case (abc).
 **
@@ -111990,7 +111990,7 @@ static void icuRegexpFunc(sqlite3_context *p, int nArg, sqlite3_value **apArg){
 ** "language specific". Refer to ICU documentation for the differences
 ** between the two.
 **
-** To utilise "general" case mapping, the upper() or lower() scalar 
+** To utilise "general" case mapping, the upper() or lower() scalar
 ** functions are invoked with one argument:
 **
 **     upper('ABC') -> 'abc'
@@ -112082,7 +112082,7 @@ static int icuCollationColl(
 /*
 ** Implementation of the scalar function icu_load_collation().
 **
-** This scalar function is used to add ICU collation based collation 
+** This scalar function is used to add ICU collation based collation
 ** types to an SQLite database connection. It is intended to be called
 ** as follows:
 **
@@ -112093,8 +112093,8 @@ static int icuCollationColl(
 ** collation sequence to create.
 */
 static void icuLoadCollation(
-  sqlite3_context *p, 
-  int nArg, 
+  sqlite3_context *p,
+  int nArg,
   sqlite3_value **apArg
 ){
   sqlite3 *db = (sqlite3 *)sqlite3_user_data(p);
@@ -112119,7 +112119,7 @@ static void icuLoadCollation(
   }
   assert(p);
 
-  rc = sqlite3_create_collation_v2(db, zName, SQLITE_UTF16, (void *)pUCollator, 
+  rc = sqlite3_create_collation_v2(db, zName, SQLITE_UTF16, (void *)pUCollator,
       icuCollationColl, icuCollationDel
   );
   if( rc!=SQLITE_OK ){
@@ -112172,7 +112172,7 @@ SQLITE_PRIVATE int sqlite3IcuInit(sqlite3 *db){
 
 #if !SQLITE_CORE
 SQLITE_API int sqlite3_extension_init(
-  sqlite3 *db, 
+  sqlite3 *db,
   char **pzErrMsg,
   const sqlite3_api_routines *pApi
 ){
@@ -112197,7 +112197,7 @@ SQLITE_API int sqlite3_extension_init(
 **
 *************************************************************************
 ** This file implements a tokenizer for fts3 based on the ICU library.
-** 
+**
 ** $Id: fts3_icu.c,v 1.3 2008/09/01 18:34:20 danielk1977 Exp $
 */
 
@@ -112272,7 +112272,7 @@ static int icuDestroy(sqlite3_tokenizer *pTokenizer){
 /*
 ** Prepare to begin tokenizing a particular string.  The input
 ** string to be tokenized is pInput[0..nBytes-1].  A cursor
-** used to incrementally tokenize this string is returned in 
+** used to incrementally tokenize this string is returned in
 ** *ppCursor.
 */
 static int icuOpen(
@@ -112311,7 +112311,7 @@ static int icuOpen(
   pCsr->aOffset = (int *)&pCsr->aChar[nChar];
 
   pCsr->aOffset[iOut] = iInput;
-  U8_NEXT(zInput, iInput, nInput, c); 
+  U8_NEXT(zInput, iInput, nInput, c);
   while( c>0 ){
     int isError = 0;
     c = u_foldCase(c, opt);
index d72fdbd51af3c6d71d0e7ead2a1f489ebf932f8e..18ef20f07bd9838835025bf70d0515d1d7c61a85 100644 (file)
@@ -135,8 +135,8 @@ extern "C" {
 ** function is provided for use in DLLs since DLL users usually do not have
 ** direct access to string constants within the DLL.  ^The
 ** sqlite3_libversion_number() function returns an integer equal to
-** [SQLITE_VERSION_NUMBER].  ^The sqlite3_sourceid() function returns 
-** a pointer to a string constant whose value is the same as the 
+** [SQLITE_VERSION_NUMBER].  ^The sqlite3_sourceid() function returns
+** a pointer to a string constant whose value is the same as the
 ** [SQLITE_SOURCE_ID] C preprocessor macro.
 **
 ** See also: [sqlite_version()] and [sqlite_source_id()].
@@ -150,20 +150,20 @@ SQLITE_API int sqlite3_libversion_number(void);
 /*
 ** CAPI3REF: Run-Time Library Compilation Options Diagnostics
 **
-** ^The sqlite3_compileoption_used() function returns 0 or 1 
-** indicating whether the specified option was defined at 
-** compile time.  ^The SQLITE_ prefix may be omitted from the 
-** option name passed to sqlite3_compileoption_used().  
+** ^The sqlite3_compileoption_used() function returns 0 or 1
+** indicating whether the specified option was defined at
+** compile time.  ^The SQLITE_ prefix may be omitted from the
+** option name passed to sqlite3_compileoption_used().
 **
 ** ^The sqlite3_compileoption_get() function allows interating
 ** over the list of options that were defined at compile time by
 ** returning the N-th compile time option string.  ^If N is out of range,
-** sqlite3_compileoption_get() returns a NULL pointer.  ^The SQLITE_ 
-** prefix is omitted from any strings returned by 
+** sqlite3_compileoption_get() returns a NULL pointer.  ^The SQLITE_
+** prefix is omitted from any strings returned by
 ** sqlite3_compileoption_get().
 **
 ** ^Support for the diagnostic functions sqlite3_compileoption_used()
-** and sqlite3_compileoption_get() may be omitted by specifing the 
+** and sqlite3_compileoption_get() may be omitted by specifing the
 ** [SQLITE_OMIT_COMPILEOPTION_DIAGS] option at compile time.
 **
 ** See also: SQL functions [sqlite_compileoption_used()] and
@@ -183,7 +183,7 @@ SQLITE_API const char *sqlite3_compileoption_get(int N);
 ** SQLite can be compiled with or without mutexes.  When
 ** the [SQLITE_THREADSAFE] C preprocessor macro is 1 or 2, mutexes
 ** are enabled and SQLite is threadsafe.  When the
-** [SQLITE_THREADSAFE] macro is 0, 
+** [SQLITE_THREADSAFE] macro is 0,
 ** the mutexes are omitted.  Without the mutexes, it is not safe
 ** to use SQLite concurrently from more than one thread.
 **
@@ -239,7 +239,7 @@ typedef struct sqlite3 sqlite3;
 **
 ** ^The sqlite3_int64 and sqlite_int64 types can store integer values
 ** between -9223372036854775808 and +9223372036854775807 inclusive.  ^The
-** sqlite3_uint64 and sqlite_uint64 types can store integer values 
+** sqlite3_uint64 and sqlite_uint64 types can store integer values
 ** between 0 and +18446744073709551615 inclusive.
 */
 #ifdef SQLITE_INT64_TYPE
@@ -284,7 +284,7 @@ typedef sqlite_uint64 sqlite3_uint64;
 ** pointer or an [sqlite3] object pointer obtained
 ** from [sqlite3_open()], [sqlite3_open16()], or
 ** [sqlite3_open_v2()], and not previously closed.
-** ^Calling sqlite3_close() with a NULL pointer argument is a 
+** ^Calling sqlite3_close() with a NULL pointer argument is a
 ** harmless no-op.
 */
 SQLITE_API int sqlite3_close(sqlite3 *);
@@ -302,7 +302,7 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
 ** The sqlite3_exec() interface is a convenience wrapper around
 ** [sqlite3_prepare_v2()], [sqlite3_step()], and [sqlite3_finalize()],
 ** that allows an application to run multiple statements of SQL
-** without having to use a lot of C code. 
+** without having to use a lot of C code.
 **
 ** ^The sqlite3_exec() interface runs zero or more UTF-8 encoded,
 ** semicolon-separate SQL statements passed into its 2nd argument,
@@ -342,7 +342,7 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
 ** from [sqlite3_column_name()].
 **
 ** ^If the 2nd parameter to sqlite3_exec() is a NULL pointer, a pointer
-** to an empty string, or a pointer that contains only whitespace and/or 
+** to an empty string, or a pointer that contains only whitespace and/or
 ** SQL comments, then no SQL statements are evaluated and the database
 ** is not changed.
 **
@@ -543,7 +543,7 @@ SQLITE_API int sqlite3_exec(
 /*
 ** CAPI3REF: OS Interface Open File Handle
 **
-** An [sqlite3_file] object represents an open file in the 
+** An [sqlite3_file] object represents an open file in the
 ** [sqlite3_vfs | OS interface layer].  Individual OS interface
 ** implementations will
 ** want to subclass this object by appending additional fields
@@ -565,7 +565,7 @@ struct sqlite3_file {
 ** This object defines the methods used to perform various operations
 ** against the open file represented by the [sqlite3_file] object.
 **
-** If the xOpen method sets the sqlite3_file.pMethods element 
+** If the xOpen method sets the sqlite3_file.pMethods element
 ** to a non-NULL pointer, then the sqlite3_io_methods.xClose method
 ** may be invoked even if the xOpen reported that it failed.  The
 ** only way to prevent a call to xClose following a failed xOpen
@@ -735,14 +735,14 @@ typedef struct sqlite3_mutex sqlite3_mutex;
 ** the [sqlite3_file] can safely store a pointer to the
 ** filename if it needs to remember the filename for some reason.
 ** If the zFilename parameter is xOpen is a NULL pointer then xOpen
-** must invent its own temporary name for the file.  Whenever the 
+** must invent its own temporary name for the file.  Whenever the
 ** xFilename parameter is NULL it will also be the case that the
 ** flags parameter will include [SQLITE_OPEN_DELETEONCLOSE].
 **
 ** The flags argument to xOpen() includes all bits set in
 ** the flags argument to [sqlite3_open_v2()].  Or if [sqlite3_open()]
 ** or [sqlite3_open16()] is used, then flags includes at least
-** [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]. 
+** [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE].
 ** If xOpen() opens a file read-only then it sets *pOutFlags to
 ** include [SQLITE_OPEN_READONLY].  Other bits in *pOutFlags may be set.
 **
@@ -782,10 +782,10 @@ typedef struct sqlite3_mutex sqlite3_mutex;
 ** The [SQLITE_OPEN_EXCLUSIVE] flag is always used in conjunction
 ** with the [SQLITE_OPEN_CREATE] flag, which are both directly
 ** analogous to the O_EXCL and O_CREAT flags of the POSIX open()
-** API.  The SQLITE_OPEN_EXCLUSIVE flag, when paired with the 
+** API.  The SQLITE_OPEN_EXCLUSIVE flag, when paired with the
 ** SQLITE_OPEN_CREATE, is used to indicate that file should always
 ** be created, and that it is an error if it already exists.
-** It is <i>not</i> used to indicate the file should be opened 
+** It is <i>not</i> used to indicate the file should be opened
 ** for exclusive access.
 **
 ** At least szOsFile bytes of memory are allocated by SQLite
@@ -985,7 +985,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_config(int, ...);
 ** [database connection] (specified in the first argument).  The
 ** sqlite3_db_config() interface should only be used immediately after
 ** the database connection is created using [sqlite3_open()],
-** [sqlite3_open16()], or [sqlite3_open_v2()].  
+** [sqlite3_open16()], or [sqlite3_open_v2()].
 **
 ** The second argument to sqlite3_db_config(D,V,...)  is the
 ** configuration verb - an integer code that indicates what
@@ -1009,7 +1009,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_db_config(sqlite3*, int op, ...);
 ** This object is used in only one place in the SQLite interface.
 ** A pointer to an instance of this object is the argument to
 ** [sqlite3_config()] when the configuration option is
-** [SQLITE_CONFIG_MALLOC] or [SQLITE_CONFIG_GETMALLOC].  
+** [SQLITE_CONFIG_MALLOC] or [SQLITE_CONFIG_GETMALLOC].
 ** By creating an instance of this object
 ** and passing it to [sqlite3_config]([SQLITE_CONFIG_MALLOC])
 ** during configuration, an application can specify an alternative
@@ -1045,7 +1045,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_db_config(sqlite3*, int op, ...);
 ** allocators round up memory allocations at least to the next multiple
 ** of 8.  Some allocators round up to a larger multiple or to a power of 2.
 ** Every memory allocation request coming in through [sqlite3_malloc()]
-** or [sqlite3_realloc()] first calls xRoundup.  If xRoundup returns 0, 
+** or [sqlite3_realloc()] first calls xRoundup.  If xRoundup returns 0,
 ** that causes the corresponding memory allocation to fail.
 **
 ** The xInit method initializes the memory allocator.  (For example,
@@ -1103,7 +1103,7 @@ struct sqlite3_mem_methods {
 ** by a single thread.   ^If SQLite is compiled with
 ** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
 ** it is not possible to change the [threading mode] from its default
-** value of Single-thread and so [sqlite3_config()] will return 
+** value of Single-thread and so [sqlite3_config()] will return
 ** [SQLITE_ERROR] if called with the SQLITE_CONFIG_SINGLETHREAD
 ** configuration option.</dd>
 **
@@ -1154,9 +1154,9 @@ struct sqlite3_mem_methods {
 ** tracks memory usage, for example. </dd>
 **
 ** <dt>SQLITE_CONFIG_MEMSTATUS</dt>
-** <dd> ^This option takes single argument of type int, interpreted as a 
-** boolean, which enables or disables the collection of memory allocation 
-** statistics. ^(When memory allocation statistics are disabled, the 
+** <dd> ^This option takes single argument of type int, interpreted as a
+** boolean, which enables or disables the collection of memory allocation
+** statistics. ^(When memory allocation statistics are disabled, the
 ** following SQLite interfaces become non-operational:
 **   <ul>
 **   <li> [sqlite3_memory_used()]
@@ -1182,13 +1182,13 @@ struct sqlite3_mem_methods {
 ** ^SQLite will use no more than one scratch buffer per thread.  So
 ** N should be set to the expected maximum number of threads.  ^SQLite will
 ** never require a scratch buffer that is more than 6 times the database
-** page size. ^If SQLite needs needs additional scratch memory beyond 
-** what is provided by this configuration option, then 
+** page size. ^If SQLite needs needs additional scratch memory beyond
+** what is provided by this configuration option, then
 ** [sqlite3_malloc()] will be used to obtain the memory needed.</dd>
 **
 ** <dt>SQLITE_CONFIG_PAGECACHE</dt>
 ** <dd> ^This option specifies a static memory buffer that SQLite can use for
-** the database page cache with the default page cache implemenation.  
+** the database page cache with the default page cache implemenation.
 ** This configuration should not be used if an application-define page
 ** cache implementation is loaded using the SQLITE_CONFIG_PCACHE option.
 ** There are three arguments to this option: A pointer to 8-byte aligned
@@ -1203,7 +1203,7 @@ struct sqlite3_mem_methods {
 ** memory needs for the first N pages that it adds to cache.  ^If additional
 ** page cache memory is needed beyond what is provided by this option, then
 ** SQLite goes to [sqlite3_malloc()] for the additional storage space.
-** ^The implementation might use one or more of the N buffers to hold 
+** ^The implementation might use one or more of the N buffers to hold
 ** memory accounting information. The pointer in the first argument must
 ** be aligned to an 8-byte boundary or subsequent behavior of SQLite
 ** will be undefined.</dd>
@@ -1282,7 +1282,7 @@ struct sqlite3_mem_methods {
 #define SQLITE_CONFIG_MEMSTATUS     9  /* boolean */
 #define SQLITE_CONFIG_MUTEX        10  /* sqlite3_mutex_methods* */
 #define SQLITE_CONFIG_GETMUTEX     11  /* sqlite3_mutex_methods* */
-/* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */ 
+/* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */
 #define SQLITE_CONFIG_LOOKASIDE    13  /* int int */
 #define SQLITE_CONFIG_PCACHE       14  /* sqlite3_pcache_methods* */
 #define SQLITE_CONFIG_GETPCACHE    15  /* sqlite3_pcache_methods* */
@@ -1304,7 +1304,7 @@ struct sqlite3_mem_methods {
 **
 ** <dl>
 ** <dt>SQLITE_DBCONFIG_LOOKASIDE</dt>
-** <dd> ^This option takes three additional arguments that determine the 
+** <dd> ^This option takes three additional arguments that determine the
 ** [lookaside memory allocator] configuration for the [database connection].
 ** ^The first argument (the third parameter to [sqlite3_db_config()] is a
 ** pointer to an memory buffer to use for lookaside memory.
@@ -1400,7 +1400,7 @@ SQLITE_API sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
 ** mechanisms do not count as direct row changes.)^
 **
 ** A "trigger context" is a scope of execution that begins and
-** ends with the script of a [CREATE TRIGGER | trigger]. 
+** ends with the script of a [CREATE TRIGGER | trigger].
 ** Most SQL statements are
 ** evaluated outside of any trigger.  This is the "top level"
 ** trigger context.  If a trigger fires from the top level, a
@@ -1443,7 +1443,7 @@ SQLITE_API int sqlite3_changes(sqlite3*);
 ** the count does not include changes used to implement [REPLACE] constraints,
 ** do rollbacks or ABORT processing, or [DROP TABLE] processing.  The
 ** count does not include rows of views that fire an [INSTEAD OF trigger],
-** though if the INSTEAD OF trigger makes changes of its own, those changes 
+** though if the INSTEAD OF trigger makes changes of its own, those changes
 ** are counted.)^
 ** ^The sqlite3_total_changes() function counts the changes as soon as
 ** the statement that makes them is completed (when the statement handle
@@ -1483,7 +1483,7 @@ SQLITE_API int sqlite3_total_changes(sqlite3*);
 **
 ** ^The sqlite3_interrupt(D) call is in effect until all currently running
 ** SQL statements on [database connection] D complete.  ^Any new SQL statements
-** that are started after the sqlite3_interrupt() call and before the 
+** that are started after the sqlite3_interrupt() call and before the
 ** running statements reaches zero are interrupted as if they had been
 ** running prior to the sqlite3_interrupt() call.  ^New SQL statements
 ** that are started after the running statement count reaches zero are
@@ -1518,7 +1518,7 @@ SQLITE_API void sqlite3_interrupt(sqlite3*);
 ** ^These routines do not parse the SQL statements thus
 ** will not detect syntactically incorrect SQL.
 **
-** ^(If SQLite has not been initialized using [sqlite3_initialize()] prior 
+** ^(If SQLite has not been initialized using [sqlite3_initialize()] prior
 ** to invoking sqlite3_complete16() then sqlite3_initialize() is invoked
 ** automatically by sqlite3_complete16().  If that initialization fails,
 ** then the return value from sqlite3_complete16() will be non-zero
@@ -1593,7 +1593,7 @@ SQLITE_API int sqlite3_complete16(const void *sql);
 ** The busy callback should not take any actions which modify the
 ** database connection that invoked the busy handler.  Any such actions
 ** result in undefined behavior.
-** 
+**
 ** A busy handler must not close the database connection
 ** or [prepared statement] that invoked the busy handler.
 */
@@ -1935,7 +1935,7 @@ SQLITE_API void sqlite3_randomness(int N, void *P);
 ** requested is ok.  ^When the callback returns [SQLITE_DENY], the
 ** [sqlite3_prepare_v2()] or equivalent call that triggered the
 ** authorizer will fail with an error message explaining that
-** access is denied. 
+** access is denied.
 **
 ** ^The first parameter to the authorizer callback is a copy of the third
 ** parameter to the sqlite3_set_authorizer() interface. ^The second parameter
@@ -1982,7 +1982,7 @@ SQLITE_API void sqlite3_randomness(int N, void *P);
 ** database connections for the meaning of "modify" in this paragraph.
 **
 ** ^When [sqlite3_prepare_v2()] is used to prepare a statement, the
-** statement might be re-prepared during [sqlite3_step()] due to a 
+** statement might be re-prepared during [sqlite3_step()] due to a
 ** schema change.  Hence, the application should ensure that the
 ** correct authorizer callback remains in place during the [sqlite3_step()].
 **
@@ -2137,7 +2137,7 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
 ** except that it accepts two additional parameters for additional control
 ** over the new database connection.  ^(The flags parameter to
 ** sqlite3_open_v2() can take one of
-** the following three values, optionally combined with the 
+** the following three values, optionally combined with the
 ** [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX], [SQLITE_OPEN_SHAREDCACHE],
 ** and/or [SQLITE_OPEN_PRIVATECACHE] flags:)^
 **
@@ -2221,7 +2221,7 @@ SQLITE_API int sqlite3_open_v2(
 ** associated with a [database connection]. If a prior API call failed
 ** but the most recent API call succeeded, the return value from
 ** sqlite3_errcode() is undefined.  ^The sqlite3_extended_errcode()
-** interface is the same except that it always returns the 
+** interface is the same except that it always returns the
 ** [extended result code] even when extended result codes are
 ** disabled.
 **
@@ -2288,9 +2288,9 @@ typedef struct sqlite3_stmt sqlite3_stmt;
 ** new limit for that construct.  The function returns the old limit.)^
 **
 ** ^If the new limit is a negative number, the limit is unchanged.
-** ^(For the limit category of SQLITE_LIMIT_XYZ there is a 
+** ^(For the limit category of SQLITE_LIMIT_XYZ there is a
 ** [limits | hard upper bound]
-** set by a compile-time C preprocessor macro named 
+** set by a compile-time C preprocessor macro named
 ** [limits | SQLITE_MAX_XYZ].
 ** (The "_LIMIT_" in the name is changed to "_MAX_".))^
 ** ^Attempts to increase a limit above its hard upper bound are
@@ -2448,9 +2448,9 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 ** <li>
 ** ^If the value of a [parameter | host parameter] in the WHERE clause might
 ** change the query plan for a statement, then the statement may be
-** automatically recompiled (as if there had been a schema change) on the first 
-** [sqlite3_step()] call following any change to the 
-** [sqlite3_bind_text | bindings] of the [parameter]. 
+** automatically recompiled (as if there had been a schema change) on the first
+** [sqlite3_step()] call following any change to the
+** [sqlite3_bind_text | bindings] of the [parameter].
 ** </li>
 ** </ol>
 */
@@ -2512,7 +2512,7 @@ SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
 ** sqlite3_value object but no mutex is held for an unprotected
 ** sqlite3_value object.  If SQLite is compiled to be single-threaded
 ** (with [SQLITE_THREADSAFE=0] and with [sqlite3_threadsafe()] returning 0)
-** or if SQLite is run in one of reduced mutex modes 
+** or if SQLite is run in one of reduced mutex modes
 ** [SQLITE_CONFIG_SINGLETHREAD] or [SQLITE_CONFIG_MULTITHREAD]
 ** then there is no distinction between protected and unprotected
 ** sqlite3_value objects and they can be used interchangeably.  However,
@@ -3203,7 +3203,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
 ** nArg parameter is a better match than a function implementation with
 ** a negative nArg.  ^A function where the preferred text encoding
 ** matches the database encoding is a better
-** match than a function where the encoding is different.  
+** match than a function where the encoding is different.
 ** ^A function where the encoding difference is between UTF16le and UTF16be
 ** is a closer match than a function where the encoding difference is
 ** between UTF8 and UTF16.
@@ -3211,7 +3211,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
 ** ^Built-in functions may be overloaded by new application-defined functions.
 ** ^The first application-defined function with a given name overrides all
 ** built-in functions in the same [database connection] with the same name.
-** ^Subsequent application-defined functions of the same name only override 
+** ^Subsequent application-defined functions of the same name only override
 ** prior application-defined functions that are an exact match for the
 ** number of parameters and preferred encoding.
 **
@@ -3259,7 +3259,7 @@ SQLITE_API int sqlite3_create_function16(
 ** DEPRECATED
 **
 ** These functions are [deprecated].  In order to maintain
-** backwards compatibility with older code, these functions continue 
+** backwards compatibility with older code, these functions continue
 ** to be supported.  However, new applications should avoid
 ** the use of these functions.  To help encourage people to avoid
 ** using these functions, we are not going to tell you what they do.
@@ -3337,7 +3337,7 @@ SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
 ** Implementions of aggregate SQL functions use this
 ** routine to allocate memory for storing their state.
 **
-** ^The first time the sqlite3_aggregate_context(C,N) routine is called 
+** ^The first time the sqlite3_aggregate_context(C,N) routine is called
 ** for a particular aggregate function, SQLite
 ** allocates N of memory, zeroes out that memory, and returns a pointer
 ** to the new memory. ^On second and subsequent calls to
@@ -3359,7 +3359,7 @@ SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
 ** the same aggregate function instance will not resize the memory
 ** allocation.)^
 **
-** ^SQLite automatically frees the memory allocated by 
+** ^SQLite automatically frees the memory allocated by
 ** sqlite3_aggregate_context() when the aggregate query concludes.
 **
 ** The first parameter must be a copy of the
@@ -3630,24 +3630,24 @@ SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n);
 ** See also:  [sqlite3_collation_needed()] and [sqlite3_collation_needed16()].
 */
 SQLITE_API int sqlite3_create_collation(
-  sqlite3*, 
-  const char *zName, 
-  int eTextRep, 
+  sqlite3*,
+  const char *zName,
+  int eTextRep,
   void*,
   int(*xCompare)(void*,int,const void*,int,const void*)
 );
 SQLITE_API int sqlite3_create_collation_v2(
-  sqlite3*, 
-  const char *zName, 
-  int eTextRep, 
+  sqlite3*,
+  const char *zName,
+  int eTextRep,
   void*,
   int(*xCompare)(void*,int,const void*,int,const void*),
   void(*xDestroy)(void*)
 );
 SQLITE_API int sqlite3_create_collation16(
-  sqlite3*, 
+  sqlite3*,
   const void *zName,
-  int eTextRep, 
+  int eTextRep,
   void*,
   int(*xCompare)(void*,int,const void*,int,const void*)
 );
@@ -3679,12 +3679,12 @@ SQLITE_API int sqlite3_create_collation16(
 ** [sqlite3_create_collation_v2()].
 */
 SQLITE_API int sqlite3_collation_needed(
-  sqlite3*, 
-  void*, 
+  sqlite3*,
+  void*,
   void(*)(void*,sqlite3*,int eTextRep,const char*)
 );
 SQLITE_API int sqlite3_collation_needed16(
-  sqlite3*, 
+  sqlite3*,
   void*,
   void(*)(void*,sqlite3*,int eTextRep,const void*)
 );
@@ -3716,7 +3716,7 @@ SQLITE_API int sqlite3_rekey(
 );
 
 /*
-** Specify the activation key for a SEE database.  Unless 
+** Specify the activation key for a SEE database.  Unless
 ** activated, none of the SEE routines will work.
 */
 SQLITE_API void sqlite3_activate_see(
@@ -3726,7 +3726,7 @@ SQLITE_API void sqlite3_activate_see(
 
 #ifdef SQLITE_ENABLE_CEROD
 /*
-** Specify the activation key for a CEROD database.  Unless 
+** Specify the activation key for a CEROD database.  Unless
 ** activated, none of the CEROD routines will work.
 */
 SQLITE_API void sqlite3_activate_cerod(
@@ -3772,7 +3772,7 @@ SQLITE_API int sqlite3_sleep(int);
 ** ^The [temp_store_directory pragma] may modify this variable and cause
 ** it to point to memory obtained from [sqlite3_malloc].  ^Furthermore,
 ** the [temp_store_directory pragma] always assumes that any string
-** that this variable points to is held in memory obtained from 
+** that this variable points to is held in memory obtained from
 ** [sqlite3_malloc] and the pragma may attempt to free that memory
 ** using [sqlite3_free].
 ** Hence, if this variable is modified directly, either it should be
@@ -3927,7 +3927,7 @@ SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
 ** interfaces.
 */
 SQLITE_API void *sqlite3_update_hook(
-  sqlite3*, 
+  sqlite3*,
   void(*)(void *,int ,char const *,char const *,sqlite3_int64),
   void*
 );
@@ -4182,8 +4182,8 @@ typedef struct sqlite3_module sqlite3_module;
 ** KEYWORDS: sqlite3_module {virtual table module}
 ** EXPERIMENTAL
 **
-** This structure, sometimes called a a "virtual table module", 
-** defines the implementation of a [virtual tables].  
+** This structure, sometimes called a a "virtual table module",
+** defines the implementation of a [virtual tables].
 ** This structure consists mostly of methods for the module.
 **
 ** ^A virtual table module is created by filling in a persistent
@@ -4317,7 +4317,7 @@ struct sqlite3_index_info {
 ** preexisting [virtual table] for the module.
 **
 ** ^The module name is registered on the [database connection] specified
-** by the first parameter.  ^The name of the module is given by the 
+** by the first parameter.  ^The name of the module is given by the
 ** second parameter.  ^The third parameter is a pointer to
 ** the implementation of the [virtual table module].   ^The fourth
 ** parameter is an arbitrary client data pointer that is passed through
@@ -4410,7 +4410,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_declare_vtab(sqlite3*, const char *zS
 ** EXPERIMENTAL
 **
 ** ^(Virtual tables can provide alternative implementations of functions
-** using the [xFindFunction] method of the [virtual table module].  
+** using the [xFindFunction] method of the [virtual table module].
 ** But global versions of those functions
 ** must exist in order to be overloaded.)^
 **
@@ -4463,8 +4463,8 @@ typedef struct sqlite3_blob sqlite3_blob;
 **
 ** ^If the flags parameter is non-zero, then the BLOB is opened for read
 ** and write access. ^If it is zero, the BLOB is opened for read access.
-** ^It is not possible to open a column that is part of an index or primary 
-** key for writing. ^If [foreign key constraints] are enabled, it is 
+** ^It is not possible to open a column that is part of an index or primary
+** key for writing. ^If [foreign key constraints] are enabled, it is
 ** not possible to open a column that is part of a [child key] for writing.
 **
 ** ^Note that the database name is not the filename that contains
@@ -4543,7 +4543,7 @@ SQLITE_API int sqlite3_blob_close(sqlite3_blob *);
 /*
 ** CAPI3REF: Return The Size Of An Open BLOB
 **
-** ^Returns the size in bytes of the BLOB accessible via the 
+** ^Returns the size in bytes of the BLOB accessible via the
 ** successfully opened [BLOB handle] in its only argument.  ^The
 ** incremental blob I/O routines can only read or overwriting existing
 ** blob content; they cannot change the size of a blob.
@@ -4910,7 +4910,7 @@ SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*);
 /*
 ** CAPI3REF: Retrieve the mutex for a database connection
 **
-** ^This interface returns a pointer the [sqlite3_mutex] object that 
+** ^This interface returns a pointer the [sqlite3_mutex] object that
 ** serializes access to the [database connection] given in the argument
 ** when the [threading mode] is Serialized.
 ** ^If the [threading mode] is Single-thread or Multi-thread then this
@@ -5046,12 +5046,12 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pH
 ** <dd>This parameter records the largest memory allocation request
 ** handed to [sqlite3_malloc()] or [sqlite3_realloc()] (or their
 ** internal equivalents).  Only the value returned in the
-** *pHighwater parameter to [sqlite3_status()] is of interest.  
+** *pHighwater parameter to [sqlite3_status()] is of interest.
 ** The value written into the *pCurrent parameter is undefined.</dd>)^
 **
 ** ^(<dt>SQLITE_STATUS_PAGECACHE_USED</dt>
 ** <dd>This parameter returns the number of pages used out of the
-** [pagecache memory allocator] that was configured using 
+** [pagecache memory allocator] that was configured using
 ** [SQLITE_CONFIG_PAGECACHE].  The
 ** value returned is in pages, not in bytes.</dd>)^
 **
@@ -5067,7 +5067,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pH
 ** ^(<dt>SQLITE_STATUS_PAGECACHE_SIZE</dt>
 ** <dd>This parameter records the largest memory allocation request
 ** handed to [pagecache memory allocator].  Only the value returned in the
-** *pHighwater parameter to [sqlite3_status()] is of interest.  
+** *pHighwater parameter to [sqlite3_status()] is of interest.
 ** The value written into the *pCurrent parameter is undefined.</dd>)^
 **
 ** ^(<dt>SQLITE_STATUS_SCRATCH_USED</dt>
@@ -5091,7 +5091,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pH
 ** ^(<dt>SQLITE_STATUS_SCRATCH_SIZE</dt>
 ** <dd>This parameter records the largest memory allocation request
 ** handed to [scratch memory allocator].  Only the value returned in the
-** *pHighwater parameter to [sqlite3_status()] is of interest.  
+** *pHighwater parameter to [sqlite3_status()] is of interest.
 ** The value written into the *pCurrent parameter is undefined.</dd>)^
 **
 ** ^(<dt>SQLITE_STATUS_PARSER_STACK</dt>
@@ -5115,7 +5115,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pH
 ** CAPI3REF: Database Connection Status
 ** EXPERIMENTAL
 **
-** ^This interface is used to retrieve runtime status information 
+** ^This interface is used to retrieve runtime status information
 ** about a single [database connection].  ^The first argument is the
 ** database connection object to be interrogated.  ^The second argument
 ** is the parameter to interrogate.  ^Currently, the only allowed value
@@ -5164,7 +5164,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_db_status(sqlite3*, int op, int *pCur
 ** statements.  For example, if the number of table steps greatly exceeds
 ** the number of table searches or result rows, that would tend to indicate
 ** that the prepared statement is using a full table scan rather than
-** an index.  
+** an index.
 **
 ** ^(This interface is used to retrieve and reset counter values from
 ** a [prepared statement].  The first argument is the prepared statement
@@ -5191,7 +5191,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_stmt_status(sqlite3_stmt*, int op,int
 ** <dt>SQLITE_STMTSTATUS_FULLSCAN_STEP</dt>
 ** <dd>^This is the number of times that SQLite has stepped forward in
 ** a table as part of a full table scan.  Large numbers for this counter
-** may indicate opportunities for performance improvement through 
+** may indicate opportunities for performance improvement through
 ** careful use of indices.</dd>
 **
 ** <dt>SQLITE_STMTSTATUS_SORT</dt>
@@ -5224,14 +5224,14 @@ typedef struct sqlite3_pcache sqlite3_pcache;
 ** EXPERIMENTAL
 **
 ** ^(The [sqlite3_config]([SQLITE_CONFIG_PCACHE], ...) interface can
-** register an alternative page cache implementation by passing in an 
-** instance of the sqlite3_pcache_methods structure.)^ The majority of the 
-** heap memory used by SQLite is used by the page cache to cache data read 
-** from, or ready to be written to, the database file. By implementing a 
-** custom page cache using this API, an application can control more 
-** precisely the amount of memory consumed by SQLite, the way in which 
-** that memory is allocated and released, and the policies used to 
-** determine exactly which parts of a database file are cached and for 
+** register an alternative page cache implementation by passing in an
+** instance of the sqlite3_pcache_methods structure.)^ The majority of the
+** heap memory used by SQLite is used by the page cache to cache data read
+** from, or ready to be written to, the database file. By implementing a
+** custom page cache using this API, an application can control more
+** precisely the amount of memory consumed by SQLite, the way in which
+** that memory is allocated and released, and the policies used to
+** determine exactly which parts of a database file are cached and for
 ** how long.
 **
 ** ^(The contents of the sqlite3_pcache_methods structure are copied to an
@@ -5243,10 +5243,10 @@ typedef struct sqlite3_pcache sqlite3_pcache;
 ** (usually only once during the lifetime of the process). ^(The xInit()
 ** method is passed a copy of the sqlite3_pcache_methods.pArg value.)^
 ** ^The xInit() method can set up up global structures and/or any mutexes
-** required by the custom page cache implementation. 
+** required by the custom page cache implementation.
 **
-** ^The xShutdown() method is called from within [sqlite3_shutdown()], 
-** if the application invokes this API. It can be used to clean up 
+** ^The xShutdown() method is called from within [sqlite3_shutdown()],
+** if the application invokes this API. It can be used to clean up
 ** any outstanding resources before process shutdown, if required.
 **
 ** ^SQLite holds a [SQLITE_MUTEX_RECURSIVE] mutex when it invokes
@@ -5287,11 +5287,11 @@ typedef struct sqlite3_pcache sqlite3_pcache;
 **
 ** ^The xPagecount() method should return the number of pages currently
 ** stored in the cache.
-** 
-** ^The xFetch() method is used to fetch a page and return a pointer to it. 
+**
+** ^The xFetch() method is used to fetch a page and return a pointer to it.
 ** ^A 'page', in this context, is a buffer of szPage bytes aligned at an
 ** 8-byte boundary. ^The page to be fetched is determined by the key. ^The
-** mimimum key value is 1. After it has been retrieved using xFetch, the page 
+** mimimum key value is 1. After it has been retrieved using xFetch, the page
 ** is considered to be "pinned".
 **
 ** ^If the requested page is already in the page cache, then the page cache
@@ -5318,14 +5318,14 @@ typedef struct sqlite3_pcache sqlite3_pcache;
 **
 ** ^xUnpin() is called by SQLite with a pointer to a currently pinned page
 ** as its second argument. ^(If the third parameter, discard, is non-zero,
-** then the page should be evicted from the cache. In this case SQLite 
+** then the page should be evicted from the cache. In this case SQLite
 ** assumes that the next time the page is retrieved from the cache using
 ** the xFetch() method, it will be zeroed.)^ ^If the discard parameter is
 ** zero, then the page is considered to be unpinned. ^The cache implementation
 ** may choose to evict unpinned pages at any time.
 **
-** ^(The cache is not required to perform any reference counting. A single 
-** call to xUnpin() unpins the page regardless of the number of prior calls 
+** ^(The cache is not required to perform any reference counting. A single
+** call to xUnpin() unpins the page regardless of the number of prior calls
 ** to xFetch().)^
 **
 ** ^The xRekey() method is used to change the key value associated with the
@@ -5380,38 +5380,38 @@ typedef struct sqlite3_backup sqlite3_backup;
 **
 ** The backup API copies the content of one database into another.
 ** It is useful either for creating backups of databases or
-** for copying in-memory databases to or from persistent files. 
+** for copying in-memory databases to or from persistent files.
 **
 ** See Also: [Using the SQLite Online Backup API]
 **
-** ^Exclusive access is required to the destination database for the 
+** ^Exclusive access is required to the destination database for the
 ** duration of the operation. ^However the source database is only
 ** read-locked while it is actually being read; it is not locked
 ** continuously for the entire backup operation. ^Thus, the backup may be
 ** performed on a live source database without preventing other users from
 ** reading or writing to the source database while the backup is underway.
-** 
-** ^(To perform a backup operation: 
+**
+** ^(To perform a backup operation:
 **   <ol>
 **     <li><b>sqlite3_backup_init()</b> is called once to initialize the
-**         backup, 
-**     <li><b>sqlite3_backup_step()</b> is called one or more times to transfer 
+**         backup,
+**     <li><b>sqlite3_backup_step()</b> is called one or more times to transfer
 **         the data between the two databases, and finally
-**     <li><b>sqlite3_backup_finish()</b> is called to release all resources 
-**         associated with the backup operation. 
+**     <li><b>sqlite3_backup_finish()</b> is called to release all resources
+**         associated with the backup operation.
 **   </ol>)^
 ** There should be exactly one call to sqlite3_backup_finish() for each
 ** successful call to sqlite3_backup_init().
 **
 ** <b>sqlite3_backup_init()</b>
 **
-** ^The D and N arguments to sqlite3_backup_init(D,N,S,M) are the 
-** [database connection] associated with the destination database 
+** ^The D and N arguments to sqlite3_backup_init(D,N,S,M) are the
+** [database connection] associated with the destination database
 ** and the database name, respectively.
 ** ^The database name is "main" for the main database, "temp" for the
 ** temporary database, or the name specified after the AS keyword in
 ** an [ATTACH] statement for an attached database.
-** ^The S and M arguments passed to 
+** ^The S and M arguments passed to
 ** sqlite3_backup_init(D,N,S,M) identify the [database connection]
 ** and database name of the source database, respectively.
 ** ^The source and destination [database connections] (parameters S and D)
@@ -5427,14 +5427,14 @@ typedef struct sqlite3_backup sqlite3_backup;
 ** ^A successful call to sqlite3_backup_init() returns a pointer to an
 ** [sqlite3_backup] object.
 ** ^The [sqlite3_backup] object may be used with the sqlite3_backup_step() and
-** sqlite3_backup_finish() functions to perform the specified backup 
+** sqlite3_backup_finish() functions to perform the specified backup
 ** operation.
 **
 ** <b>sqlite3_backup_step()</b>
 **
-** ^Function sqlite3_backup_step(B,N) will copy up to N pages between 
+** ^Function sqlite3_backup_step(B,N) will copy up to N pages between
 ** the source and destination databases specified by [sqlite3_backup] object B.
-** ^If N is negative, all remaining source pages are copied. 
+** ^If N is negative, all remaining source pages are copied.
 ** ^If sqlite3_backup_step(B,N) successfully copies N pages and there
 ** are still more pages to be copied, then the function resturns [SQLITE_OK].
 ** ^If sqlite3_backup_step(B,N) successfully finishes copying all pages
@@ -5452,8 +5452,8 @@ typedef struct sqlite3_backup sqlite3_backup;
 **
 ** ^If sqlite3_backup_step() cannot obtain a required file-system lock, then
 ** the [sqlite3_busy_handler | busy-handler function]
-** is invoked (if one is specified). ^If the 
-** busy-handler returns non-zero before the lock is available, then 
+** is invoked (if one is specified). ^If the
+** busy-handler returns non-zero before the lock is available, then
 ** [SQLITE_BUSY] is returned to the caller. ^In this case the call to
 ** sqlite3_backup_step() can be retried later. ^If the source
 ** [database connection]
@@ -5461,15 +5461,15 @@ typedef struct sqlite3_backup sqlite3_backup;
 ** is called, then [SQLITE_LOCKED] is returned immediately. ^Again, in this
 ** case the call to sqlite3_backup_step() can be retried later on. ^(If
 ** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX], [SQLITE_NOMEM], or
-** [SQLITE_READONLY] is returned, then 
-** there is no point in retrying the call to sqlite3_backup_step(). These 
-** errors are considered fatal.)^  The application must accept 
-** that the backup operation has failed and pass the backup operation handle 
+** [SQLITE_READONLY] is returned, then
+** there is no point in retrying the call to sqlite3_backup_step(). These
+** errors are considered fatal.)^  The application must accept
+** that the backup operation has failed and pass the backup operation handle
 ** to the sqlite3_backup_finish() to release associated resources.
 **
 ** ^The first call to sqlite3_backup_step() obtains an exclusive lock
-** on the destination file. ^The exclusive lock is not released until either 
-** sqlite3_backup_finish() is called or the backup operation is complete 
+** on the destination file. ^The exclusive lock is not released until either
+** sqlite3_backup_finish() is called or the backup operation is complete
 ** and sqlite3_backup_step() returns [SQLITE_DONE].  ^Every call to
 ** sqlite3_backup_step() obtains a [shared lock] on the source database that
 ** lasts for the duration of the sqlite3_backup_step() call.
@@ -5478,18 +5478,18 @@ typedef struct sqlite3_backup sqlite3_backup;
 ** through the backup process.  ^If the source database is modified by an
 ** external process or via a database connection other than the one being
 ** used by the backup operation, then the backup will be automatically
-** restarted by the next call to sqlite3_backup_step(). ^If the source 
+** restarted by the next call to sqlite3_backup_step(). ^If the source
 ** database is modified by the using the same database connection as is used
 ** by the backup operation, then the backup database is automatically
 ** updated at the same time.
 **
 ** <b>sqlite3_backup_finish()</b>
 **
-** When sqlite3_backup_step() has returned [SQLITE_DONE], or when the 
+** When sqlite3_backup_step() has returned [SQLITE_DONE], or when the
 ** application wishes to abandon the backup operation, the application
 ** should destroy the [sqlite3_backup] by passing it to sqlite3_backup_finish().
 ** ^The sqlite3_backup_finish() interfaces releases all
-** resources associated with the [sqlite3_backup] object. 
+** resources associated with the [sqlite3_backup] object.
 ** ^If sqlite3_backup_step() has not yet returned [SQLITE_DONE], then any
 ** active write-transaction on the destination database is rolled back.
 ** The [sqlite3_backup] object is invalid
@@ -5528,8 +5528,8 @@ typedef struct sqlite3_backup sqlite3_backup;
 ** connections, then the source database connection may be used concurrently
 ** from within other threads.
 **
-** However, the application must guarantee that the destination 
-** [database connection] is not passed to any other API (by any thread) after 
+** However, the application must guarantee that the destination
+** [database connection] is not passed to any other API (by any thread) after
 ** sqlite3_backup_init() is called and before the corresponding call to
 ** sqlite3_backup_finish().  SQLite does not currently check to see
 ** if the application incorrectly accesses the destination [database connection]
@@ -5540,11 +5540,11 @@ typedef struct sqlite3_backup sqlite3_backup;
 ** If running in [shared cache mode], the application must
 ** guarantee that the shared cache used by the destination database
 ** is not accessed while the backup is running. In practice this means
-** that the application must guarantee that the disk file being 
+** that the application must guarantee that the disk file being
 ** backed up to is not accessed by any connection within the process,
 ** not just the specific connection that was passed to sqlite3_backup_init().
 **
-** The [sqlite3_backup] object itself is partially threadsafe. Multiple 
+** The [sqlite3_backup] object itself is partially threadsafe. Multiple
 ** threads may safely make multiple concurrent calls to sqlite3_backup_step().
 ** However, the sqlite3_backup_remaining() and sqlite3_backup_pagecount()
 ** APIs are not strictly speaking threadsafe. If they are invoked at the
@@ -5569,8 +5569,8 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 ** ^When running in shared-cache mode, a database operation may fail with
 ** an [SQLITE_LOCKED] error if the required locks on the shared-cache or
 ** individual tables within the shared-cache cannot be obtained. See
-** [SQLite Shared-Cache Mode] for a description of shared-cache locking. 
-** ^This API may be used to register a callback that SQLite will invoke 
+** [SQLite Shared-Cache Mode] for a description of shared-cache locking.
+** ^This API may be used to register a callback that SQLite will invoke
 ** when the connection currently holding the required lock relinquishes it.
 ** ^This API is only available if the library was compiled with the
 ** [SQLITE_ENABLE_UNLOCK_NOTIFY] C-preprocessor symbol defined.
@@ -5578,14 +5578,14 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 ** See Also: [Using the SQLite Unlock Notification Feature].
 **
 ** ^Shared-cache locks are released when a database connection concludes
-** its current transaction, either by committing it or rolling it back. 
+** its current transaction, either by committing it or rolling it back.
 **
 ** ^When a connection (known as the blocked connection) fails to obtain a
 ** shared-cache lock and SQLITE_LOCKED is returned to the caller, the
 ** identity of the database connection (the blocking connection) that
-** has locked the required resource is stored internally. ^After an 
+** has locked the required resource is stored internally. ^After an
 ** application receives an SQLITE_LOCKED error, it may call the
-** sqlite3_unlock_notify() method with the blocked connection handle as 
+** sqlite3_unlock_notify() method with the blocked connection handle as
 ** the first argument to register for a callback that will be invoked
 ** when the blocking connections current transaction is concluded. ^The
 ** callback is invoked from within the [sqlite3_step] or [sqlite3_close]
@@ -5599,15 +5599,15 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 **
 ** ^If the blocked connection is attempting to obtain a write-lock on a
 ** shared-cache table, and more than one other connection currently holds
-** a read-lock on the same table, then SQLite arbitrarily selects one of 
+** a read-lock on the same table, then SQLite arbitrarily selects one of
 ** the other connections to use as the blocking connection.
 **
-** ^(There may be at most one unlock-notify callback registered by a 
+** ^(There may be at most one unlock-notify callback registered by a
 ** blocked connection. If sqlite3_unlock_notify() is called when the
 ** blocked connection already has a registered unlock-notify callback,
 ** then the new callback replaces the old.)^ ^If sqlite3_unlock_notify() is
 ** called with a NULL pointer as its second argument, then any existing
-** unlock-notify callback is cancelled. ^The blocked connections 
+** unlock-notify callback is cancelled. ^The blocked connections
 ** unlock-notify callback may also be canceled by closing the blocked
 ** connection using [sqlite3_close()].
 **
@@ -5620,7 +5620,7 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 **
 ** <b>Callback Invocation Details</b>
 **
-** When an unlock-notify callback is registered, the application provides a 
+** When an unlock-notify callback is registered, the application provides a
 ** single void* pointer that is passed to the callback when it is invoked.
 ** However, the signature of the callback function allows SQLite to pass
 ** it an array of void* context pointers. The first argument passed to
@@ -5633,12 +5633,12 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 ** same callback function, then instead of invoking the callback function
 ** multiple times, it is invoked once with the set of void* context pointers
 ** specified by the blocked connections bundled together into an array.
-** This gives the application an opportunity to prioritize any actions 
+** This gives the application an opportunity to prioritize any actions
 ** related to the set of unblocked database connections.
 **
 ** <b>Deadlock Detection</b>
 **
-** Assuming that after registering for an unlock-notify callback a 
+** Assuming that after registering for an unlock-notify callback a
 ** database waits for the callback to be issued before taking any further
 ** action (a reasonable assumption), then using this API may cause the
 ** application to deadlock. For example, if connection X is waiting for
@@ -5661,7 +5661,7 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 **
 ** <b>The "DROP TABLE" Exception</b>
 **
-** When a call to [sqlite3_step()] returns SQLITE_LOCKED, it is almost 
+** When a call to [sqlite3_step()] returns SQLITE_LOCKED, it is almost
 ** always appropriate to call sqlite3_unlock_notify(). There is however,
 ** one exception. When executing a "DROP TABLE" or "DROP INDEX" statement,
 ** SQLite checks if there are any currently executing SELECT statements
@@ -5674,7 +5674,7 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
 ** One way around this problem is to check the extended error code returned
 ** by an sqlite3_step() call. ^(If there is a blocking connection, then the
 ** extended error code is set to SQLITE_LOCKED_SHAREDCACHE. Otherwise, in
-** the special "DROP TABLE/INDEX" case, the extended error code is just 
+** the special "DROP TABLE/INDEX" case, the extended error code is just
 ** SQLITE_LOCKED.)^
 */
 SQLITE_API int sqlite3_unlock_notify(
@@ -5690,7 +5690,7 @@ SQLITE_API int sqlite3_unlock_notify(
 **
 ** ^The [sqlite3_strnicmp()] API allows applications and extensions to
 ** compare the contents of two buffers containing UTF-8 strings in a
-** case-indendent fashion, using the same definition of case independence 
+** case-indendent fashion, using the same definition of case independence
 ** that SQLite uses internally when comparing identifiers.
 */
 SQLITE_API int sqlite3_strnicmp(const char *, const char *, int);
index 0d37bbe01e3ce615b63682b4f26a574ffc57f24e..0475d1124dff3e5929f0a9b3e85b379b0819fa0d 100644 (file)
@@ -12,7 +12,7 @@
 ** This header file defines the SQLite interface for use by
 ** shared libraries that want to be imported as extensions into
 ** an SQLite instance.  Shared libraries that intend to be loaded
-** as extensions by SQLite should #include this file instead of 
+** as extensions by SQLite should #include this file instead of
 ** sqlite3.h.
 */
 #ifndef _SQLITE3EXT_H_
index 503ec75a9f5501e28fdaa4b911e9aecbd9662a1a..e7cab8eef32213d76840e1d997dc9ad917ddd29b 100644 (file)
@@ -61,7 +61,7 @@ _wind_ldap_case_exact_attribute(const uint32_t *tmp,
        return WIND_ERR_OVERRUN;
     while(i < olen && tmp[i] == 0x20) /* skip initial spaces */
        i++;
-       
+
     while (i < olen) {
        if (tmp[i] == 0x20) {
            if (put_char(out, &o, 0x20, *out_len) ||
@@ -72,7 +72,7 @@ _wind_ldap_case_exact_attribute(const uint32_t *tmp,
        } else {
            if (put_char(out, &o, tmp[i++], *out_len))
                return WIND_ERR_OVERRUN;
-       }       
+       }
     }
     assert(o > 0);
 
index 3c68ea866007a174d4eb2e93d48f271c84f30e1d..15274f6855e1c3f7516a5c9b9b6a6d5c75bbda7e 100644 (file)
@@ -130,7 +130,7 @@ compat_decomp(const uint32_t *in, size_t in_len,
        struct translation ts = {in[i]};
        size_t sub_len = *out_len - o;
        int ret;
-       
+
        ret = hangul_decomp(in + i, in_len - i,
                            out + o, &sub_len);
        if (ret) {
index 913747378485addaeaae2f207834ffb80d3c4e5a..6cf5f739212254e9e474b8fec12787d7c4e0155f 100644 (file)
@@ -68,7 +68,7 @@ main(void)
            ++failures;
        }
     }
-       
+
     for (i = 0; i < sizeof(failing_cases)/sizeof(failing_cases[0]); ++i) {
        const struct test *t = &failing_cases[i];
        if (!_wind_stringprep_testbidi(t->vals, t->len, WIND_PROFILE_NAME)) {
index 376fee5a8765ae0f8732c672089b7eb4c6b7f3a3..562c49a0e7649065d51179262655a02484066701 100644 (file)
@@ -103,7 +103,7 @@ main(void)
        olen = sizeof(out)/sizeof(out[0]);
        assert(olen > t->olen);
 
-       ret = wind_stringprep(t->in, t->ilen, out, &olen, 
+       ret = wind_stringprep(t->in, t->ilen, out, &olen,
                              WIND_PROFILE_LDAP_CASE);
 
        if (ret) {
index 93c0cb1dd9c72c063a23a89aa4c0d9d642de567e..77f62f71a817ed9fb6b0fbcdc5ee48f1bc7ffa50 100644 (file)
@@ -127,7 +127,7 @@ main(void)
                    positives[i]);
            ++failures;
        }
-       
+
     for (i = 0; i < sizeof(negatives)/sizeof(negatives[0]); ++i)
        if (_wind_stringprep_error(negatives[i], WIND_PROFILE_NAME)) {
            printf ("code-point 0x%x not marked as non-prohibited\n",
index d16683645ceb51abd16901cfc454ede4cb1b90b4..6907b3c9d3ab7bcd6994252520dd41cfb5e724b5 100644 (file)
@@ -183,7 +183,7 @@ wind_ucs4utf8(const uint32_t *in, size_t in_len, char *out, size_t *out_len)
 
     for (o = 0, i = 0; i < in_len; i++) {
        ch = in[i];
-       
+
        if (ch < 0x80) {
            len = 1;
        } else if (ch < 0x800) {
@@ -194,7 +194,7 @@ wind_ucs4utf8(const uint32_t *in, size_t in_len, char *out, size_t *out_len)
            len = 4;
        } else
            return WIND_ERR_INVALID_UTF32;
-       
+
        o += len;
 
        if (out) {
@@ -341,7 +341,7 @@ wind_ucs2write(const uint16_t *in, size_t in_len, unsigned int *flags,
      * first to the output data */
     if ((*flags) & WIND_RW_BOM) {
        uint16_t bom = 0xfffe;
-       
+
        if (len < 2)
            return WIND_ERR_OVERRUN;
 
@@ -462,14 +462,14 @@ wind_ucs2utf8(const uint16_t *in, size_t in_len, char *out, size_t *out_len)
 
     for (o = 0, i = 0; i < in_len; i++) {
        ch = in[i];
-       
+
        if (ch < 0x80) {
            len = 1;
        } else if (ch < 0x800) {
            len = 2;
        } else
            len = 3;
-       
+
        o += len;
 
        if (out) {
index c410bbf7a814968ca8d3fd6d8f24163e5e292891..fd229e27dbcbe2e54169b67c9f643adaae25874a 100644 (file)
@@ -65,8 +65,8 @@ static krb5_error_code
 client_access(void *ctx,
              krb5_context context,
              krb5_kdc_configuration *config,
-             hdb_entry_ex *client, const char *client_name, 
-             hdb_entry_ex *server, const char *server_name, 
+             hdb_entry_ex *client, const char *client_name,
+             hdb_entry_ex *server, const char *server_name,
              KDC_REQ *req,
              krb5_data *e_data)
 {
index c044c96a61f51eb57615b7a887b2450926bce832..6d004b54c1a1425d3df3ea7d63c25d1e1eb0d7dd 100644 (file)
@@ -1,33 +1,33 @@
 .\" Copyright (c) 2000 - 2001 Kungliga Tekniska Högskolan
-.\" (Royal Institute of Technology, Stockholm, Sweden). 
-.\" All rights reserved. 
+.\" (Royal Institute of Technology, Stockholm, Sweden).
+.\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms, with or without 
-.\" modification, are permitted provided that the following conditions 
-.\" are met: 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
 .\"
-.\" 1. Redistributions of source code must retain the above copyright 
-.\"    notice, this list of conditions and the following disclaimer. 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
 .\"
-.\" 2. Redistributions in binary form must reproduce the above copyright 
-.\"    notice, this list of conditions and the following disclaimer in the 
-.\"    documentation and/or other materials provided with the distribution. 
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" 3. Neither the name of the Institute nor the names of its contributors 
-.\"    may be used to endorse or promote products derived from this software 
-.\"    without specific prior written permission. 
+.\" 3. Neither the name of the Institute nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
-.\" SUCH DAMAGE. 
+.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
 .Dd November 30, 2000
 .Dt KRB5-CONFIG 1