[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[PATCH] minimal_client

From: Martin Furter <mf_at_rola.ch>
Date: 2003-09-14 06:53:56 CEST

Hello

Here is a patch to get minimal_client.c to compile.

--------- log message -----------

Changes to minimal_client.c to match the rework of the authentication
provider prompting API in revision 6928.

* tools/examples/minimal_client.c

  my_prompt_callback: removed
  (my_simple_prompt_callback, my_username_prompt_callback): added
  main: changes to match the new API

Index: tools/examples/minimal_client.c
===================================================================
--- tools/examples/minimal_client.c (revision 7045)
+++ tools/examples/minimal_client.c (working copy)
@@ -32,28 +32,67 @@
 #include "svn_config.h"
 
 
-/* A tiny callback function of type 'svn_client_prompt_t'. For a much
- better example, see svn_cl__prompt_user() in the official svn
- cmdline client. */
+/* A tiny callback function of type 'svn_auth_simple_prompt_func_t'. For
+ a much better example, see svn_cl__auth_simple_prompt in the official
+ svn cmdline client. */
 svn_error_t *
-my_prompt_callback (const char **info,
- const char *prompt,
- svn_boolean_t hide,
- void *baton,
- apr_pool_t *pool)
+my_simple_prompt_callback (svn_auth_cred_simple_t **cred,
+ void *baton,
+ const char *realm,
+ const char *username,
+ apr_pool_t *pool)
 {
- char *answer;
+ svn_auth_cred_simple_t *ret = apr_pcalloc (pool, sizeof (*ret));
   char answerbuf[100];
- int len;
 
- printf ("%s: ", prompt);
- answer = fgets (answerbuf, 100, stdin);
+ if (realm)
+ {
+ printf ("Authentication realm: %s\n", realm);
+ }
+ /* ask for username if not allready know it */
+ if (username)
+ ret->username = apr_pstrdup (pool, username);
+ else
+ {
+ printf ("Username: ");
+ fgets (answerbuf, sizeof (answerbuf), stdin);
+ answerbuf[strlen (answerbuf)-1] = 0; /* cuts trailing LF */
+ ret->username = apr_pstrdup (pool, answerbuf);
+ }
+ /* ask for password */
+ printf ("Password: ");
+ fgets (answerbuf, sizeof (answerbuf), stdin);
+ answerbuf[strlen (answerbuf)-1] = 0;
+ ret->password = apr_pstrdup (pool, answerbuf);
 
- len = strlen(answer);
- if (answer[len-1] == '\n')
- answer[len-1] = '\0';
+ *cred = ret;
+ return SVN_NO_ERROR;
+}
 
- *info = apr_pstrdup (pool, answer);
+
+/* A tiny callback function of type 'svn_auth_username_prompt_func_t'. For
+ a much better example, see svn_cl__auth_username_prompt in the official
+ svn cmdline client. */
+svn_error_t *
+my_username_prompt_callback (svn_auth_cred_username_t **cred,
+ void *baton,
+ const char *realm,
+ apr_pool_t *pool)
+{
+ svn_auth_cred_username_t *ret = apr_pcalloc (pool, sizeof (*ret));
+ char answerbuf[100];
+
+ if (realm)
+ {
+ printf ("Authentication realm: %s\n", realm);
+ }
+ /* ask for username if not allready know it */
+ printf ("Username: ");
+ fgets (answerbuf, sizeof (answerbuf), stdin);
+ answerbuf[strlen (answerbuf)-1] = 0;
+ ret->username = apr_pstrdup (pool, answerbuf);
+
+ *cred = ret;
   return SVN_NO_ERROR;
 }
 
@@ -87,7 +126,7 @@
   pool = svn_pool_create (NULL);
 
   /* Make sure the ~/.subversion run-time config files exist */
- err = svn_config_ensure (pool);
+ err = svn_config_ensure (NULL, pool);
   if (err)
     {
       /* For functions deeper in the stack, we usually use the
@@ -99,12 +138,8 @@
 
   /* All clients need to fill out a client_ctx object. */
   {
- /* A function (& context) which can prompt the user for information. */
- ctx.prompt_func = my_prompt_callback;
- ctx.prompt_baton = NULL;
-
     /* Load the run-time config file into a hash */
- if ((err = svn_config_get_config (&(ctx.config), pool)))
+ if ((err = svn_config_get_config (&(ctx.config), NULL, pool)))
       {
         svn_handle_error (err, stderr, 0);
         return EXIT_FAILURE;
@@ -135,12 +170,14 @@
         = apr_array_make (pool, 4, sizeof (svn_auth_provider_object_t *));
 
       svn_client_get_simple_prompt_provider (&provider,
- my_prompt_callback, NULL,
+ my_simple_prompt_callback,
+ NULL, /* baton */
                                              2, /* retry limit */ pool);
       APR_ARRAY_PUSH (providers, svn_auth_provider_object_t *) = provider;
 
       svn_client_get_username_prompt_provider (&provider,
- my_prompt_callback, NULL,
+ my_username_prompt_callback,
+ NULL, /* baton */
                                                2, /* retry limit */ pool);
       APR_ARRAY_PUSH (providers, svn_auth_provider_object_t *) = provider;
 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sun Sep 14 06:55:07 2003

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.