Compare commits

..

No commits in common. "7cbbfe3de8b8cce37f8546cdb79cedf3f096de9c" and "7a65b31a6cae3970a90bc1093bf9c80f6d1f210d" have entirely different histories.

6 changed files with 31 additions and 31 deletions

4
.hgsigs Normal file
View file

@ -0,0 +1,4 @@
5de7014b0e608e3e95ce8d48125b18d8d8ef3b2c 0 iD8DBQBRSPZ01bsjBDapbeMRAhQLAKCNbDa6gxBJTz2AsyV6A8trw+BrrQCcDUrEWbabfbuYBX3U3cLltIZGsys=
b220dc77493703900627d6cb556728217fe40fe1 0 iD8DBQBT6Qk91bsjBDapbeMRAmXLAKCgAyR+SeXy1q91mAnyv3P0OM6rBwCfaVuVRsGEFd2e7uJiNpUvyIFqm2g=
ceb8bd75e05b98d61db8e37c2778995ecb377dab 0 iD8DBQBUgNz51bsjBDapbeMRAm+UAJ4xM+eF77Lter5brh156c13yObYJACgl6tCkqgGpwCvtC9vv4VR5elzfYo=
ac3c6d1057d5fd99bee1081741ed5247c3a29e80 0 iD8DBQBU91sZ1bsjBDapbeMRAoPWAJ9qrdy8Kn7RuOo2HftFTG2SBXZDgACfSEWBxLYJWGaNY2DI22JC0IF9h2c=

6
.hgtags Normal file
View file

@ -0,0 +1,6 @@
27bbe75233a3da1482fededd7f67215bc716b2d5 v1.0.0
e1728adb2561a87a3ab10e57ae4b3140abf4b5cf v1.1.0
1a480ba231b6ef7714a08151434b7773a1851936 v1.2.0
b3b840a4b56c534501ee930a8ca0b2e08ecb43bb v1.3.0
e8af5aa8bd1541bd7d06f5f08c27d0c16b176df4 v1.4.0
d6a75d14db1261943924f265119c1812736aabd1 v1.5.0

View file

@ -1,10 +1,4 @@
2024-12-29 v1.5.2
* Revert an LCS deletion edge case, allowing final attribute
in a list of changes to be properly removed.
2019-10-13 v1.5.1 2019-10-13 v1.5.1
* Repair SASL authentications, add a 'sasluser' option * Repair SASL authentications, add a 'sasluser' option
@ -72,7 +66,7 @@
2014-06-21 v.1.1.0 2014-06-21 v.1.1.0
* Add CONTRIBUTORS file. * Add CONTRIBUTORS file.
* Add simple (optional) SASL support. * Add simple (optional) SASL support.
* Fix the DN regexp to include dashes. * Fix the DN regexp to include dashes.
@ -91,7 +85,7 @@
2013-04-18 v1.0.1 2013-04-18 v1.0.1
* Fix for edge case Diff::LCS traversals. * Fix for edge case Diff::LCS traversals.
* Ensure re-edit state is cleared in between attempts. * Ensure re-edit state is cleared in between attempts.

View file

@ -1,5 +1,5 @@
Copyright (c) 2006-2024, Mahlon E. Smith <mahlon@martini.nu> Copyright (c) 2006-2019, Mahlon E. Smith <mahlon@martini.nu>
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met: modification, are permitted provided that the following conditions are met:

View file

@ -10,11 +10,11 @@ Witness!
``` ```
% shelldap % shelldap
~ > [ tab ] ~ > [ tab ]
~ > ~ >
cat clear cp delete env grep id ls move passwd read search touch whoami cat clear cp delete env grep id ls move passwd read search touch whoami
cd copy create edit exit help list mkdir mv pwd rm setenv vi cd copy create edit exit help list mkdir mv pwd rm setenv vi
~ > cd ou=People ~ > cd ou=People
ou=People,~ > cat uid=ma[ tab ] ou=People,~ > cat uid=ma[ tab ]
ou=People,~ > cat uid=mahlon ou=People,~ > cat uid=mahlon
@ -44,25 +44,19 @@ uid: mahlon
uidNumber: 20933 uidNumber: 20933
userPassword: * userPassword: *
ou=People,~ > ou=People,~ >
``` ```
Downloads Downloads
--------- ---------
You can download the latest script You can download the latest script [here](http://code.martini.nu/shelldap/archive/tip.zip).
[here](https://code.martini.nu/fossil/shelldap/tarball/tip/shelldap-tip.tar.gz).
It is also available via the It is also available via the
[FreeBSD ports](https://ports.freebsd.org/cgi/ports.cgi?query=shelldap&stype=all&sektion=all) system, [FreeBSD ports](http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/shelldap/) system, OS X via
OS X via [macports](https://trac.macports.org/browser/trunk/dports/net/shelldap/Portfile), [macports](https://trac.macports.org/browser/trunk/dports/net/shelldap/Portfile), Debian/Ubuntu via [apt](https://packages.debian.org/shelldap),
Debian/Ubuntu via [apt](https://packages.debian.org/shelldap), NetBSD's [pkgsrc](ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/sysutils/shelldap/README.html), OpenBSD [ports](http://openports.se/sysutils/shelldap), openSUSE's [build service](http://software.opensuse.org/search?q=shelldap&baseproject=openSUSE%3AFactory&lang=en), and as a Fedora [RPM](https://src.fedoraproject.org/rpms/shelldap).
NetBSD's [pkgsrc](http://cdn.netbsd.org/pub/pkgsrc/current/pkgsrc/sysutils/shelldap/index.html),
OpenBSD [ports](https://openports.pl/path/sysutils/shelldap),
openSUSE's [build service](https://software.opensuse.org/package/shelldap?search_term=shelldap),
Arch's User Repository [AUR](https://aur.archlinux.org/packages/shelldap),
and as a Fedora [RPM](https://src.fedoraproject.org/rpms/shelldap).
Many thanks to the maintainers of these packages. Many thanks to the maintainers of these packages.
@ -76,7 +70,7 @@ Shelldap requires the following perl modules to function properly:
* YAML::Syck * YAML::Syck
* Term::Shell * Term::Shell
* Digest::MD5 * Digest::MD5
* Net::LDAP * Net::LDAP
* Algorithm::Diff * Algorithm::Diff
@ -91,9 +85,9 @@ Development
----------- -----------
You can also check out the source via [Fossil](http://fossil-scm.org/) from the following uri: You can also check out the source via [Mercurial](http://mercurial.selenic.com/wiki/) from the following uri:
% fossil clone https://code.martini.nu/fossil/shelldap % hg clone http://code.martini.nu/shelldap/
or via its [GitHub](https://github.com/) mirror at: or via its [GitHub](https://github.com/) mirror at:
@ -104,4 +98,3 @@ Documentation
------------- -------------
Once installed, Shelldap is fully documented via perldoc, and has a built-in `help` command as well. Once installed, Shelldap is fully documented via perldoc, and has a built-in `help` command as well.

View file

@ -1485,7 +1485,6 @@ sub diff {
# #
if ( $cur_valcount == 1 ) { if ( $cur_valcount == 1 ) {
$e->replace( $attr => $val ); $e->replace( $attr => $val );
$seen_attr{ $attr }++;
} }
else { else {
@ -1510,6 +1509,10 @@ sub diff {
# #
foreach ( $diff->Items(1) ) { foreach ( $diff->Items(1) ) {
my ( $attr, $val ) = $parse->( $_ ) or next; my ( $attr, $val ) = $parse->( $_ ) or next;
my $cur_vals = $e->get_value( $attr, asref => 1 ) || [];
my $cur_valcount = scalar @$cur_vals;
next if $cur_valcount == 1;
next if $seen_attr{ $attr }; next if $seen_attr{ $attr };
$self->debug("DELETE: $_"); $self->debug("DELETE: $_");
$e->delete( $attr => [ $val ] ); $e->delete( $attr => [ $val ] );
@ -2703,7 +2706,7 @@ use warnings;
use Fatal qw/open/; use Fatal qw/open/;
$0 = 'shelldap'; $0 = 'shelldap';
my $VERSION = '1.5.2'; my $VERSION = '1.5.1';
use Getopt::Long qw(:config no_ignore_case); use Getopt::Long qw(:config no_ignore_case);
use YAML::Syck qw//; use YAML::Syck qw//;