From owner-svn-src-projects@FreeBSD.ORG Mon Mar 4 18:07:36 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 9A6F3272; Mon, 4 Mar 2013 18:07:36 +0000 (UTC) (envelope-from davide@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 7D286B91; Mon, 4 Mar 2013 18:07:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r24I7aTU050504; Mon, 4 Mar 2013 18:07:36 GMT (envelope-from davide@svn.freebsd.org) Received: (from davide@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r24I7SmM050447; Mon, 4 Mar 2013 18:07:28 GMT (envelope-from davide@svn.freebsd.org) Message-Id: <201303041807.r24I7SmM050447@svn.freebsd.org> From: Davide Italiano Date: Mon, 4 Mar 2013 18:07:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r247807 - in projects/calloutng: bin/sh contrib/libyaml lib lib/libyaml sbin/devd share/man/man4 share/man/man7 share/mk sys/arm/arm sys/compat/linprocfs sys/compat/linux sys/dev/ath sy... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Mar 2013 18:07:36 -0000 Author: davide Date: Mon Mar 4 18:07:28 2013 New Revision: 247807 URL: http://svnweb.freebsd.org/changeset/base/247807 Log: Merge from head (and resolve conflicts). Added: projects/calloutng/contrib/libyaml/ - copied from r247806, head/contrib/libyaml/ projects/calloutng/lib/libyaml/ - copied from r247806, head/lib/libyaml/ projects/calloutng/tools/regression/bin/sh/builtins/trap12.0 - copied unchanged from r247806, head/tools/regression/bin/sh/builtins/trap12.0 Modified: projects/calloutng/bin/sh/trap.c projects/calloutng/lib/Makefile projects/calloutng/sbin/devd/devd.cc projects/calloutng/sbin/devd/devd.hh projects/calloutng/share/man/man4/mvs.4 projects/calloutng/share/man/man7/ports.7 projects/calloutng/share/mk/bsd.libnames.mk projects/calloutng/sys/arm/arm/busdma_machdep-v6.c projects/calloutng/sys/compat/linprocfs/linprocfs.c projects/calloutng/sys/compat/linux/linux_file.c projects/calloutng/sys/compat/linux/linux_socket.c projects/calloutng/sys/dev/ath/ath_hal/ah.h projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416.h projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c projects/calloutng/sys/dev/ath/if_athvar.h projects/calloutng/sys/kern/kern_condvar.c projects/calloutng/sys/kern/kern_descrip.c projects/calloutng/sys/kern/kern_event.c projects/calloutng/sys/kern/kern_resource.c projects/calloutng/sys/kern/kern_synch.c projects/calloutng/sys/kern/kern_timeout.c projects/calloutng/sys/kern/subr_log.c projects/calloutng/sys/kern/sys_generic.c projects/calloutng/sys/kern/uipc_usrreq.c projects/calloutng/sys/modules/mqueue/Makefile projects/calloutng/sys/sys/filedesc.h projects/calloutng/sys/vm/vm_object.c projects/calloutng/tools/make_libdeps.sh projects/calloutng/usr.bin/calendar/calendars/calendar.birthday projects/calloutng/usr.bin/find/extern.h projects/calloutng/usr.bin/find/find.1 projects/calloutng/usr.bin/find/function.c projects/calloutng/usr.bin/find/option.c projects/calloutng/usr.bin/hexdump/conv.c projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-bsdlabel.sh projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-disk.sh projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-installpackages.sh projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-mountdisk.sh projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-newfs.sh projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-packages.sh projects/calloutng/usr.sbin/pc-sysinstall/backend/functions.sh projects/calloutng/usr.sbin/pc-sysinstall/conf/pc-sysinstall.conf projects/calloutng/usr.sbin/tzsetup/tzsetup.c Directory Properties: projects/calloutng/ (props changed) projects/calloutng/sbin/ (props changed) projects/calloutng/share/man/man4/ (props changed) projects/calloutng/sys/ (props changed) projects/calloutng/sys/conf/ (props changed) projects/calloutng/usr.bin/calendar/ (props changed) Modified: projects/calloutng/bin/sh/trap.c ============================================================================== --- projects/calloutng/bin/sh/trap.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/bin/sh/trap.c Mon Mar 4 18:07:28 2013 (r247807) @@ -455,7 +455,6 @@ dotrap(void) last_trapsig = i; savestatus = exitstatus; evalstring(trap[i], 0); - exitstatus = savestatus; /* * If such a command was not @@ -464,9 +463,11 @@ dotrap(void) * trap action to have an effect * outside of it. */ - if (prev_evalskip != 0) { + if (evalskip == 0 || + prev_evalskip != 0) { evalskip = prev_evalskip; skipcount = prev_skipcount; + exitstatus = savestatus; } if (i == SIGCHLD) Modified: projects/calloutng/lib/Makefile ============================================================================== --- projects/calloutng/lib/Makefile Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/lib/Makefile Mon Mar 4 18:07:28 2013 (r247807) @@ -119,6 +119,7 @@ SUBDIR= ${SUBDIR_ORDERED} \ ${_libvmmapi} \ libwrap \ liby \ + libyaml \ libz \ ${_atf} \ ${_bind} \ Modified: projects/calloutng/sbin/devd/devd.cc ============================================================================== --- projects/calloutng/sbin/devd/devd.cc Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sbin/devd/devd.cc Mon Mar 4 18:07:28 2013 (r247807) @@ -116,7 +116,7 @@ static struct pidfh *pfh; int Dflag; int dflag; int nflag; -int romeo_must_die = 0; +static volatile sig_atomic_t romeo_must_die = 0; static const char *configfile = CF; @@ -319,7 +319,7 @@ media::do_match(config &c) // the name of interest, first try device-name and fall back // to subsystem if none exists. value = c.get_variable("device-name"); - if (value.length() == 0) + if (value.empty()) value = c.get_variable("subsystem"); if (Dflag) fprintf(stderr, "Testing media type of %s against 0x%x\n", @@ -460,7 +460,7 @@ config::open_pidfile() { pid_t otherpid; - if (_pidfile == "") + if (_pidfile.empty()) return; pfh = pidfile_open(_pidfile.c_str(), 0600, &otherpid); if (pfh == NULL) { @@ -528,7 +528,7 @@ config::add_notify(int prio, event_proc void config::set_pidfile(const char *fn) { - _pidfile = string(fn); + _pidfile = fn; } void @@ -585,7 +585,7 @@ config::expand_one(const char *&src, str src++; // $$ -> $ if (*src == '$') { - dst.append(src++, 1); + dst += *src++; return; } @@ -593,7 +593,7 @@ config::expand_one(const char *&src, str // Not sure if I want to support this or not, so for now we just pass // it through. if (*src == '(') { - dst.append("$"); + dst += '$'; count = 1; /* If the string ends before ) is matched , return. */ while (count > 0 && *src) { @@ -601,23 +601,23 @@ config::expand_one(const char *&src, str count--; else if (*src == '(') count++; - dst.append(src++, 1); + dst += *src++; } return; } - // ${^A-Za-z] -> $\1 + // $[^A-Za-z] -> $\1 if (!isalpha(*src)) { - dst.append("$"); - dst.append(src++, 1); + dst += '$'; + dst += *src++; return; } // $var -> replace with value do { - buffer.append(src++, 1); + buffer += *src++; } while (is_id_char(*src)); - dst.append(get_variable(buffer.c_str())); + dst.append(get_variable(buffer)); } const string @@ -653,7 +653,7 @@ config::expand_string(const char *src, c } bool -config::chop_var(char *&buffer, char *&lhs, char *&rhs) +config::chop_var(char *&buffer, char *&lhs, char *&rhs) const { char *walker; @@ -912,9 +912,7 @@ event_loop(void) server_fd = create_socket(PIPE); accepting = 1; max_fd = max(fd, server_fd) + 1; - while (1) { - if (romeo_must_die) - break; + while (!romeo_must_die) { if (!once && !dflag && !nflag) { // Check to see if we have any events pending. tv.tv_sec = 0; @@ -1076,8 +1074,7 @@ set_variable(const char *var, const char static void gensighand(int) { - romeo_must_die++; - _exit(0); + romeo_must_die = 1; } static void Modified: projects/calloutng/sbin/devd/devd.hh ============================================================================== --- projects/calloutng/sbin/devd/devd.hh Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sbin/devd/devd.hh Mon Mar 4 18:07:28 2013 (r247807) @@ -41,8 +41,6 @@ class config; class var_list { public: - var_list() {} - virtual ~var_list() {} /** Set a variable in this var list. */ void set_variable(const std::string &var, const std::string &val); @@ -68,7 +66,6 @@ private: struct eps { public: - eps() {} virtual ~eps() {} /** Does this eps match the current config? */ @@ -144,7 +141,7 @@ private: class config { public: - config() : _pidfile("") { push_var_table(); } + config() { push_var_table(); } virtual ~config() { reset(); } void add_attach(int, event_proc *); void add_detach(int, event_proc *); @@ -172,7 +169,7 @@ protected: void parse_files_in_dir(const char *dirname); void expand_one(const char *&src, std::string &dst); bool is_id_char(char) const; - bool chop_var(char *&buffer, char *&lhs, char *&rhs); + bool chop_var(char *&buffer, char *&lhs, char *&rhs) const; private: std::vector _dir_list; std::string _pidfile; Modified: projects/calloutng/share/man/man4/mvs.4 ============================================================================== --- projects/calloutng/share/man/man4/mvs.4 Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/share/man/man4/mvs.4 Mon Mar 4 18:07:28 2013 (r247807) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 27, 2010 +.Dd March 3, 2013 .Dt MVS 4 .Os .Sh NAME @@ -62,7 +62,7 @@ command latency. .It Va hint.mvs. Ns Ar X Ns Va .cccc defines number of completed commands for CCC, which trigger interrupt without waiting for specified coalescing timeout. -.It Va hint.mvs. Ns Ar X Ns Va .pm_level +.It Va hint.mvsch. Ns Ar X Ns Va .pm_level controls SATA interface Power Management for the specified channel, allowing some power to be saved at the cost of additional command latency. @@ -82,7 +82,7 @@ driver initiates SLUMBER PM state transi Note that interface Power Management is not compatible with device presence detection. A manual bus reset is needed on device hot-plug. -.It Va hint.mvs. Ns Ar X Ns Va .sata_rev +.It Va hint.mvsch. Ns Ar X Ns Va .sata_rev setting to nonzero value limits maximum SATA revision (speed). Values 1, 2 and 3 are respectively 1.5, 3 and 6Gbps. .El Modified: projects/calloutng/share/man/man7/ports.7 ============================================================================== --- projects/calloutng/share/man/man7/ports.7 Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/share/man/man7/ports.7 Mon Mar 4 18:07:28 2013 (r247807) @@ -490,27 +490,17 @@ single file .Bl -tag -width ".Pa /usr/ports/Mk/bsd.port.mk" -compact .It Pa /usr/ports The default ports directory -.No ( Fx -and -.Ox ) . -.It Pa /usr/pkgsrc -The default ports directory -.Pq Nx . .It Pa /usr/ports/Mk/bsd.port.mk The big Kahuna. .El .Sh SEE ALSO .Xr make 1 , -.Xr pkg_add 1 , -.Xr pkg_create 1 , -.Xr pkg_delete 1 , -.Xr pkg_info 1 , -.Xr pkg_version 1 +.Xr pkg 8 , +.Xr portsnap 8 .Pp The following are part of the ports collection: .Pp .Xr portaudit 1 , -.Xr portcheckout 1 , .Xr portlint 1 .Rs .%B "The FreeBSD Handbook" Modified: projects/calloutng/share/mk/bsd.libnames.mk ============================================================================== --- projects/calloutng/share/mk/bsd.libnames.mk Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/share/mk/bsd.libnames.mk Mon Mar 4 18:07:28 2013 (r247807) @@ -25,6 +25,7 @@ LIBBIND9?= ${DESTDIR}${LIBDIR}/libbind9. .endif LIBBLUETOOTH?= ${DESTDIR}${LIBDIR}/libbluetooth.a LIBBSDXML?= ${DESTDIR}${LIBDIR}/libbsdxml.a +LIBBSDYML?= ${DESTDIR}${LIBDIR}/libbsdyml.a LIBBSM?= ${DESTDIR}${LIBDIR}/libbsm.a LIBBSNMP?= ${DESTDIR}${LIBDIR}/libbsnmp.a LIBBZ2?= ${DESTDIR}${LIBDIR}/libbz2.a Modified: projects/calloutng/sys/arm/arm/busdma_machdep-v6.c ============================================================================== --- projects/calloutng/sys/arm/arm/busdma_machdep-v6.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/arm/arm/busdma_machdep-v6.c Mon Mar 4 18:07:28 2013 (r247807) @@ -1007,6 +1007,9 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dm } else { sl = &map->slist[map->sync_count - 1]; if (map->sync_count == 0 || +#ifdef ARM_L2_PIPT + curaddr != sl->busaddr + sl->datacount || +#endif vaddr != sl->vaddr + sl->datacount) { if (++map->sync_count > dmat->nsegments) goto cleanup; Modified: projects/calloutng/sys/compat/linprocfs/linprocfs.c ============================================================================== --- projects/calloutng/sys/compat/linprocfs/linprocfs.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/compat/linprocfs/linprocfs.c Mon Mar 4 18:07:28 2013 (r247807) @@ -386,8 +386,7 @@ linprocfs_domtab(PFS_FILL_ARGS) sbuf_printf(sb, " 0 0\n"); } mtx_unlock(&mountlist_mtx); - if (flep != NULL) - free(flep, M_TEMP); + free(flep, M_TEMP); return (error); } @@ -447,8 +446,7 @@ linprocfs_dopartitions(PFS_FILL_ARGS) } g_topology_unlock(); - if (flep != NULL) - free(flep, M_TEMP); + free(flep, M_TEMP); return (error); } Modified: projects/calloutng/sys/compat/linux/linux_file.c ============================================================================== --- projects/calloutng/sys/compat/linux/linux_file.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/compat/linux/linux_file.c Mon Mar 4 18:07:28 2013 (r247807) @@ -517,8 +517,7 @@ eof: td->td_retval[0] = nbytes - resid; out: - if (cookies) - free(cookies, M_TEMP); + free(cookies, M_TEMP); VOP_UNLOCK(vp, 0); foffset_unlock(fp, off, 0); Modified: projects/calloutng/sys/compat/linux/linux_socket.c ============================================================================== --- projects/calloutng/sys/compat/linux/linux_socket.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/compat/linux/linux_socket.c Mon Mar 4 18:07:28 2013 (r247807) @@ -1443,10 +1443,8 @@ out: bad: free(iov, M_IOV); - if (control != NULL) - m_freem(control); - if (linux_cmsg != NULL) - free(linux_cmsg, M_TEMP); + m_freem(control); + free(linux_cmsg, M_TEMP); return (error); } Modified: projects/calloutng/sys/dev/ath/ath_hal/ah.h ============================================================================== --- projects/calloutng/sys/dev/ath/ath_hal/ah.h Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/dev/ath/ath_hal/ah.h Mon Mar 4 18:07:28 2013 (r247807) @@ -1527,11 +1527,13 @@ struct ath_hal { struct ath_desc *, u_int); void __ahdecl(*ah_set11nAggrLast)(struct ath_hal *, struct ath_desc *); - void __ahdecl(*ah_clr11nAggr)(struct ath_hal *, struct ath_desc *); void __ahdecl(*ah_set11nBurstDuration)(struct ath_hal *, struct ath_desc *, u_int); + void __ahdecl(*ah_set11nVirtMoreFrag)(struct ath_hal *, + struct ath_desc *, u_int); + HAL_BOOL __ahdecl(*ah_getMibCycleCounts) (struct ath_hal *, HAL_SURVEY_SAMPLE *); Modified: projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416.h ============================================================================== --- projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416.h Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416.h Mon Mar 4 18:07:28 2013 (r247807) @@ -409,8 +409,9 @@ extern void ar5416Set11nAggrFirst(struct u_int aggrLen, u_int numDelims); extern void ar5416Set11nAggrMiddle(struct ath_hal *ah, struct ath_desc *ds, u_int numDelims); extern void ar5416Set11nAggrLast(struct ath_hal *ah, struct ath_desc *ds); - extern void ar5416Clr11nAggr(struct ath_hal *ah, struct ath_desc *ds); +extern void ar5416Set11nVirtualMoreFrag(struct ath_hal *ah, + struct ath_desc *ds, u_int vmf); extern void ar5416Set11nBurstDuration(struct ath_hal *ah, struct ath_desc *ds, u_int burstDuration); Modified: projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c ============================================================================== --- projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c Mon Mar 4 18:07:28 2013 (r247807) @@ -194,6 +194,7 @@ ar5416InitState(struct ath_hal_5416 *ahp ah->ah_set11nMac2040 = ar5416Set11nMac2040; ah->ah_get11nRxClear = ar5416Get11nRxClear; ah->ah_set11nRxClear = ar5416Set11nRxClear; + ah->ah_set11nVirtMoreFrag = ar5416Set11nVirtualMoreFrag; /* Interrupt functions */ ah->ah_isInterruptPending = ar5416IsInterruptPending; Modified: projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c ============================================================================== --- projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c Mon Mar 4 18:07:28 2013 (r247807) @@ -825,6 +825,17 @@ ar5416Clr11nAggr(struct ath_hal *ah, str ads->ds_ctl6 &= ~AR_AggrLen; } +void +ar5416Set11nVirtualMoreFrag(struct ath_hal *ah, struct ath_desc *ds, + u_int vmf) +{ + struct ar5416_desc *ads = AR5416DESC(ds); + if (vmf) + ads->ds_ctl0 |= AR_VirtMoreFrag; + else + ads->ds_ctl0 &= ~AR_VirtMoreFrag; +} + /* * Program the burst duration, with the included BA delta if it's * applicable. Modified: projects/calloutng/sys/dev/ath/if_athvar.h ============================================================================== --- projects/calloutng/sys/dev/ath/if_athvar.h Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/dev/ath/if_athvar.h Mon Mar 4 18:07:28 2013 (r247807) @@ -1297,6 +1297,8 @@ void ath_intr(void *); ((*(_ah)->ah_set11nBurstDuration)((_ah), (_ds), (_dur))) #define ath_hal_clr11n_aggr(_ah, _ds) \ ((*(_ah)->ah_clr11nAggr)((_ah), (_ds))) +#define ath_hal_set11n_virtmorefrag(_ah, _ds, _v) \ + ((*(_ah)->ah_set11nVirtMoreFrag)((_ah), (_ds), (_v))) #define ath_hal_gpioCfgOutput(_ah, _gpio, _type) \ ((*(_ah)->ah_gpioCfgOutput)((_ah), (_gpio), (_type))) Modified: projects/calloutng/sys/kern/kern_condvar.c ============================================================================== --- projects/calloutng/sys/kern/kern_condvar.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/kern/kern_condvar.c Mon Mar 4 18:07:28 2013 (r247807) @@ -270,8 +270,9 @@ _cv_wait_sig(struct cv *cvp, struct lock } /* - * Wait on a condition variable. Returns 0 if the process was resumed by - * cv_signal or cv_broadcast, EWOULDBLOCK if the timeout expires. + * Wait on a condition variable for (at most) the value specified in sbt + * argument. Returns 0 if the process was resumed by cv_signal or cv_broadcast, + * EWOULDBLOCK if the timeout expires. */ int _cv_timedwait_sbt(struct cv *cvp, struct lock_object *lock, sbintime_t sbt, @@ -336,10 +337,11 @@ _cv_timedwait_sbt(struct cv *cvp, struct } /* - * Wait on a condition variable allowing interruption by signals. + * Wait on a condition variable for (at most) the value specified in sbt + * argument, allowing interruption by signals. * Returns 0 if the thread was resumed by cv_signal or cv_broadcast, - * or cv_broadcast, EWOULDBLOCK if the timeout expires, and EINTR - * or ERESTART if a signal was caught. + * EWOULDBLOCK if the timeout expires, and EINTR or ERESTART if a signal + * was caught. */ int _cv_timedwait_sig_sbt(struct cv *cvp, struct lock_object *lock, Modified: projects/calloutng/sys/kern/kern_descrip.c ============================================================================== --- projects/calloutng/sys/kern/kern_descrip.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/kern/kern_descrip.c Mon Mar 4 18:07:28 2013 (r247807) @@ -104,6 +104,7 @@ static MALLOC_DEFINE(M_FILEDESC, "filede static MALLOC_DEFINE(M_FILEDESC_TO_LEADER, "filedesc_to_leader", "file desc to leader structures"); static MALLOC_DEFINE(M_SIGIO, "sigio", "sigio structures"); +MALLOC_DEFINE(M_FILECAPS, "filecaps", "descriptor capabilities"); MALLOC_DECLARE(M_FADVISE); @@ -1389,7 +1390,7 @@ filecaps_copy(const struct filecaps *src ("fc_ioctls != NULL, but fc_nioctls=%hd", src->fc_nioctls)); size = sizeof(src->fc_ioctls[0]) * src->fc_nioctls; - dst->fc_ioctls = malloc(size, M_TEMP, M_WAITOK); + dst->fc_ioctls = malloc(size, M_FILECAPS, M_WAITOK); bcopy(src->fc_ioctls, dst->fc_ioctls, size); } } @@ -1397,7 +1398,7 @@ filecaps_copy(const struct filecaps *src /* * Move filecaps structure to the new place and clear the old place. */ -static void +void filecaps_move(struct filecaps *src, struct filecaps *dst) { @@ -1425,7 +1426,7 @@ void filecaps_free(struct filecaps *fcaps) { - free(fcaps->fc_ioctls, M_TEMP); + free(fcaps->fc_ioctls, M_FILECAPS); bzero(fcaps, sizeof(*fcaps)); } Modified: projects/calloutng/sys/kern/kern_event.c ============================================================================== --- projects/calloutng/sys/kern/kern_event.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/kern/kern_event.c Mon Mar 4 18:07:28 2013 (r247807) @@ -517,7 +517,7 @@ knote_fork(struct knlist *list, int pid) * XXX: EVFILT_TIMER should perhaps live in kern_time.c beside the * interval timer support code. */ -static __inline sbintime_t +static __inline sbintime_t timer2sbintime(intptr_t data) { @@ -1309,10 +1309,9 @@ kqueue_scan(struct kqueue *kq, int maxev const struct timespec *tsp, struct kevent *keva, struct thread *td) { struct kevent *kevp; - sbintime_t asbt, rsbt; struct knote *kn, *marker; - int count, nkev, error, influx; - int haskqglobal, touch; + sbintime_t asbt, rsbt; + int count, error, haskqglobal, influx, nkev, touch; count = maxevents; nkev = 0; Modified: projects/calloutng/sys/kern/kern_resource.c ============================================================================== --- projects/calloutng/sys/kern/kern_resource.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/kern/kern_resource.c Mon Mar 4 18:07:28 2013 (r247807) @@ -1140,7 +1140,7 @@ lim_fork(struct proc *p1, struct proc *p callout_init_mtx(&p2->p_limco, &p2->p_mtx, 0); if (p1->p_cpulimit != RLIM_INFINITY) callout_reset_sbt(&p2->p_limco, SBT_1S, 0, - lim_cb, p2, C_PREL(1) | C_HARDCLOCK); + lim_cb, p2, C_PREL(1)); } void Modified: projects/calloutng/sys/kern/kern_synch.c ============================================================================== --- projects/calloutng/sys/kern/kern_synch.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/kern/kern_synch.c Mon Mar 4 18:07:28 2013 (r247807) @@ -151,7 +151,7 @@ _sleep(void *ident, struct lock_object * struct thread *td; struct proc *p; struct lock_class *class; - int catch, sleepq_flags, lock_state, pri, rval; + int catch, lock_state, pri, rval, sleepq_flags; WITNESS_SAVE_DECL(lock_witness); td = curthread; Modified: projects/calloutng/sys/kern/kern_timeout.c ============================================================================== --- projects/calloutng/sys/kern/kern_timeout.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/kern/kern_timeout.c Mon Mar 4 18:07:28 2013 (r247807) @@ -601,7 +601,7 @@ softclock_call_cc(struct callout *c, str sbintime_t new_time; #endif #if defined(DIAGNOSTIC) || defined(CALLOUT_PROFILING) - sbintime_t bt1, bt2; + sbintime_t sbt1, sbt2; struct timespec ts2; static sbintime_t maxdt = 2 * SBT_1MS; /* 2 msec */ static timeout_t *lastfunc; @@ -655,7 +655,7 @@ softclock_call_cc(struct callout *c, str CTR3(KTR_CALLOUT, "callout %p func %p arg %p", c, c_func, c_arg); } -#ifdef DIAGNOSTIC +#if defined(DIAGNOSTIC) || defined(CALLOUT_PROFILING) sbt1 = sbinuptime(); #endif THREAD_NO_SLEEPING(); @@ -663,17 +663,17 @@ softclock_call_cc(struct callout *c, str c_func(c_arg); SDT_PROBE(callout_execute, kernel, , callout_end, c, 0, 0, 0, 0); THREAD_SLEEPING_OK(); -#ifdef DIAGNOSTIC - bt2 = sbinuptime(); - bt2 -= bt1; - if (bt2 > maxdt) { - if (lastfunc != c_func || bt2 > maxdt * 2) { - ts2 = sbttots(bt2); +#if defined(DIAGNOSTIC) || defined(CALLOUT_PROFILING) + sbt2 = sbinuptime(); + sbt2 -= sbt1; + if (sbt2 > maxdt) { + if (lastfunc != c_func || sbt2 > maxdt * 2) { + ts2 = sbttots(sbt2); printf( "Expensive timeout(9) function: %p(%p) %jd.%09ld s\n", c_func, c_arg, (intmax_t)ts2.tv_sec, ts2.tv_nsec); } - maxdt = bt2; + maxdt = sbt2; lastfunc = c_func; } #endif Modified: projects/calloutng/sys/kern/subr_log.c ============================================================================== --- projects/calloutng/sys/kern/subr_log.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/kern/subr_log.c Mon Mar 4 18:07:28 2013 (r247807) @@ -118,7 +118,7 @@ logopen(struct cdev *dev, int flags, int } log_open = 1; callout_reset_sbt(&logsoftc.sc_callout, - (SBT_1S / log_wakeups_per_second), 0, logtimeout, NULL, C_PREL(1)); + SBT_1S / log_wakeups_per_second, 0, logtimeout, NULL, C_PREL(1)); mtx_unlock(&msgbuf_lock); fsetown(td->td_proc->p_pid, &logsoftc.sc_sigio); /* signal process only */ @@ -247,7 +247,7 @@ done: log_wakeups_per_second = 1; } callout_reset_sbt(&logsoftc.sc_callout, - (SBT_1S / log_wakeups_per_second), 0, logtimeout, NULL, C_PREL(1)); + SBT_1S / log_wakeups_per_second, 0, logtimeout, NULL, C_PREL(1)); } /*ARGSUSED*/ Modified: projects/calloutng/sys/kern/sys_generic.c ============================================================================== --- projects/calloutng/sys/kern/sys_generic.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/kern/sys_generic.c Mon Mar 4 18:07:28 2013 (r247807) @@ -950,10 +950,10 @@ kern_select(struct thread *td, int nd, f */ fd_mask s_selbits[howmany(2048, NFDBITS)]; fd_mask *ibits[3], *obits[3], *selbits, *sbp; - sbintime_t asbt, precision, rsbt; struct timeval rtv; - int error, lf, ndu; + sbintime_t asbt, precision, rsbt; u_int nbufbytes, ncpbytes, ncpubytes, nfdbits; + int error, lf, ndu; if (nd < 0) return (EINVAL); @@ -1274,8 +1274,8 @@ sys_poll(td, uap) struct pollfd *bits; struct pollfd smallbits[32]; sbintime_t asbt, precision, rsbt; - int error; u_int nfds; + int error; size_t ni; nfds = uap->nfds; Modified: projects/calloutng/sys/kern/uipc_usrreq.c ============================================================================== --- projects/calloutng/sys/kern/uipc_usrreq.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/kern/uipc_usrreq.c Mon Mar 4 18:07:28 2013 (r247807) @@ -102,6 +102,8 @@ __FBSDID("$FreeBSD$"); #include +MALLOC_DECLARE(M_FILECAPS); + /* * Locking key: * (l) Locked using list lock @@ -282,7 +284,7 @@ static void unp_drop(struct unpcb *, int static void unp_gc(__unused void *, int); static void unp_scan(struct mbuf *, void (*)(struct file *)); static void unp_discard(struct file *); -static void unp_freerights(struct filedescent *, int); +static void unp_freerights(struct filedescent **, int); static void unp_init(void); static int unp_internalize(struct mbuf **, struct thread *); static void unp_internalize_fp(struct file *); @@ -1679,16 +1681,17 @@ unp_drop(struct unpcb *unp, int errno) } static void -unp_freerights(struct filedescent *fde, int fdcount) +unp_freerights(struct filedescent **fdep, int fdcount) { struct file *fp; int i; - for (i = 0; i < fdcount; i++, fde++) { - fp = fde->fde_file; - bzero(fde, sizeof(*fde)); + for (i = 0; i < fdcount; i++) { + fp = fdep[i]->fde_file; + filecaps_free(&fdep[i]->fde_caps); unp_discard(fp); } + free(fdep[0], M_FILECAPS); } static int @@ -1699,7 +1702,7 @@ unp_externalize(struct mbuf *control, st int i; int *fdp; struct filedesc *fdesc = td->td_proc->p_fd; - struct filedescent *fde, *fdep; + struct filedescent *fde, **fdep; void *data; socklen_t clen = control->m_len, datalen; int error, newfds; @@ -1755,16 +1758,18 @@ unp_externalize(struct mbuf *control, st fdp = (int *) CMSG_DATA(mtod(*controlp, struct cmsghdr *)); - for (i = 0; i < newfds; i++, fdep++, fdp++) { + for (i = 0; i < newfds; i++, fdp++) { if (fdalloc(td, 0, &f)) panic("unp_externalize fdalloc failed"); fde = &fdesc->fd_ofiles[f]; - fde->fde_file = fdep->fde_file; - filecaps_copy(&fdep->fde_caps, &fde->fde_caps); + fde->fde_file = fdep[0]->fde_file; + filecaps_move(&fdep[0]->fde_caps, + &fde->fde_caps); unp_externalize_fp(fde->fde_file); *fdp = f; } FILEDESC_XUNLOCK(fdesc); + free(fdep[0], M_FILECAPS); } else { /* We can just copy anything else across. */ if (error || controlp == NULL) @@ -1839,7 +1844,7 @@ unp_internalize(struct mbuf **controlp, struct bintime *bt; struct cmsghdr *cm = mtod(control, struct cmsghdr *); struct cmsgcred *cmcred; - struct filedescent *fde, *fdep; + struct filedescent *fde, **fdep, *fdev; struct file *fp; struct timeval *tv; int i, fd, *fdp; @@ -1913,7 +1918,7 @@ unp_internalize(struct mbuf **controlp, * Now replace the integer FDs with pointers to the * file structure and capability rights. */ - newlen = oldfds * sizeof(*fdep); + newlen = oldfds * sizeof(fdep[0]); *controlp = sbcreatecontrol(NULL, newlen, SCM_RIGHTS, SOL_SOCKET); if (*controlp == NULL) { @@ -1922,13 +1927,17 @@ unp_internalize(struct mbuf **controlp, goto out; } fdp = data; - fdep = (struct filedescent *) + fdep = (struct filedescent **) CMSG_DATA(mtod(*controlp, struct cmsghdr *)); - for (i = 0; i < oldfds; i++, fdep++, fdp++) { + fdev = malloc(sizeof(*fdev) * oldfds, M_FILECAPS, + M_WAITOK); + for (i = 0; i < oldfds; i++, fdev++, fdp++) { fde = &fdesc->fd_ofiles[*fdp]; - fdep->fde_file = fde->fde_file; - filecaps_copy(&fde->fde_caps, &fdep->fde_caps); - unp_internalize_fp(fdep->fde_file); + fdep[i] = fdev; + fdep[i]->fde_file = fde->fde_file; + filecaps_copy(&fde->fde_caps, + &fdep[i]->fde_caps); + unp_internalize_fp(fdep[i]->fde_file); } FILEDESC_SUNLOCK(fdesc); break; @@ -2290,7 +2299,7 @@ static void unp_scan(struct mbuf *m0, void (*op)(struct file *)) { struct mbuf *m; - struct filedescent *fdep; + struct filedescent **fdep; struct cmsghdr *cm; void *data; int i; @@ -2317,8 +2326,8 @@ unp_scan(struct mbuf *m0, void (*op)(str cm->cmsg_type == SCM_RIGHTS) { qfds = datalen / sizeof(*fdep); fdep = data; - for (i = 0; i < qfds; i++, fdep++) - (*op)(fdep->fde_file); + for (i = 0; i < qfds; i++) + (*op)(fdep[i]->fde_file); } if (CMSG_SPACE(datalen) < clen) { Modified: projects/calloutng/sys/modules/mqueue/Makefile ============================================================================== --- projects/calloutng/sys/modules/mqueue/Makefile Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/modules/mqueue/Makefile Mon Mar 4 18:07:28 2013 (r247807) @@ -5,6 +5,6 @@ KMOD= mqueuefs SRCS= uipc_mqueue.c \ vnode_if.h \ - opt_posix.h opt_compat.h + opt_posix.h opt_compat.h opt_capsicum.h .include Modified: projects/calloutng/sys/sys/filedesc.h ============================================================================== --- projects/calloutng/sys/sys/filedesc.h Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/sys/filedesc.h Mon Mar 4 18:07:28 2013 (r247807) @@ -136,6 +136,7 @@ struct thread; void filecaps_init(struct filecaps *fcaps); void filecaps_copy(const struct filecaps *src, struct filecaps *dst); +void filecaps_move(struct filecaps *src, struct filecaps *dst); void filecaps_free(struct filecaps *fcaps); int closef(struct file *fp, struct thread *td); Modified: projects/calloutng/sys/vm/vm_object.c ============================================================================== --- projects/calloutng/sys/vm/vm_object.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/sys/vm/vm_object.c Mon Mar 4 18:07:28 2013 (r247807) @@ -165,8 +165,9 @@ vm_object_zdtor(void *mem, int size, voi object = (vm_object_t)mem; KASSERT(TAILQ_EMPTY(&object->memq), - ("object %p has resident pages", - object)); + ("object %p has resident pages in its memq", object)); + KASSERT(object->root == NULL, + ("object %p has resident pages in its tree", object)); #if VM_NRESERVLEVEL > 0 KASSERT(LIST_EMPTY(&object->rvq), ("object %p has reservations", @@ -197,9 +198,11 @@ vm_object_zinit(void *mem, int size, int mtx_init(&object->mtx, "vm object", NULL, MTX_DEF | MTX_DUPOK); /* These are true for any object that has been freed */ + object->root = NULL; object->paging_in_progress = 0; object->resident_page_count = 0; object->shadow_count = 0; + object->cache = NULL; return (0); } @@ -210,7 +213,6 @@ _vm_object_allocate(objtype_t type, vm_p TAILQ_INIT(&object->memq); LIST_INIT(&object->shadow_head); - object->root = NULL; object->type = type; switch (type) { case OBJT_DEAD: @@ -247,7 +249,6 @@ _vm_object_allocate(objtype_t type, vm_p #if VM_NRESERVLEVEL > 0 LIST_INIT(&object->rvq); #endif - object->cache = NULL; mtx_lock(&vm_object_list_mtx); TAILQ_INSERT_TAIL(&vm_object_list, object, object_list); Modified: projects/calloutng/tools/make_libdeps.sh ============================================================================== --- projects/calloutng/tools/make_libdeps.sh Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/tools/make_libdeps.sh Mon Mar 4 18:07:28 2013 (r247807) @@ -47,6 +47,7 @@ sed -E -e's; ;! ;g' -e's;$;!;' -e's;-lbsdxml!;lib/libexpat;g' + -e's;-lbsdyml!;lib/libyaml;g' -e's;-lpthread!;lib/libthr;g' -e's;-lm!;lib/msun;g' -e's;-l(ncurses|termcap)!;lib/ncurses/ncurses;g' Copied: projects/calloutng/tools/regression/bin/sh/builtins/trap12.0 (from r247806, head/tools/regression/bin/sh/builtins/trap12.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/calloutng/tools/regression/bin/sh/builtins/trap12.0 Mon Mar 4 18:07:28 2013 (r247807, copy of r247806, head/tools/regression/bin/sh/builtins/trap12.0) @@ -0,0 +1,10 @@ +# $FreeBSD$ + +f() { + trap 'return 42' USR1 + kill -USR1 $$ + return 3 +} +f +r=$? +[ "$r" = 42 ] Modified: projects/calloutng/usr.bin/calendar/calendars/calendar.birthday ============================================================================== --- projects/calloutng/usr.bin/calendar/calendars/calendar.birthday Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/usr.bin/calendar/calendars/calendar.birthday Mon Mar 4 18:07:28 2013 (r247807) @@ -6,6 +6,7 @@ #ifndef _calendar_birthday_ #define _calendar_birthday_ +#undef unix 01/01 J.D. Salinger born, 1919 01/01 Paul Revere born in Boston, 1735 Modified: projects/calloutng/usr.bin/find/extern.h ============================================================================== --- projects/calloutng/usr.bin/find/extern.h Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/usr.bin/find/extern.h Mon Mar 4 18:07:28 2013 (r247807) @@ -73,6 +73,7 @@ creat_f c_regex; creat_f c_samefile; creat_f c_simple; creat_f c_size; +creat_f c_sparse; creat_f c_type; creat_f c_user; creat_f c_xdev; @@ -109,6 +110,7 @@ exec_f f_prune; exec_f f_quit; exec_f f_regex; exec_f f_size; +exec_f f_sparse; exec_f f_type; exec_f f_user; Modified: projects/calloutng/usr.bin/find/find.1 ============================================================================== --- projects/calloutng/usr.bin/find/find.1 Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/usr.bin/find/find.1 Mon Mar 4 18:07:28 2013 (r247807) @@ -816,6 +816,10 @@ terabytes (1024 gigabytes) .It Cm P petabytes (1024 terabytes) .El +.It Ic -sparse +True if the current file is sparse, +i.e. has fewer blocks allocated than expected based on its size in bytes. +This might also match files that have been compressed by the filesystem. .It Ic -type Ar t True if the file is of the specified type. Possible file types are as follows: @@ -997,7 +1001,7 @@ and as well as .Ic -amin , -anewer , -cmin , -cnewer , -delete , -empty , -fstype , .Ic -iname , -inum , -iregex , -ls , -maxdepth , -mindepth , -mmin , -.Ic -path , -print0 , -regex +.Ic -path , -print0 , -regex, -sparse and all of the .Ic -B* birthtime related primaries are extensions to Modified: projects/calloutng/usr.bin/find/function.c ============================================================================== --- projects/calloutng/usr.bin/find/function.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/usr.bin/find/function.c Mon Mar 4 18:07:28 2013 (r247807) @@ -1497,6 +1497,29 @@ c_size(OPTION *option, char ***argvp) } /* + * -sparse functions -- + * + * Check if a file is sparse by finding if it occupies fewer blocks + * than we expect based on its size. + */ +int +f_sparse(PLAN *plan __unused, FTSENT *entry) +{ + off_t expected_blocks; + + expected_blocks = (entry->fts_statp->st_size + 511) / 512; + return entry->fts_statp->st_blocks < expected_blocks; +} + +PLAN * +c_sparse(OPTION *option, char ***argvp __unused) +{ + ftsoptions &= ~FTS_NOSTAT; + + return palloc(option); +} + +/* * -type c functions -- * * True if the type of the file is c, where c is b, c, d, p, f or w Modified: projects/calloutng/usr.bin/find/option.c ============================================================================== --- projects/calloutng/usr.bin/find/option.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/usr.bin/find/option.c Mon Mar 4 18:07:28 2013 (r247807) @@ -145,6 +145,7 @@ static OPTION const options[] = { { "-regex", c_regex, f_regex, 0 }, { "-samefile", c_samefile, f_inum, 0 }, { "-size", c_size, f_size, 0 }, + { "-sparse", c_sparse, f_sparse, 0 }, { "-true", c_simple, f_always_true, 0 }, { "-type", c_type, f_type, 0 }, { "-uid", c_user, f_user, 0 }, Modified: projects/calloutng/usr.bin/hexdump/conv.c ============================================================================== --- projects/calloutng/usr.bin/hexdump/conv.c Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/usr.bin/hexdump/conv.c Mon Mar 4 18:07:28 2013 (r247807) @@ -151,7 +151,7 @@ conv_u(PR *pr, u_char *p) static char const * list[] = { "nul", "soh", "stx", "etx", "eot", "enq", "ack", "bel", "bs", "ht", "lf", "vt", "ff", "cr", "so", "si", - "dle", "dcl", "dc2", "dc3", "dc4", "nak", "syn", "etb", + "dle", "dc1", "dc2", "dc3", "dc4", "nak", "syn", "etb", "can", "em", "sub", "esc", "fs", "gs", "rs", "us", }; Modified: projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-bsdlabel.sh ============================================================================== --- projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-bsdlabel.sh Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-bsdlabel.sh Mon Mar 4 18:07:28 2013 (r247807) @@ -62,7 +62,18 @@ get_fs_line_xvars() echo $ZFSVARS | grep -qE "^(disk|file|mirror|raidz(1|2|3)?|spare|log|cache):" 2>/dev/null if [ $? -eq 0 ] ; then ZTYPE=`echo $ZFSVARS | cut -f1 -d:` - ZFSVARS=`echo $ZFSVARS | sed "s|$ZTYPE: ||g" | sed "s|$ZTYPE:||g"` + tmpVars=`echo $ZFSVARS | sed "s|$ZTYPE: ||g" | sed "s|$ZTYPE:||g"` + ZFSVARS="" + # make sure we have a '/dev' in front of the extra devices + for i in $tmpVars + do + echo $i | grep -q '/dev/' + if [ $? -ne 0 ] ; then + ZFSVARS="$ZFSVARS /dev/${i}" + else + ZFSVARS="$ZFSVARS $i" + fi + done fi # Return the ZFS options Modified: projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-disk.sh ============================================================================== --- projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-disk.sh Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-disk.sh Mon Mar 4 18:07:28 2013 (r247807) @@ -33,6 +33,7 @@ is_disk() for _dsk in `sysctl -n kern.disks` do [ "$_dsk" = "${1}" ] && return 0 + [ "/dev/$_dsk" = "${1}" ] && return 0 done return 1 Modified: projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-installpackages.sh ============================================================================== --- projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-installpackages.sh Mon Mar 4 17:39:17 2013 (r247806) +++ projects/calloutng/usr.sbin/pc-sysinstall/backend/functions-installpackages.sh Mon Mar 4 18:07:28 2013 (r247807) @@ -76,50 +76,113 @@ fetch_package_dependencies() # Check for any packages specified, and begin loading them install_packages() { + echo "Checking for packages to install..." + sleep 2 + # First, lets check and see if we even have any packages to install get_value_from_cfg installPackages - if [ -n "${VAL}" ] - then - HERE=`pwd` - rc_nohalt "mkdir -p ${FSMNT}/${PKGTMPDIR}" - rc_nohalt "cd ${FSMNT}/${PKGTMPDIR}" - if [ ! -f "${CONFDIR}/INDEX" ] + # Nothing to do? + if [ -z "${VAL}" ]; then return; fi + + echo "Installing packages..." + sleep 3 + + local PKGPTH + + HERE=`pwd` + rc_halt "mkdir -p ${FSMNT}${PKGTMPDIR}" + + # Determine the directory we will install packages from + get_package_location + rc_halt "cd ${PKGDLDIR}" + + # Set the location of the INDEXFILE + INDEXFILE="${TMPDIR}/INDEX" + + if [ ! -f "${INDEXFILE}" ]; then + get_package_index + fi + + if [ ! -f "${TMPDIR}/INDEX.parsed" -a "$INSTALLMEDIUM" = "ftp" ]; then + parse_package_index + fi + + # What extension are we using for pkgs? + PKGEXT="txz" + get_value_from_cfg pkgExt + if [ -n "${VAL}" ]; then + strip_white_space ${VAL} + PKGEXT="$VAL" + fi + export PKGEXT + + # We dont want to be bothered with scripts asking questions + PACKAGE_BUILDING=yes *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***