Giter VIP home page Giter VIP logo

xarchiver's People

Contributors

aldatsa avatar bmeurer avatar city-busz avatar colossus73 avatar crayxt avatar cybercop-montana avatar eren avatar glixx avatar hugok79 avatar ib avatar karim88 avatar kassemz avatar kelemeng avatar kelnos avatar m8t avatar majklvi avatar matthaiks avatar maximilian1st avatar pcman avatar piarres avatar pkon avatar ponsfoot avatar qarkai avatar sofar avatar stephanarts avatar thepizzaking avatar unho avatar vistaus avatar welaq avatar zvacet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xarchiver's Issues

Xarchiver crash after adding third folder

I created 3 folders (A, B and C), each one containing 3 empty text files (x1.txt, x2.txt and x3.txt), when I try to create a .7z file Xarchiver crash with the last one.
All the folders and the .7z file are located in the home directory.

peek 17-03-2018 22-33

GLib-CRITICAL **: g_string_insert_len: assertion 'len == 0 || val != NULL' failed

Xarchive 0.5.4.13
Xubuntu 17.10

prefer 7z over unzip

I recently got AES encrypted ZIP archive, and with the xarchiver 0.5.4.10 i got:

skipping: XYZ.pdf  need PK compat. v5.1 (can do v4.6)

The same result i got with unzip, but i have no problem to extract it with 7z. I don't know how it is handled by xarchiver, but i cannot find any configuration option for this. AFAIK unzip is not AES capable...

Add zstd (extention .zst) to the supported compressed formats

The contextual menu for select the specific compression format and the menu for the default compressed format and also the uncompression not support lrzip [1], this format can even produce smaller .zst files than most other formats so so that btrfs will add support to it.
It could be nice for Xarchiver to add this format to the supported ones; also I think this could make xarchiver a real competitor to other compress frontends since aparently not even file-roller support .zst files.

[1] https://github.com/facebook/zstd/

Preferences not persistant if xarchiverrc is absent

If ~/.config/xarchiver/xarchiverrc is missing, defaults are loaded on launch as expected and they are shown in the Preferences dialog. Upon changing some option, pressing OK and restarting the application, I see that the change isn't remembered.

When I do

$ touch ~/.config/xarchiver/xarchiverrc

and change some setting, I see that the changes are remembered on a application restart.

Irrespective of the presence of the config file, changes should be persisted across sessions i.e. if the file is missing, one should be created instead of not saving the preferences.

Here're the details of my installation

xarchiver 0.5.4.13 (binary install through pacman)
Xfce 4.12
Archlinux

allow recompression when compressed file is edited

@ib, many compressors have this interesting feature (and I miss it in xarchiver):

Imagine that you have a compressed file with text files inside. You double-click on one of them. You modify the text. After you save the results in the temporary directory, xarchiver could ask whether you want to update the file.

It is an extremely useful feature.

Many thanks for your work.

Adding keywords to xarchiver's desktop file

Please consider to add keywords to xarchiver's desktop file like

Keywords=GTK;archiver;frontend;compression;zip;bz2;7z;gzip;deb;rpm;arj;lzma;rar;xz;

This will allow modern desktop environments to provide better search results to users.

xmlto dependency

configure script doesn't check for xmlto tool required for building documentation.

Auto-reconfiguration of xarchiver's build system

Please consider to support autoreconf. At the moment xarchiver will fail to build from source if someone tries to recreate the autoconf configuration files. Currently it fails with the following output:

aclocal: warning: couldn't open directory 'm4': No such file or directory
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
configure.ac:38: installing './compile'
configure.ac:30: installing './missing'
Makefile.am: installing './INSTALL'
Makefile.am: error: required file './NEWS' not found
Makefile.am: error: required file './AUTHORS' not found
src/Makefile.am: installing './depcomp'
autoreconf: automake failed with exit status: 1
dh_autoreconf: autoreconf -f -i returned exit code 1

xarchiver-0.5.4.12 preferences ignored

Select, unselect checkbox "Confirm deletion of files" ignored.
In archives tar.* (e.g. *.tar.gz, *.tar.bz2) always deleted *.gz or *.bz2.
Only *.tar remains.

Translations for v0.5.4.13

I'll announce here msgid message strings new to the next version of xarchiver which need to be translated prior to the release.

If you can translate any of them and would like to contribute, just leave a comment with your translation (and language code).

If you would like to complete an existing but incomplete translation, get the respective language file, translate as much as you can and attach the result to a comment here.

Any help is appreciated.

Previous contributors: @micrococo (es), @welaq (lt), @cybercop-montana (bg).

0.5.4.12 hangs when opening an archive

I'm trying to update xarchiver to 0.5.4.12 on OpenBSD, last known working version is 0.5.4.8. In later versions, opening an archive only shows a black window, busy looping on something. Same thing if opening the archive from the started UI, or opening it from the cmdline.

Debugging with gdb shows that xa_process_stdout/xa_process_stderr keep being called even when all the stdout/stderr content has been parsed, so maybe something isnt properly drained somewhere ? Or an error condition is not handled ?

On top of this i'd remove the 3 occurences of

while (gtk_events_pending())
               gtk_main_iteration();

Which seem deeply wrong to me.

Build failure on MacOS: 'endian.h' file not found

Latest release of xarchiver (0.5.4.12) does not build on MacOS; here is the error message:

  CC       xarchiver-window.o
window.c:20:10: fatal error: 'endian.h' file not found
#include <endian.h>
         ^~~~~~~~~~
1 error generated.

Since this header seems to be used only to provide the le32toh function, here is a patch that I could use to successfully build xarchiver:

diff --git a/src/window.c b/src/window.c
index 8c62e80..8a63205 100644
--- a/src/window.c
+++ b/src/window.c
@@ -17,7 +17,6 @@
  */

 #include "config.h"
-#include <endian.h>
 #include <errno.h>
 #include <stdint.h>
 #include <string.h>
@@ -39,6 +38,13 @@
 #include "support.h"
 #include "tar.h"

+#ifdef __APPLE__
+#include <libkern/OSByteOrder.h>
+#define le32toh(x) OSSwapLittleToHostInt32(x)
+#else
+#include <endian.h>
+#endif
+
 #ifdef HAVE_SOCKET
 #include "socket.h"
 #endif

Unar support

Xarchiver currently doesn't work with unar to unpack rar and other file formats but instead uses the proprietary unrar.
Unar 1.10 does support RAR 5.0 archives.

xarchiver: Overwrites existing files without warning

I am hereby forwarding Debian bug #757600.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=757600

This is still reprocubible with 0.5.4.10. Steps to reproduce:

  1. Extract Packages.gz using Xarchiver, creating a file 'Packages' in
    the same directory.
  2. Modify the Packages file to make changes obvious by running
    echo "CHANGED" >> Packages
  3. Run Xarchiver again, click extract files, leave the 'Overwrite
    existing files' option clear, then click the Extract button.
  4. The 'Packages' file is overwritten without warning.

Crash on Archive -> New

When I click on Archive -> New menu item, I always get a crash with the current git master version of xarchiver. It happens with both GTK+ versions. (Probably unrelated to the GTK+ 3 port.)

Here is the backtrace:

#0  0x00007ffff65dd60a in __strcmp_sse2_unaligned () from /usr/lib/libc.so.6
#1  0x000000000041ceef in xa_get_suffix (types=0x70fce0, type=type@entry=0x0) at new_dialog.c:38
#2  0x000000000041d427 in xa_new_archive_dialog (path=path@entry=0x0, archive_open=archive_open@entry=0x63e6e0 <archive>, flag=flag@entry=0)
    at new_dialog.c:177
#3  0x0000000000427a82 in xa_new_archive (menuitem=<optimized out>, user_data=<optimized out>) at window.c:228
#4  0x00007ffff6e2d1d4 in ?? () from /usr/lib/libgobject-2.0.so.0
#5  0x00007ffff6e4790d in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#6  0x00007ffff6e484ab in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#7  0x00007ffff6e2d1d4 in ?? () from /usr/lib/libgobject-2.0.so.0
#8  0x00007ffff6e4790d in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#9  0x00007ffff6e47fff in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#10 0x00007ffff7822ee5 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#11 0x00007ffff6e2cfa5 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#12 0x00007ffff6e3e98b in ?? () from /usr/lib/libgobject-2.0.so.0
#13 0x00007ffff6e47c1c in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#14 0x00007ffff6e47fff in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#15 0x00007ffff7821e29 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#16 0x00007ffff78c891c in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#17 0x00007ffff6e2cfa5 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#18 0x00007ffff6e3f3ad in ?? () from /usr/lib/libgobject-2.0.so.0
#19 0x00007ffff6e476bf in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#20 0x00007ffff6e47fff in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#21 0x00007ffff79e02dc in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#22 0x00007ffff78c70b4 in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#23 0x00007ffff78c746b in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#24 0x00007ffff753c3ac in ?? () from /usr/lib/libgdk-x11-2.0.so.0
#25 0x00007ffff6b57dd7 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#26 0x00007ffff6b58040 in ?? () from /usr/lib/libglib-2.0.so.0
#27 0x00007ffff6b58362 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#28 0x00007ffff78c64e7 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#29 0x000000000040bbdc in main (argc=<optimized out>, argv=<optimized out>) at main.c:330

Add lrzip to the supported compressed files

Actually hte contextual menu for select the specific compression format and the menu for the default compressed format and also the uncompression not support lrzip [1] where even package managers (like pacman [not by default]) support compression as lrzip so it could be nice support this compression option

[1] http://ck.kolivas.org/apps/lrzip/

EDIT: also please update the Changelog file to know what new,

xarchiver 0.5.4.11 fails to build from source

Hi,

I tried the latest release but it fails to build from source. System: Debian GNU/Linux, sid, amd64. The error is

open-with-dlg.c:122:42: error: unknown type name 'GtkObject'

Relevant output below (hopefully)

gcc -DHAVE_CONFIG_H -I. -I.. -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wno-unused-parameter -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -DHTMLDIR="/usr/share/doc/xarchiver" -DLOCALEDIR="/usr/share/locale" -DPIXMAPSDIR="/usr/share/pixmaps/xarchiver" -Wno-deprecated-declarations -g -O2 -fdebug-prefix-map=/build/xarchiver-0.5.4.11=. -fstack-protector-strong -Wformat -Werror=format-security -c -o xarchiver-new_dialog.o test -f 'new_dialog.c' || echo './'new_dialog.c
gcc -DHAVE_CONFIG_H -I. -I.. -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wno-unused-parameter -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -DHTMLDIR="/usr/share/doc/xarchiver" -DLOCALEDIR="/usr/share/locale" -DPIXMAPSDIR="/usr/share/pixmaps/xarchiver" -Wno-deprecated-declarations -g -O2 -fdebug-prefix-map=/build/xarchiver-0.5.4.11=. -fstack-protector-strong -Wformat -Werror=format-security -c -o xarchiver-open-with-dlg.o test -f 'open-with-dlg.c' || echo './'open-with-dlg.c
open-with-dlg.c:122:42: error: unknown type name 'GtkObject'
static void xa_destroy_open_with_dialog (GtkObject *object, Open_with_data *data)
^~~~~~~~~
In file included from /usr/include/glib-2.0/gobject/gobject.h:28:0,
from /usr/include/glib-2.0/gobject/gbinding.h:29,
from /usr/include/glib-2.0/glib-object.h:23,
from /usr/include/glib-2.0/gio/gioenums.h:28,
from /usr/include/glib-2.0/gio/giotypes.h:28,
from /usr/include/glib-2.0/gio/gio.h:26,
from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:28,
from /usr/include/gtk-3.0/gdk/gdk.h:32,
from /usr/include/gtk-3.0/gtk/gtk.h:30,
from open-with-dlg.c:20:
open-with-dlg.c: In function 'xa_create_open_with_dialog':
open-with-dlg.c:460:69: error: 'xa_destroy_open_with_dialog' undeclared (first use in this function)
g_signal_connect (G_OBJECT (data->dialog1), "destroy", G_CALLBACK(xa_destroy_open_with_dialog),data);
^
/usr/include/glib-2.0/gobject/gsignal.h:475:60: note: in definition of macro 'g_signal_connect'
g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
^~~~~~~~~
open-with-dlg.c:460:58: note: in expansion of macro 'G_CALLBACK'
g_signal_connect (G_OBJECT (data->dialog1), "destroy", G_CALLBACK(xa_destroy_open_with_dialog),data);
^~~~~~~~~~
open-with-dlg.c:460:69: note: each undeclared identifier is reported only once for each function it appears in
g_signal_connect (G_OBJECT (data->dialog1), "destroy", G_CALLBACK(xa_destroy_open_with_dialog),data);
^
/usr/include/glib-2.0/gobject/gsignal.h:475:60: note: in definition of macro 'g_signal_connect'
g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
^~~~~~~~~
open-with-dlg.c:460:58: note: in expansion of macro 'G_CALLBACK'
g_signal_connect (G_OBJECT (data->dialog1), "destroy", G_CALLBACK(xa_destroy_open_with_dialog),data);
^~~~~~~~~~
At top level:
open-with-dlg.c:57:13: warning: 'xa_app_free' defined but not used [-Wunused-function]
static void xa_app_free (App *app, gpointer user_data)
^~~~~~~~~~~
Makefile:748: recipe for target 'xarchiver-open-with-dlg.o' failed

update desktop file to remove multipart/x-zip

desktop-file-validate does not like "multipart/x-zip" being included in mimetypes:

# update-desktop-database
Warning in file "/usr/share/applications/xarchiver.desktop": usage of MIME type "multipart/x-zip" is discouraged ("multipart" is a media type that probably does not make sense in this context)

i suggest to remove it

Inflexible extraction behaviour

  • there doesn't seem to be any way to extract a folder inside an archive, dropping its root
  • drag and drop extraction applies "last used" extraction preferences - when (obviously?) it should do the above always

Adding a "View" menu

Could a "View" menu be added to the menubar to quickly access the preferences of the window?
"Show archive location bar"
"Show archive tree sidebar"
"Show toolbar"

imagen

The following options could also be included:
"Cmd-line output"
"Archive comment"

Remove auto-generated content

I suggest to revert commit bb5fce0 as these files are auto-generated, and no need to be tracked in git. Instead of that, if you want to provide configure script for the users, then I recommend make a package for each release with "make dist", create a new release on GitHub, and upload the package. This is the way how other projects do this.

Translations for v0.5.4.12

I'll announce here msgid message strings new to the next version of xarchiver which need to be translated prior to the release.

If you can translate any of them and would like to contribute, just leave a comment with your translation (and language code).

If you would like to complete an existing but incomplete translation, get the respective language file, translate as much as you can and attach the result to a comment here.

Any help is appreciated.

Previous contributors: @micrococo (es), @welaq (lt).

zip file "does not look like a tar archive"

Trying to extract a zip with xarchiver I received an error message:

xarchiver 0.5.4.17

An error occurred while accessing the archive:

/bin/tar: This does not look like a tar archive
/bin/tar: Skipping to next header
/bin/tar: Exiting with failure status due to previous errors

But the zip file extracts correctly with unzip:
unzip crucial-m4-070h-07-00.zip

The Crucial SSD firmware update extracts to:
crucial-m4-070h-07-00.iso

http://www.crucial.com/wcsstore/CrucialSAS/firmware/m4/070H/crucial-m4-070h-07-00.zip

Bill
Santa Cruz CA

crucial-m4-070h-07-00.zip

Hightlight the initially selected item in Preferences

Hi.

When you open the Preferences dialog, there is no option selected in the left side list. In addition, the current options panel displayed is the third one (Advanced), not the first one. I think that the first options panel should be the default selected and the item in the list should be highlighted too.

Greetings.

Xarchiver (gtk2) "hangs" after changing directory following archive update

This happens on xarchiver-gtk2-0.5.4.13-1-x86_64 and didn't happen on xarchiver-gtk2-0.5.4.12-1-x86_64, the issue disappeared after I downgraded back to 0.5.4.12-1.

I open a .jar file in Xarchiver and drag and drop a file into it, overwriting an old file of the same name. Then I press "Up" a few times to navigate into a different subfolder, however what happens is that I cannot access any folder from the main window anymore. I can go back, forward, up and to root, but doubleclick or pressing Enter on a folder in the main window does nothing. If I close the current archive and open it again, I can navigate it as normal until I update it again.

Crash when dnd file to desktop

To fix this issue, add in string_utils.c:

gchar *xa_remove_level_from_path (const gchar *path)
{
    gchar *local_path;
    gchar *_local_path;

    if (!path) return NULL; //prevents crash if path is null
    if (path[strlen(path)-1] == '/')
    {
        _local_path = g_strndup(path,(unsigned)strlen(path)-1);
        local_path = g_path_get_dirname(_local_path);
        g_free(_local_path);
    }
    else
        local_path = g_path_get_dirname(path);
        return local_path;
}

But why is path NULL when dnd to desktop?

Error extracting rpm files with cpio 2.11

Hi.

With cpio 2.11 (default on openSUSE Leap 42.3) Xarchiver fails to extract rpm files. cpio 2.12 is fine (default on openSUSE Tumbleweed). The error message is:

/usr/bin/cpio: invalid option -- 'D'
Try 'cpio --help' or 'cpio --usage' for more information.

Greetings.

Current pending operation is not reported

Say I have to extract a big folder from an archive.
I drag and drop this from inside the thing to thunar window...
*nothing happens*
After awhile the extracted folder finally appears, once finished.
But in the meantime there's no way to realize xarchiver is even doing something (except maybe indirectly checking cpu usage - or repeating the action and being told that's already underway)

Add and extract icons missing

In version 0.5.4.13 the add and extract icons are missing from the interface for me. Only small dots appear, though these are clickable. Occurs in gtk3 and gtk2 versions. Changing icon themes (or icon sizes) does not seem to affect it.

Reverting this commit restores add and extract icons: b19a332

Segfault when click some "Archive tree" entry during the load of a second tarball

Xarchiver crashes if you click any file/folder in "Archive tree" while it's loading a second tarball.
In my case I opened one linux kernel tarball, opened a different linux tarball and while the second is loading I clicked on a folder in the Archive tree menu.

You can see some debug information here: https://gist.github.com/daniloegea/7800ec456a59f8b5ac89e85125973910

I opened two files, linux-4.17.tar.xz and linux-4.16.13.tar.xz. The archive struct has information about both for some reason. Lines 116 and 119.

I'm using FreeBSD.

left-side tree pane should show 'root'

Hi,

Sometimes i do click through subdirectories in xarchiver and get confused about missing files.
I click through every directory in the tree view, and, my files are missing!

Of course... it's not possible to click "root" or "top" in the tree view to get a top-level directory...

Regards
mappu

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.